14215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated from ltmain.m4sh. 24215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 35f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# ltmain.sh (GNU libtool) 2.2.6b 44215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 54215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 64215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. 74215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This is free software; see the source for copying conditions. There is NO 84215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 94215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# GNU Libtool is free software; you can redistribute it and/or modify 11893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# it under the terms of the GNU General Public License as published by 12893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# the Free Software Foundation; either version 2 of the License, or 13893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# (at your option) any later version. 14893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# 154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# As a special exception to the GNU General Public License, 164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# if you distribute this file as part of a program or library that 174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is built using GNU Libtool, you may include this file under the 184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# same distribution terms that you use for the rest of that program. 194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# GNU Libtool is distributed in the hope that it will be useful, but 21893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# WITHOUT ANY WARRANTY; without even the implied warranty of 22893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# General Public License for more details. 24893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# 25893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# You should have received a copy of the GNU General Public License 264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# along with GNU Libtool; see the file COPYING. If not, a copy 274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# can be downloaded from http://www.gnu.org/licenses/gpl.html, 284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# or obtained by writing to the Free Software Foundation, Inc., 294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Usage: $progname [OPTION]... [MODE-ARG]... 324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Provide generalized library-building support services. 34893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# 354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# --config show all configuration variables 364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# --debug enable verbose shell tracing 374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# -n, --dry-run display commands without modifying any files 384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# --features display basic configuration information and exit 394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# --mode=MODE use operation mode MODE 404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# --preserve-dup-deps don't remove duplicate dependency libraries 414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# --quiet, --silent don't print informational messages 424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# --tag=TAG use configuration variables from tag TAG 434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# -v, --verbose print informational messages (default) 444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# --version print version information 454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# -h, --help print short or long help message 464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# MODE must be one of the following: 484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# clean remove files from the build directory 504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# compile compile a source file into a libtool object 514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# execute automatically set library path, then run a program 524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# finish complete the installation of libtool libraries 534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# install install libraries or executables 544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# link create a library or an executable 554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# uninstall remove libraries from an installed directory 564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# MODE-ARGS vary depending on the MODE. 584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# When reporting a bug, please describe a test case to reproduce it and 614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include the following information: 624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# host-triplet: $host 644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# shell: $SHELL 654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# compiler: $LTCC 664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# compiler flags: $LTCFLAGS 674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# linker: $LD (gnu? $with_gnu_ld) 685f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# $progname: (GNU libtool) 2.2.6b 694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# automake: $automake_version 704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# autoconf: $autoconf_version 714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Report bugs to <bug-libtool@gnu.org>. 734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectPROGRAM=ltmain.sh 754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectPACKAGE=libtool 765f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottVERSION=2.2.6b 775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottTIMESTAMP="" 785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottpackage_revision=1.3017 794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Be Bourne compatible 814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project emulate sh 834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project NULLCMD=: 844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # is contrary to our usage. Disable this feature. 864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project alias -g '${1+"$@"}'='"$@"' 874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project setopt NO_GLOB_SUBST 884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelse 894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi 914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectBIN_SH=xpg4; export BIN_SH # for Tru64 924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectDUALCASE=1; export DUALCASE # for MKS sh 934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# NLS nuisances: We save the old values to restore during execute mode. 954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Only set LANG and LC_ALL to C if already set. 964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# These must not be set unconditionally because not all systems understand 974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# e.g. LANG=C (notably SCO). 984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_user_locale= 994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_safe_locale= 1004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdo 1024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "if test \"\${$lt_var+set}\" = set; then 1034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_$lt_var=\$$lt_var 1044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $lt_var=C 1054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export $lt_var 1064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 1074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 1084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi" 1094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdone 1104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$lt_unset CDPATH 1124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${CP="cp -f"} 1184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${ECHO="echo"} 1195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott: ${EGREP="/bin/grep -E"} 1205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott: ${FGREP="/bin/grep -F"} 1215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott: ${GREP="/bin/grep"} 1224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${LN_S="ln -s"} 1234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${MAKE="make"} 1244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${MKDIR="mkdir"} 1254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${MV="mv -f"} 1264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${RM="rm -f"} 1275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott: ${SED="/bin/sed"} 1284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 1294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${Xsed="$SED -e 1s/^X//"} 130893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Global variables: 1324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_SUCCESS=0 1334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_FAILURE=1 1344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 1354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 1364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexit_status=$EXIT_SUCCESS 1384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Make sure IFS has a sensible default 1404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_nl=' 1414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project' 1424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIFS=" $lt_nl" 1434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdirname="s,/[^/]*$,," 1454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbasename="s,^.*/,," 1464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_dirname_and_basename file append nondir_replacement 1484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# perform func_basename and func_dirname in a single function 1494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# call: 1504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# dirname: Compute the dirname of FILE. If nonempty, 1514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# add APPEND to the result, otherwise set result 1524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# to NONDIR_REPLACEMENT. 1534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# value returned in "$func_dirname_result" 1544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# basename: Compute filename of FILE. 1554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# value retuned in "$func_basename_result" 1564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Implementation must be kept synchronized with func_dirname 1574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# and func_basename. For efficiency, we do not delegate to 1584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# those functions but instead duplicate the functionality here. 1594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_dirname_and_basename () 1604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 1614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract subdirectory from the argument. 1624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` 1634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$func_dirname_result" = "X${1}"; then 1644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname_result="${3}" 1654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 1664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname_result="$func_dirname_result${2}" 1674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 1684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` 1694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated shell functions inserted here. 172893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 173893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 174893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# is ksh but when the shell is invoked as "sh" and the current value of 175893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# the _XPG environment variable is not equal to 1 (one), the special 176893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# positional parameter $0, within a function call, is the name of the 177893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# function. 178893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectprogpath="$0" 179893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 180893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# The name of this program: 1814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# In the unlikely event $progname began with a '-', it would play havoc with 1824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_echo (imagine progname=-n), so we prepend ./ in that case: 1834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_dirname_and_basename "$progpath" 1844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectprogname=$func_basename_result 1854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcase $progname in 1864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -*) progname=./$progname ;; 1874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectesac 188893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Make sure we have an absolute path for reexecution: 1904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcase $progpath in 1914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]*|[A-Za-z]:\\*) ;; 1924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\\/]*) 1934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progdir=$func_dirname_result 1944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progdir=`cd "$progdir" && pwd` 1954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progpath="$progdir/$progname" 1964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 1984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_IFS="$IFS" 1994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS=: 2004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for progdir in $PATH; do 2014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_IFS" 2024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -x "$progdir/$progname" && break 2034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_IFS" 2054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$progdir" || progdir=`pwd` 2064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progpath="$progdir/$progname" 2074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectesac 209893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Sed substitution that helps us do robust quoting. It backslashifies 2114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# metacharacters that are still active within double-quoted strings. 2124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectXsed="${SED}"' -e 1s/^X//' 2134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 2144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 2154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Same as above, but do not quote variable references. 2164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 2174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 2184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Re-`\' parameter expansions in output of double_quote_subst that were 2194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 2204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# in input to double_quote_subst, that '$' was protected from expansion. 2214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Since each input `\' is now two `\'s, look for any number of runs of 2224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 2234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbs='\\' 2244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbs2='\\\\' 2254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbs4='\\\\\\\\' 2264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdollar='\$' 2274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectsed_double_backslash="\ 2284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/$bs4/&\\ 2294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/g 2304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^$bs2$dollar/$bs&/ 2314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 2324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\n//g" 2334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 2344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Standard options: 2354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_dry_run=false 2364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_help=false 2374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_quiet=false 2384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_verbose=false 2394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_warning=: 2404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 2414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_echo arg... 2424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message, along with the current mode 2434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# name if it has been set yet. 2444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_echo () 2454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 2464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$progname${mode+: }$mode: $*" 2474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 248893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_verbose arg... 2504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message in verbose mode only. 2514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_verbose () 2524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 2534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_verbose && func_echo ${1+"$@"} 254893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A bug in bash halts the script if the last line of a function 2564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # fails when set -e is in force, so we need another command to 2574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # work around that: 2584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 2594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 260893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_error arg... 2624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error. 2634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_error () 2644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 2654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 2664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 267893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_warning arg... 2694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed warning message to standard error. 2704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_warning () 2714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 2724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 273893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # bash bug again: 2754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 2764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 277893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_fatal_error arg... 2794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error, and exit. 2804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_fatal_error () 2814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 2824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error ${1+"$@"} 2834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_FAILURE 2844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 285893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_fatal_help arg... 2874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error, followed by 2884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# a help hint, and exit. 2894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_fatal_help () 2904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 2914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error ${1+"$@"} 2924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "$help" 2934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecthelp="Try \`$progname --help' for more information." ## default 295893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 296893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_grep expression filename 2984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Check whether EXPRESSION matches any line of FILENAME, without output. 2994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_grep () 3004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 3014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP "$1" "$2" >/dev/null 2>&1 3024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mkdir_p directory-path 3064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Make sure the entire path to DIRECTORY-PATH is available. 3074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mkdir_p () 3084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 3094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_directory_path="$1" 3104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_dir_list= 3114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 3134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Protect directory names starting with `-' 3154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $my_directory_path in 3164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -*) my_directory_path="./$my_directory_path" ;; 3174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 3184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # While some portion of DIR does not yet exist... 3204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test ! -d "$my_directory_path"; do 3214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # ...make a list in topmost first order. Use a colon delimited 3224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # list incase some portion of path contains whitespace. 3234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_dir_list="$my_directory_path:$my_dir_list" 3244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the last portion added has no slash in it, the list is done 3264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $my_directory_path in */*) ;; *) break ;; esac 3274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # ...otherwise throw away the child directory and loop 3294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` 3304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 3314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` 3324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_mkdir_p_IFS="$IFS"; IFS=':' 3344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for my_dir in $my_dir_list; do 3354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_mkdir_p_IFS" 3364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # mkdir can fail with a `File exist' error if two processes 3374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # try to create one of the directories concurrently. Don't 3384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # stop in that case! 3394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MKDIR "$my_dir" 2>/dev/null || : 3404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 3414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_mkdir_p_IFS" 3424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Bail out if we (or some other process) failed to create a directory. 3444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -d "$my_directory_path" || \ 3454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "Failed to create \`$1'" 3464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 3474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 348893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 349893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 350893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# func_mktempdir [string] 351893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# Make a temporary directory that won't clash with other running 352893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# libtool processes, and avoids race conditions if possible. If 353893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# given, STRING is the basename for that directory. 354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectfunc_mktempdir () 355893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 356893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project my_template="${TMPDIR-/tmp}/${1-$progname}" 357893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$opt_dry_run" = ":"; then 359893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Return a directory name, but don't create it in dry-run mode 360893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project my_tmpdir="${my_template}-$$" 361893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 362893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 363893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # If mktemp works, use that first and foremost 364893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 365893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 366893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test ! -d "$my_tmpdir"; then 3674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Failing that, at least try and use $RANDOM to avoid a race 3684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_tmpdir="${my_template}-${RANDOM-0}$$" 369893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_mktempdir_umask=`umask` 3714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project umask 0077 3724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MKDIR "$my_tmpdir" 3734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project umask $save_mktempdir_umask 374893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 375893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 376893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # If we're not in dry-run mode, bomb out on failure 3774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -d "$my_tmpdir" || \ 3784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 379893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 380893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "X$my_tmpdir" | $Xsed 382893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 383893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 384893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_quote_for_eval arg 3864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Aesthetically quote ARG to be evaled later. 3874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 3884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is double-quoted, suitable for a subsequent eval, whereas 3894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 3904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# which are still active within double quotes backslashified. 3914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_quote_for_eval () 392893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 3934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $1 in 3944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\\\`\"\$]*) 3954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; 3964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 3974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval_unquoted_result="$1" ;; 3984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 3994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $func_quote_for_eval_unquoted_result in 4014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Double-quote args containing shell metacharacters to delay 4024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # word splitting, command substitution and and variable 4034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # expansion for a subsequent eval. 4044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Many Bourne shells cannot handle close brackets correctly 4054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # in scan sets, so we specify it separately. 4064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 4084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 4104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 411893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 412893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 413893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 414893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_quote_for_expand arg 4164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Aesthetically quote ARG to be evaled later; same as above, 4174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# but do not quote variable references. 4184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_quote_for_expand () 419893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 4204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $1 in 4214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\\\`\"]*) 4224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_arg=`$ECHO "X$1" | $Xsed \ 4234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 424893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 4254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_arg="$1" ;; 4264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 4274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $my_arg in 4294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Double-quote args containing shell metacharacters to delay 4304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # word splitting and command substitution for a subsequent eval. 4314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Many Bourne shells cannot handle close brackets correctly 4324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # in scan sets, so we specify it separately. 4334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 4344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_arg="\"$my_arg\"" 4354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 4374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand_result="$my_arg" 439893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 440893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 441893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_show_eval cmd [fail_exp] 4434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is given, then evaluate it. 4464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_show_eval () 447893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 4484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_cmd="$1" 4494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_fail_exp="${2-:}" 450893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ${opt_silent-false} || { 4524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand "$my_cmd" 4534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "func_echo $func_quote_for_expand_result" 4544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 4554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ${opt_dry_run-false}; then :; else 4574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$my_cmd" 4584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_status=$? 4594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$my_status" -eq 0; then :; else 4604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "(exit $my_status); $my_fail_exp" 4614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 462893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 463893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 464893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_show_eval_locale cmd [fail_exp] 4674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 4684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 4694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is given, then evaluate it. Use the saved locale for evaluation. 4704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_show_eval_locale () 471893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 4724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_cmd="$1" 4734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_fail_exp="${2-:}" 474893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ${opt_silent-false} || { 4764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand "$my_cmd" 4774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "func_echo $func_quote_for_expand_result" 4784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 4794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ${opt_dry_run-false}; then :; else 4814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$lt_user_locale 4824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $my_cmd" 4834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_status=$? 4844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$lt_safe_locale" 4854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$my_status" -eq 0; then :; else 4864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "(exit $my_status); $my_fail_exp" 487893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 4884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 489893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 490893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 491893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 492893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_version 4964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo version message to standard output and exit. 4974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_version () 4984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 4994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { 5004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# // 5014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# *$// 5024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 5034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p 5044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project }' < "$progpath" 5054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $? 5064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 5074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_usage 5094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo short help message to standard output and exit. 5104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_usage () 5114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 5124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -n '/^# Usage:/,/# -h/ { 5134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# // 5144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# *$// 5154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\$progname/'$progname'/ 5164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p 5174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project }' < "$progpath" 5184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 5194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "run \`$progname --help | more' for full usage" 5204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $? 5214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 5224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_help 5244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo long help message to standard output and exit. 5254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_help () 5264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 5274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -n '/^# Usage:/,/# Report bugs to/ { 5284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# // 5294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# *$// 5304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$progname*'$progname'* 5314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$host*'"$host"'* 5324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$SHELL*'"$SHELL"'* 5334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$LTCC*'"$LTCC"'* 5344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$LTCFLAGS*'"$LTCFLAGS"'* 5354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$LD*'"$LD"'* 5364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\$with_gnu_ld/'"$with_gnu_ld"'/ 5374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 5384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 5394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p 5404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project }' < "$progpath" 5414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $? 5424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 5434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_missing_arg argname 5454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error and set global 5464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# exit_cmd. 5474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_missing_arg () 5484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 5494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "missing argument for $1" 5504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit_cmd=exit 5514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 5524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexit_cmd=: 5544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Check that we have a working $ECHO. 5604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test "X$1" = X--no-reexec; then 5614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Discard the --no-reexec flag, and continue. 562893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project shift 5634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelif test "X$1" = X--fallback-echo; then 5644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Avoid inline document here, it may be left over 5654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 5664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then 5674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Yippee, $ECHO works! 5684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 5694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelse 5704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restart under the correct shell, and then maybe $ECHO will work. 5714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec $SHELL "$progpath" --no-reexec ${1+"$@"} 5724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi 573893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test "X$1" = X--fallback-echo; then 5754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # used as fallback echo 5764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 5774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<EOF 5784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$* 5794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 5804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 5814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi 582893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmagic="%%%MAGIC variable%%%" 5844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmagic_exe="%%%MAGIC EXE variable%%%" 585893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Global variables. 5874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# $mode is unset 5884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectnonopt= 5894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexecute_dlfiles= 5904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectpreserve_args= 5914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlo2o="s/\\.lo\$/.${objext}/" 5924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecto2lo="s/\\.${objext}\$/.lo/" 5934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectextracted_archives= 5944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectextracted_serial=0 595893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_dry_run=false 5974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_duplicate_deps=false 5984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_silent=false 5994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_debug=: 600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# If this variable is set in any of the actions, the command in it 6024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# will be execed at the end. This prevents here-documents from being 6034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# left over by shells. 6044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexec_cmd= 605893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_fatal_configuration arg... 6074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error, followed by 6084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# a configuration failure hint, and exit. 6094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_fatal_configuration () 6104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 6114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error ${1+"$@"} 6124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "See the $PACKAGE documentation for more information." 6134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "Fatal configuration error." 6144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 6154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_config 6184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Display the configuration for all the tags in this script. 6194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_config () 6204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 6214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project re_begincf='^# ### BEGIN LIBTOOL' 6224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project re_endcf='^# ### END LIBTOOL' 6234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Default configuration. 6254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 626893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 627893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Now print the configurations for the tags. 628893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for tagname in $taglist; do 6294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 630893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 631893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $? 6334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 634893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_features 6364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Display the features supported by this script. 6374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_features () 6384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 6394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "host: $host" 640893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$build_libtool_libs" = yes; then 6414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "enable shared libraries" 642893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 6434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "disable shared libraries" 644893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 645893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$build_old_libs" = yes; then 6464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "enable static libraries" 647893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 6484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "disable static libraries" 649893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 6504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 651893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $? 6524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 6534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_enable_tag tagname 6554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Verify that TAGNAME is valid, and either flag an error and exit, or 6564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 6574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# variable here. 6584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_enable_tag () 6594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 6604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Global variable: 6614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tagname="$1" 662893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 6644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 6654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project sed_extractcf="/$re_begincf/,/$re_endcf/p" 666893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Validate tagname. 6684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $tagname in 6694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[!-_A-Za-z0-9,/]*) 6704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "invalid tag name: $tagname" 6714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 6724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 673893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't test for the "default" C tag, as we know it's 6754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # there but not specially marked. 6764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $tagname in 6774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project CC) ;; 6784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 6794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 6804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project taglist="$taglist $tagname" 6814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Evaluate the configuration. Be careful to quote the path 6834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # and the sed script, to avoid splitting on whitespace, but 6844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # also don't use non-portable quotes within backquotes within 6854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # quotes we have to do it in 2 steps: 6864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 6874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$extractedcf" 6884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 6894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "ignoring unknown tag $tagname" 6904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 6924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 694893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Parse options once, thoroughly. This comes as soon as possible in 6964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# the script to make things like `libtool --version' happen quickly. 6974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 698893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Shorthand for --mode=foo, only valid as the first argument 7004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $1 in 7014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project clean|clea|cle|cl) 7024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift; set dummy --mode clean ${1+"$@"}; shift 703893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 7044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile|compil|compi|comp|com|co|c) 7054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift; set dummy --mode compile ${1+"$@"}; shift 706893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 7074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project execute|execut|execu|exec|exe|ex|e) 7084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift; set dummy --mode execute ${1+"$@"}; shift 709893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 7104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finish|finis|fini|fin|fi|f) 7114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift; set dummy --mode finish ${1+"$@"}; shift 712893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 7134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install|instal|insta|inst|ins|in|i) 7144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift; set dummy --mode install ${1+"$@"}; shift 7154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 7164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link|lin|li|l) 7174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift; set dummy --mode link ${1+"$@"}; shift 7184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 7194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 7204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift; set dummy --mode uninstall ${1+"$@"}; shift 721893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 722893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 723893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 7244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Parse non-mode specific arguments: 7254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test "$#" -gt 0; do 7264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opt="$1" 7274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 728893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 7294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $opt in 7304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --config) func_config ;; 731893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 7324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --debug) preserve_args="$preserve_args $opt" 7334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_echo "enabling shell trace mode" 7344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opt_debug='set -x' 7354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 7364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 737893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 7384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 7394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project execute_dlfiles="$execute_dlfiles $1" 7404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 7414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 742893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 7434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --dry-run | -n) opt_dry_run=: ;; 7444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --features) func_features ;; 7454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --finish) mode="finish" ;; 7464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 7484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $1 in 7494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Valid mode arguments: 7504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project clean) ;; 7514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile) ;; 7524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project execute) ;; 7534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finish) ;; 7544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install) ;; 7554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link) ;; 7564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink) ;; 7574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project uninstall) ;; 7584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Catch anything else as an error 7604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) func_error "invalid argument for $opt" 7614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit_cmd=exit 7624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 7634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 7644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 7654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project mode="$1" 7674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 7684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 7694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --preserve-dup-deps) 7714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opt_duplicate_deps=: ;; 7724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --quiet|--silent) preserve_args="$preserve_args $opt" 7744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opt_silent=: 7754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 7764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --verbose| -v) preserve_args="$preserve_args $opt" 7784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opt_silent=false 7794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 7804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 7824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project preserve_args="$preserve_args $opt $1" 7834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_enable_tag "$1" # tagname is set here 7844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 7854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 7864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Separate optargs to long options: 7884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlopen=*|--mode=*|--tag=*) 7894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_opt_split "$opt" 7904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 7914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 7924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 7934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -\?|-h) func_usage ;; 7954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --help) opt_help=: ;; 7964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --version) func_version ;; 7974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -*) func_fatal_help "unrecognized option \`$opt'" ;; 7994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) nonopt="$opt" 8014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 8024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 8034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 8044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 8054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 8085f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw* | *pw32* | *cegcc*) 8094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # don't eliminate duplications in $postdeps and $predeps 8104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opt_duplicate_compiler_generated_deps=: 811893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 812893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 8134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 8144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 8154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 816893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Having warned about all mis-specified options, bail out if 8184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # anything was wrong. 8194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $exit_cmd $EXIT_FAILURE 8204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 8214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_check_version_match 8234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Ensure that we are using m4 macros, and libtool script from the same 8244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# release of libtool. 8254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_check_version_match () 8264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 8274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$package_revision" != "$macro_revision"; then 8284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$VERSION" != "$macro_version"; then 8294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$macro_version"; then 8304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat >&2 <<_LT_EOF 8314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: definition of this LT_INIT comes from an older release. 8334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: and run autoconf again. 8354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project_LT_EOF 8364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 8374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat >&2 <<_LT_EOF 8384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 8394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 8404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 8414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: and run autoconf again. 8424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project_LT_EOF 843893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 8454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat >&2 <<_LT_EOF 8464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 8474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: but the definition of this LT_INIT comes from revision $macro_revision. 8484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: You should recreate aclocal.m4 with macros from revision $package_revision 8494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$progname: of $PACKAGE $VERSION and run autoconf again. 8504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project_LT_EOF 8514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_MISMATCH 8544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 8564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project## ----------- ## 8594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project## Main. ## 8604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project## ----------- ## 8614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$opt_help || { 8634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Sanity checks first: 8644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_check_version_match 8654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 8674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_configuration "not configured to build any kind of library" 868893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 869893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$mode" && func_fatal_error "error: you must specify a MODE." 8714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Darwin sucks 8744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval std_shrext=\"$shrext_cmds\" 8754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 877893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Only execute mode is allowed to have -dlopen flags. 878893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -n "$execute_dlfiles" && test "$mode" != execute; then 8794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "unrecognized option \`-dlopen'" 8804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$help" 1>&2 881893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_FAILURE 882893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 883893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 884893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Change the help message to a mode-specific one. 885893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project generic_help="$help" 8864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project help="Try \`$progname --help --mode=$mode' for more information." 8874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 888893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 889893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_lalib_p file 8914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool `.la' library or `.lo' object file. 8924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out 8934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters. 8944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_lalib_p () 8954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 8965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott test -f "$1" && 8975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e 4q "$1" 2>/dev/null \ 8985f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 8994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 900893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_lalib_unsafe_p file 9024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool `.la' library or `.lo' object file. 9034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function implements the same check as func_lalib_p without 9044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# resorting to external programs. To this end, it redirects stdin and 9054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# closes it afterwards, without saving the original file descriptor. 9064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# As a safety measure, use it only where a negative result would be 9074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# fatal anyway. Works if `file' does not exist. 9084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_lalib_unsafe_p () 9094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 9104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lalib_p=no 9115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 9124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lalib_p_l in 1 2 3 4 9134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 9144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project read lalib_p_line 9154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$lalib_p_line" in 9164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 9174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 9184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 9194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec 0<&5 5<&- 9204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 9214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$lalib_p" = yes 9224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 923893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_script_p file 9254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool wrapper script 9264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out 9274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters. 9284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_script_p () 9294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 9304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lalib_p "$1" 9314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 932893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_executable_p file 9344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool wrapper executable 9354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out 9364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters. 9374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_executable_p () 9384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 9394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_exec_suffix= 9404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $1 in 9414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.exe) ;; 9424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) func_ltwrapper_exec_suffix=.exe ;; 9434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 9444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 9454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 946893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_scriptname file 9484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Assumes file is an ltwrapper_executable 9494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# uses $file to determine the appropriate filename for a 9504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# temporary ltwrapper_script. 9514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_scriptname () 9524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 9534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_scriptname_result="" 9544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_executable_p "$1"; then 9554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname_and_basename "$1" "" "." 9564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$func_basename_result" 9574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 9584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 9594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 960893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_p file 9624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool wrapper script or wrapper executable 9634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out 9644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters. 9654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_p () 9664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 9674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 9684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 969893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 970893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_execute_cmds commands fail_cmd 9724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Execute tilde-delimited COMMANDS. 9734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# If FAIL_CMD is given, eval that upon failure. 9744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# FAIL_CMD may read-access the current command in variable CMD! 9754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_execute_cmds () 9764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 9774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 9784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs=$IFS; IFS='~' 9794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for cmd in $1; do 9804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS=$save_ifs 9814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmd=\"$cmd\" 9824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$cmd" "${2-:}" 9834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 9844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS=$save_ifs 9854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 9864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 9874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 9884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_source file 9894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Source FILE, adding directory component if necessary. 9904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Note that it is not necessary on cygwin/mingw to append a dot to 9914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 9924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# behavior happens only for exec(3), not for open(2)! Also, sourcing 9934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# `FILE.' does not work on cygwin managed mounts. 9944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_source () 9954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 9964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 9974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $1 in 9984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project */* | *\\*) . "$1" ;; 9994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) . "./$1" ;; 10004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 10014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 10024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_infer_tag arg 10054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Infer tagged configuration to use if any are available and 10064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# if one wasn't chosen via the "--tag" command line option. 10074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Only attempt this if the compiler in the base compile 10084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# command doesn't match the default compiler. 10094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# arg is usually of the form 'gcc ...' 10104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_infer_tag () 10114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 10124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 10134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$available_tags" && test -z "$tagname"; then 10144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project CC_quoted= 10154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg in $CC; do 10164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 10174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project CC_quoted="$CC_quoted $func_quote_for_eval_result" 10184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 10194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $@ in 10204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Blanks in the command may have been stripped by the calling shell, 10214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # but not from the CC environment variable when configure was run. 10224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; 10234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Blanks at the start of $base_compile will cause this to fail 10244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # if we don't check for them as well. 10254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 10264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for z in $available_tags; do 10274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 10284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Evaluate the configuration. 10294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 10304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project CC_quoted= 10314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg in $CC; do 10324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Double-quote args containing other shell metacharacters. 10334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 10344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project CC_quoted="$CC_quoted $func_quote_for_eval_result" 10354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 10364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$@ " in 10374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) 10384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The compiler in the base compile command matches 10394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the one in the tagged configuration. 10404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Assume this is the tagged configuration we want. 10414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tagname=$z 10424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 1043893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1044893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 10454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 10464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 10474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If $tagname still isn't set, then no tagged configuration 10484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # was found and let the user know that the "--tag" command 10494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # line option must be used. 10504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$tagname"; then 10514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_echo "unable to infer tagged configuration" 10524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "specify a tag with \`--tag'" 10534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# else 10544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_verbose "using $tagname tagged configuration" 10554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 10564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 10574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 10584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 10594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 10604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_write_libtool_object output_name pic_name nonpic_name 10644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Create a libtool object file (analogous to a ".la" file), 10654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# but don't create it if we're doing a dry run. 10664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_write_libtool_object () 10674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 10684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project write_libobj=${1} 10694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes; then 10704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project write_lobj=\'${2}\' 10714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 10724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project write_lobj=none 10734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 10744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = yes; then 10764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project write_oldobj=\'${3}\' 10774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 10784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project write_oldobj=none 10794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 10804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 10824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat >${write_libobj}T <<EOF 10834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# $write_libobj - a libtool object file 10844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 10854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 10864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Please DO NOT delete this file! 10874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# It is necessary for linking the library. 10884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Name of the PIC object. 10904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectpic_object=$write_lobj 10914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Name of the non-PIC object 10934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectnon_pic_object=$write_oldobj 10944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 10964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV "${write_libobj}T" "${write_libobj}" 10974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 10984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 10994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 11004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_compile arg... 11014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_compile () 11024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 11034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 11044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Get the compilation command and the source file. 11054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project base_compile= 11064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project srcfile="$nonopt" # always keep a non-empty value in "srcfile" 11074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project suppress_opt=yes 11084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project suppress_output= 11094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg_mode=normal 11104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj= 11114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project later= 11124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pie_flag= 11134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 11144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg 11154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 11164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg_mode in 11174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg ) 11184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # do not "continue". Instead, add this to base_compile 11194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lastarg="$arg" 11204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg_mode=normal 11214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 11224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 11234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project target ) 11244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj="$arg" 11254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg_mode=normal 11264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 11274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 11284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 11294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project normal ) 11304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Accept any command-line options. 11314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 11324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -o) 11334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$libobj" && \ 11344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "you cannot specify \`-o' more than once" 11354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg_mode=target 11364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 11374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 11384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 11394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -pie | -fpie | -fPIE) 11404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pie_flag="$pie_flag $arg" 11414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 11424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 11434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 11444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared | -static | -prefer-pic | -prefer-non-pic) 11454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project later="$later $arg" 11464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 11474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 11484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 11494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-suppress) 11504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project suppress_opt=no 11514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 11524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 11534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 11544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Xcompiler) 11554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg_mode=arg # the next one goes into the "base_compile" arg list 11564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue # The current "srcfile" will either be retained or 11574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; # replaced later. I would guess that would be a bug. 11584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 11594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Wc,*) 11604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-Wc,' '' "$arg" 11614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project args=$func_stripname_result 11624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lastarg= 11634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS=',' 11644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg in $args; do 11654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 11664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 11674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lastarg="$lastarg $func_quote_for_eval_result" 1168893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 1169893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project IFS="$save_ifs" 11704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname ' ' '' "$lastarg" 11714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lastarg=$func_stripname_result 1172893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1173893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Add the arguments to base_compile. 1174893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project base_compile="$base_compile $lastarg" 1175893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 1176893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1177893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 11784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 1179893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Accept the current argument as the source file. 1180893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # The previous "srcfile" becomes the current argument. 1181893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # 1182893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project lastarg="$srcfile" 1183893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project srcfile="$arg" 1184893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1185893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac # case $arg 1186893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1187893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac # case $arg_mode 1188893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1189893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Aesthetically quote the previous argument. 11904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$lastarg" 11914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project base_compile="$base_compile $func_quote_for_eval_result" 1192893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done # for arg 1193893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1194893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $arg_mode in 1195893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project arg) 11964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "you must specify an argument for -Xcompile" 1197893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1198893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project target) 11994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "you must specify a target with \`-o'" 1200893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1201893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 1202893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Get the name of the library object. 12034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libobj" && { 12044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$srcfile" 12054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj="$func_basename_result" 12064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 1207893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1208893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 1209893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1210893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Recognize several different file suffixes. 1211893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # If the user specifies -o file.o, it is replaced with file.lo 1212893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $libobj in 12134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.[cCFSifmso] | \ 12144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.ada | *.adb | *.ads | *.asm | \ 12154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 12164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.[fF][09]? | *.for | *.java | *.obj | *.sx) 12174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_xform "$libobj" 12184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj=$func_xform_result 12194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1220893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 1221893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1222893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $libobj in 12234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 1224893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 12254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot determine name of library object from \`$libobj'" 1226893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1227893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 1228893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1229893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project func_infer_tag $base_compile 1230893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1231893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for arg in $later; do 1232893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $arg in 12334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared) 12344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_libtool_libs" != yes && \ 12354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_configuration "can not build a shared library" 12364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=no 12374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 12384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 12394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1240893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project -static) 12414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 1242893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project build_old_libs=yes 1243893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 1244893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1245893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1246893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project -prefer-pic) 1247893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project pic_mode=yes 1248893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 1249893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1250893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1251893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project -prefer-non-pic) 1252893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project pic_mode=no 1253893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 1254893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1255893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 1256893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 1257893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 12584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$libobj" 12594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobj" != "X$func_quote_for_eval_result" \ 12604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 12614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && func_warning "libobj name \`$libobj' may not contain shell special characters." 12624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname_and_basename "$obj" "/" "" 12634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objname="$func_basename_result" 12644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xdir="$func_dirname_result" 1265893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project lobj=${xdir}$objdir/$objname 1266893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 12674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$base_compile" && \ 12684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify a compilation command" 1269893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1270893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Delete any leftover library objects. 1271893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$build_old_libs" = yes; then 1272893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project removelist="$obj $lobj $libobj ${libobj}T" 1273893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 1274893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project removelist="$lobj $libobj ${libobj}T" 1275893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1276893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1277893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # On Cygwin there's no "real" PIC flag so we must build both object types 1278893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $host_os in 12795f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cygwin* | mingw* | pw32* | os2* | cegcc*) 1280893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project pic_mode=default 1281893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1282893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 1283893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 1284893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # non-PIC code in shared libraries is not supported 1285893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project pic_mode=default 1286893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1287893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1288893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Calculate the filename of the output object if compiler does 1289893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # not support -o with -c 1290893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$compiler_c_o" = no; then 12914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 1292893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project lockfile="$output_obj.lock" 1293893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 1294893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project output_obj= 1295893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project need_locks=no 1296893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project lockfile= 1297893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1298893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1299893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Lock this critical section if it is needed 1300893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # We use this script file to make the link, it avoids creating a new file 1301893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$need_locks" = yes; then 13024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 13034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_echo "Waiting for $lockfile to be removed" 1304893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project sleep 2 1305893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 1306893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project elif test "$need_locks" = warn; then 1307893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -f "$lockfile"; then 13084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 1309893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project*** ERROR, $lockfile exists and contains: 1310893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project`cat $lockfile 2>/dev/null` 1311893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1312893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectThis indicates that another process is trying to use the same 1313893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttemporary object file, and libtool could not work around it because 1314893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectyour compiler does not support \`-c' and \`-o' together. If you 1315893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectrepeat this compilation, it may succeed, by chance, but you had better 1316893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectavoid parallel builds (make -j) in this platform, or get a better 1317893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectcompiler." 1318893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 13194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $removelist 1320893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_FAILURE 1321893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 13224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project removelist="$removelist $output_obj" 13234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$srcfile" > "$lockfile" 1324893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1325893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 13264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $removelist 13274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project removelist="$removelist $lockfile" 13284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 13294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1330893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -n "$fix_srcfile_path"; then 1331893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project eval srcfile=\"$fix_srcfile_path\" 1332893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 13334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$srcfile" 13344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project qsrcfile=$func_quote_for_eval_result 1335893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1336893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Only build a PIC object if we are building libtool libraries. 1337893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$build_libtool_libs" = yes; then 1338893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Without this assignment, base_compile gets emptied. 1339893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fbsd_hideous_sh_bug=$base_compile 1340893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1341893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$pic_mode" != no; then 1342893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project command="$base_compile $qsrcfile $pic_flag" 1343893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 1344893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Don't build PIC code 1345893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project command="$base_compile $qsrcfile" 1346893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1347893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 13484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mkdir_p "$xdir$objdir" 1349893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1350893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -z "$output_obj"; then 1351893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Place PIC objects in $objdir 1352893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project command="$command -o $lobj" 1353893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 13554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval_locale "$command" \ 13564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 1357893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1358893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$need_locks" = warn && 1359893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 13604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 1361893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project*** ERROR, $lockfile contains: 1362893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project`cat $lockfile 2>/dev/null` 1363893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1364893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectbut it should contain: 1365893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project$srcfile 1366893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1367893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectThis indicates that another process is trying to use the same 1368893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttemporary object file, and libtool could not work around it because 1369893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectyour compiler does not support \`-c' and \`-o' together. If you 1370893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectrepeat this compilation, it may succeed, by chance, but you had better 1371893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectavoid parallel builds (make -j) in this platform, or get a better 1372893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectcompiler." 1373893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 13744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $removelist 1375893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_FAILURE 1376893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1377893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1378893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Just move the object if needed, then go on to compile the next one 1379893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 13804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$MV "$output_obj" "$lobj"' \ 13814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 1382893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1383893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1384893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Allow error messages only from the first compilation. 1385893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$suppress_opt" = yes; then 13864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project suppress_output=' >/dev/null 2>&1' 1387893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1388893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1389893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1390893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Only build a position-dependent object if we build old libraries. 1391893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$build_old_libs" = yes; then 1392893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$pic_mode" != yes; then 1393893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Don't build PIC code 13944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project command="$base_compile $qsrcfile$pie_flag" 1395893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 1396893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project command="$base_compile $qsrcfile $pic_flag" 1397893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1398893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$compiler_c_o" = yes; then 1399893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project command="$command -o $obj" 1400893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1401893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1402893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Suppress compiler output if we already did a PIC compilation. 1403893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project command="$command$suppress_output" 14044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval_locale "$command" \ 14054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1406893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1407893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$need_locks" = warn && 1408893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 14094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 1410893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project*** ERROR, $lockfile contains: 1411893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project`cat $lockfile 2>/dev/null` 1412893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1413893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectbut it should contain: 1414893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project$srcfile 1415893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1416893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectThis indicates that another process is trying to use the same 1417893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttemporary object file, and libtool could not work around it because 1418893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectyour compiler does not support \`-c' and \`-o' together. If you 1419893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectrepeat this compilation, it may succeed, by chance, but you had better 1420893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectavoid parallel builds (make -j) in this platform, or get a better 1421893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectcompiler." 1422893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $removelist 1424893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_FAILURE 1425893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1426893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1427893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Just move the object if needed 1428893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 14294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$MV "$output_obj" "$obj"' \ 14304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 1431893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1432893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1433893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 14354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 1436893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Unlock the critical section if it was locked 14384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$need_locks" != no; then 14394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project removelist=$lockfile 14404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM "$lockfile" 14414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 14424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 1443893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1444893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_SUCCESS 14454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1446893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$opt_help || { 14484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttest "$mode" = compile && func_mode_compile ${1+"$@"} 14494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1450893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_help () 14524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 14534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need to display help for each of the modes. 14544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $mode in 14554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project "") 14564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Generic help is extracted from the usage comments 14574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # at the start of this file. 14584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_help 14594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1460893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project clean) 14624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 14634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 1464893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRemove files from the build directory. 1466893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRM is the name of the program to use to delete files associated with each FILE 14684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 14694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectto RM. 1470893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf FILE is a libtool library, object or program, all the files associated 14724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectwith it are deleted. Otherwise, only FILE itself is deleted using RM." 14734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1474893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile) 14764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 14774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 1478893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectCompile a source file into a libtool library object. 1480893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThis mode accepts the following additional options: 1482893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -o OUTPUT-FILE set the output file name to OUTPUT-FILE 14844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-suppress do not suppress compiler output for multiple passes 14854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -prefer-pic try to building PIC objects only 14864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -prefer-non-pic try to building non-PIC objects only 14874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared do not build a \`.o' file suitable for static linking 14884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static only build a \`.o' file suitable for static linking 1489893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 14914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfrom the given SOURCEFILE. 1492893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe output file name is determined by removing the directory component from 14944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectSOURCEFILE, then substituting the C source code suffix \`.c' with the 14954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlibrary object suffix, \`.lo'." 14964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1497893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 14984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project execute) 14994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 15004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 1501893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectAutomatically set library path, then run a program. 1503893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThis mode accepts the following additional options: 1505893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlopen FILE add the directory containing FILE to the library path 1507893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThis mode sets the library path environment variable according to \`-dlopen' 15094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectflags. 1510893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf any of the ARGS are libtool executable wrappers, then they are translated 15124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectinto their corresponding uninstalled binary, and any of their required library 15134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdirectories are added to the library path. 1514893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThen, COMMAND is executed, with ARGS as arguments." 15164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1517893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finish) 15194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 15204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 1521893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectComplete the installation of libtool libraries. 1523893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEach LIBDIR is a directory that contains libtool libraries. 1525893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe commands that this mode executes may require superuser privileges. Use 15274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectthe \`--dry-run' option if you just want to see what would be executed." 15284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1529893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install) 15314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 15324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 1533893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectInstall executables or libraries. 1535893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectINSTALL-COMMAND is the installation command. The first component should be 15374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecteither the \`install' or \`cp' program. 1538893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe following components of INSTALL-COMMAND are treated specially: 1540893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation 1542893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe rest of the components are interpreted as arguments to that command (only 15444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectBSD-compatible install options are recognized)." 15454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1546893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link) 15484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 15494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 1550893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectLink object files or libraries together to form another library, or to 15524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcreate an executable program. 1553893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectLINK-COMMAND is a command using the C compiler that you would use to create 15554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecta program from several object files. 1556893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe following components of LINK-COMMAND are treated specially: 1558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -all-static do not do any dynamic linking at all 15604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -avoid-version do not add a version suffix if possible 15614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 15624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 15634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 15644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -export-symbols SYMFILE 15654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project try to export only the symbols listed in SYMFILE 15664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -export-symbols-regex REGEX 15674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project try to export only the symbols matching REGEX 15684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -LLIBDIR search LIBDIR for required installed libraries 15694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -lNAME OUTPUT-FILE requires the installed library libNAME 15704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -module build a library that can dlopened 15714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-fast-install disable the fast-install mode 15724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-install link a not-installable executable 15734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-undefined declare that a library does not refer to external symbols 15744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 15754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -objectlist FILE Use a list of object files found in FILE to specify objects 15764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -precious-files-regex REGEX 15774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project don't remove output files matching REGEX 15784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -release RELEASE specify package release information 15794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -rpath LIBDIR the created library will eventually be installed in LIBDIR 15804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 15814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared only do dynamic linking of libtool libraries 15824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shrext SUFFIX override the standard shared library file extension 15834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static do not do any dynamic linking of uninstalled libtool libraries 15844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static-libtool-libs 15854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do not do any dynamic linking of libtool libraries 15864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -version-info CURRENT[:REVISION[:AGE]] 15874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project specify library version info [each variable defaults to 0] 15884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -weak LIBNAME declare that the target provides the LIBNAME interface 1589893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectAll other options (arguments beginning with \`-') are ignored. 1591893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEvery other argument is treated as a filename. Files ending in \`.la' are 15934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttreated as uninstalled libtool libraries, other files are standard or library 15944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectobject files. 1595893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 15964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 15974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectonly library objects (\`.lo' files) may be specified, and \`-rpath' is 15984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrequired, except when creating a convenience library. 1599893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 16014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectusing \`ar' and \`ranlib', or on Windows using \`lib'. 1602893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 16044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectis created, otherwise an executable program is created." 1605893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1606893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project uninstall) 16084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 16094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 1610893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRemove libraries from an installation directory. 1612893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRM is the name of the program to use to delete files associated with each FILE 16144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 16154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectto RM. 1616893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf FILE is a libtool library, all the files associated with it are deleted. 16184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectOtherwise, only FILE itself is deleted using RM." 16194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1620893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 16224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "invalid operation mode \`$mode'" 16234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 16244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 1625893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 16274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "Try \`$progname --help' for more information about other modes." 1628893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $? 16304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1631893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now that we've collected a possible --mode arg, show help if necessary 16334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_help && func_mode_help 1634893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1635893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_execute arg... 16374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_execute () 16384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 16394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 16404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The first argument is the command name. 16414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmd="$nonopt" 16424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$cmd" && \ 16434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify a COMMAND" 1644893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Handle -dlopen flags immediately. 16464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file in $execute_dlfiles; do 16474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -f "$file" \ 16484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project || func_fatal_help "\`$file' is not a file" 1649893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir= 16514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 16524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 16534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that this really is a libtool archive. 16544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lalib_unsafe_p "$file" \ 16554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project || func_fatal_help "\`$lib' is not a valid libtool archive" 1656893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Read the libtool library. 16584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlname= 16594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project library_names= 16604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$file" 1661893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Skip this library if it cannot be dlopened. 16634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$dlname"; then 16644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Warn if it was a shared library. 16654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$library_names" && \ 16664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`$file' was not linked with \`-export-dynamic'" 16674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 16684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 1669893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$file" "" "." 16714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$func_dirname_result" 1672893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$dir/$objdir/$dlname"; then 16744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$dir/$objdir" 16754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 16764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -f "$dir/$dlname"; then 16774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 16784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 16794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 1680893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1681893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) 16834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Just add the directory containing the .lo file. 16844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$file" "" "." 16854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$func_dirname_result" 1686893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1687893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 16894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 1690893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 1691893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 16924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 1693893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Get the absolute pathname. 16954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir=`cd "$dir" && pwd` 16964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$absdir" && dir="$absdir" 1697893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 16984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now add the directory to shlibpath_var. 16994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval "test -z \"\$$shlibpath_var\""; then 17004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$shlibpath_var=\"\$dir\"" 17014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 17024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 17034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 17044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 1705893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This variable tells wrapper scripts just to set shlibpath_var 17074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # rather than running their programs. 17084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libtool_execute_magic="$magic" 1709893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check if any of the arguments is a wrapper script. 17114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project args= 17124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file 17134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 17144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 17154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -*) ;; 17164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 17174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do a test to see if this is really a libtool program. 17184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_script_p "$file"; then 17194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$file" 17204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform arg to wrapped name. 17214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file="$progdir/$program" 17224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif func_ltwrapper_executable_p "$file"; then 17234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_scriptname "$file" 17244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$func_ltwrapper_scriptname_result" 17254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform arg to wrapped name. 17264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file="$progdir/$program" 17274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 17284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 17294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 17304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Quote arguments (to preserve shell metacharacters). 17314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$file" 17324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project args="$args $func_quote_for_eval_result" 17334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 1734893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$opt_dry_run" = Xfalse; then 17364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath_var"; then 17374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Export the shlibpath_var. 17384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "export $shlibpath_var" 17394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 1740893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restore saved environment variables 17424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 17434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 17444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "if test \"\${save_$lt_var+set}\" = set; then 17454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $lt_var=\$save_$lt_var; export $lt_var 17464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 17474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $lt_unset $lt_var 17484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi" 17494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 1750893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now prepare to actually exec the command. 17524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec_cmd="\$cmd$args" 17534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 17544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Display what would be done. 17554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath_var"; then 17564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 17574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "export $shlibpath_var" 17584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 17594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$cmd$args" 17604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 17614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 17624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1763893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttest "$mode" = execute && func_mode_execute ${1+"$@"} 1765893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1766893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_finish arg... 17684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_finish () 17694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 17704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 17714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdirs="$nonopt" 17724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project admincmds= 1773893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 17754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dir 17764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 17774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdirs="$libdirs $dir" 17784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 1779893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $libdirs; do 17814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$finish_cmds"; then 17824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each command in the finish commands. 17834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 17844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project'"$cmd"'"' 17854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 17864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$finish_eval"; then 17874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do the single finish_eval. 17884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmds=\"$finish_eval\" 17894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval "$cmds" || admincmds="$admincmds 17904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $cmds" 17914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 17924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 17934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 1794893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Exit here if they wanted silent mode. 17964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_silent && exit $EXIT_SUCCESS 1797893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 17984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "X----------------------------------------------------------------------" | $Xsed 17994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "Libraries have been installed in:" 18004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $libdirs; do 18014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO " $libdir" 18024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 18034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 18044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "If you ever happen to want to link against installed libraries" 18054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "in a given directory, LIBDIR, you must either use libtool, and" 18064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" 18074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "flag during linking and do at least one of the following:" 18084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath_var"; then 18094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" 18104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO " during execution" 18114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 18124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$runpath_var"; then 18134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" 18144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO " during linking" 18154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 18164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_flag_spec"; then 18174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir=LIBDIR 18184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval flag=\"$hardcode_libdir_flag_spec\" 1819893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 18204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO " - use the \`$flag' linker flag" 18214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 18224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$admincmds"; then 18234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO " - have your system administrator run these commands:$admincmds" 18244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 18254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f /etc/ld.so.conf; then 18264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 18274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 18284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 1829893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 18304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "See any operating system documentation about shared libraries for" 18314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 18324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project solaris2.[6789]|solaris2.1[0-9]) 18334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" 18344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "pages." 1835893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 18364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 18374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." 18384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 18394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 18404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "X----------------------------------------------------------------------" | $Xsed 18414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 18424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1843893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 18444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttest "$mode" = finish && func_mode_finish ${1+"$@"} 1845893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1846893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 18474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_install arg... 18484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_install () 18494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 18504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 18514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # There may be an optional sh(1) argument at the beginning of 18524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # install_prog (especially on Windows NT). 18534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 18544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Allow the use of GNU shtool's install command. 18554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "X$nonopt" | $GREP shtool >/dev/null; then 18564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Aesthetically quote it. 18574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$nonopt" 18584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install_prog="$func_quote_for_eval_result " 18594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$1 18604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 18614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 18624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install_prog= 18634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$nonopt 18644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 18654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 18664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The real first argument should be the name of the installation program. 18674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Aesthetically quote it. 18684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 18694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install_prog="$install_prog$func_quote_for_eval_result" 18704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 18714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need to accept at least all the BSD install flags. 18724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dest= 18734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project files= 18744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opts= 18754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 18764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install_type= 18774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project isdir=no 18784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project stripme= 18794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg 18804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 18814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dest"; then 18824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project files="$files $dest" 18834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dest=$arg 1884893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 18854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 1886893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 18874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 18884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -d) isdir=yes ;; 18894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -f) 18904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $install_prog " in 18914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\\\ /]cp\ *) ;; 18924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) prev=$arg ;; 1893893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 1894893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 18954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -g | -m | -o) 18964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=$arg 18974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 18984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -s) 18994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project stripme=" -s" 19004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 19014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 19024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -*) 19034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 19044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 19054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the previous option needed an argument, then skip it. 19064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$prev"; then 19074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 19084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 19094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dest=$arg 19104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 19114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 19124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 19134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 1914893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 19154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Aesthetically quote the argument. 19164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 19174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install_prog="$install_prog $func_quote_for_eval_result" 19184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 1919893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 19204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$install_prog" && \ 19214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify an install program" 1922893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 19234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$prev" && \ 19244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "the \`$prev' option requires an argument" 19254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 19264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$files"; then 19274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$dest"; then 19284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "no file or destination specified" 19294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 19304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify a destination" 19314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 1932893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 1933893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 19344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Strip any trailing slash from the destination. 19354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '/' "$dest" 19364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dest=$func_stripname_result 1937893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 19384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that the destination is a directory. 19394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -d "$dest" && isdir=yes 19404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$isdir" = yes; then 19414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destdir="$dest" 19424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destname= 1943893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 19444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname_and_basename "$dest" "" "." 19454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destdir="$func_dirname_result" 19464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destname="$func_basename_result" 1947893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 19484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Not a directory, so check to see that there is only one file specified. 19494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $files; shift 19504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$#" -gt 1 && \ 19514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "\`$dest' is not a directory" 1952893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 19534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $destdir in 19544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) ;; 1955893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 19564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file in $files; do 19574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 19584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) ;; 19594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 19604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "\`$destdir' must be an absolute directory name" 19614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 19624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 19634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 1964893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1965893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 1966893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 19674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This variable tells wrapper scripts just to set variables rather 19684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # than running their programs. 19694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libtool_install_magic="$magic" 1970893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 19714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project staticlibs= 19724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project future_libdirs= 19734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project current_libdirs= 19744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file in $files; do 1975893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 19764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each installation. 19774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 19784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$libext) 19794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do the static libraries later. 19804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project staticlibs="$staticlibs $file" 19814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 19824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 19834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 19844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that this really is a libtool archive. 19854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lalib_unsafe_p "$file" \ 19864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project || func_fatal_help "\`$file' is not a valid libtool archive" 19874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 19884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project library_names= 19894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_library= 19904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 19914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$file" 19924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 19934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add the libdir to current_libdirs if it is the destination. 19944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$destdir" = "X$libdir"; then 19954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$current_libdirs " in 19964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 19974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) current_libdirs="$current_libdirs $libdir" ;; 1998893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 19994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 20004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Note the libdir as a future libdir. 20014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$future_libdirs " in 20024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 20034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) future_libdirs="$future_libdirs $libdir" ;; 20044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 20054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2006893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 20074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$file" "/" "" 20084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$func_dirname_result" 20094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$dir$objdir" 20104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 20114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$relink_command"; then 20124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Determine the prefix the user has applied to our future dir. 20134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` 20144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 20154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't allow the user to place us outside of our expected 20164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # location b/c this prevents finding dependent libraries that 20174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # are installed to the same prefix. 20184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # At present, this check doesn't affect windows .dll's that 20194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # are installed into $libdir/../bin (currently, that works fine) 20204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # but it's something to keep an eye on. 20214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$inst_prefix_dir" = "$destdir" && \ 20224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 20234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 20244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$inst_prefix_dir"; then 20254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Stick the inst_prefix_dir data into the link command. 20264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 20274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 20284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` 20294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 20304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 20314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "relinking \`$file'" 20324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$relink_command" \ 20334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 20344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 20354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 20364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # See the names of the shared library. 20374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $library_names; shift 20384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$1"; then 20394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project realname="$1" 20404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 20414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 20424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project srcname="$realname" 20434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$relink_command" && srcname="$realname"T 20444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 20454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install the shared library and build the symlinks. 20464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 20474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 'exit $?' 20484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tstripme="$stripme" 20494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host_os in 20505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cygwin* | mingw* | pw32* | cegcc*) 20514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $realname in 20524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.dll.a) 20534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tstripme="" 20544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 20554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 2056893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2057893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 20584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$tstripme" && test -n "$striplib"; then 20594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$striplib $destdir/$realname" 'exit $?' 2060893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 20614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 20624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$#" -gt 0; then 20634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Delete the old symlinks, and create new ones. 20644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Try `ln -sf' first, because the `ln' binary might depend on 20654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the symlink we replace! Solaris /bin/ln does not understand -f, 20664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # so we also need to try rm && ln -s. 20674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for linkname 20684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 20694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$linkname" != "$realname" \ 20704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 2071893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 2072893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2073893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 20744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each command in the postinstall commands. 20754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib="$destdir/$realname" 20764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$postinstall_cmds" 'exit $?' 2077893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2078893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 20794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install the pseudo-library for information purposes. 20804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file" 20814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 20824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project instname="$dir/$name"i 20834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 2084893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 20854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Maybe install the static library, too. 20864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 20874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2088893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 20894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) 20904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install (i.e. copy) a libtool object. 2091893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 20924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Figure out destination file name, if it wasn't already specified. 20934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$destname"; then 20944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$destdir/$destname" 20954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 20964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file" 20974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$func_basename_result" 20984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$destdir/$destfile" 20994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 21004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 21014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Deduce the name of the destination old-style object file. 21024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $destfile in 21034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) 21044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lo2o "$destfile" 21054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project staticdest=$func_lo2o_result 21064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 21074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$objext) 21084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project staticdest="$destfile" 21094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile= 21104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 21114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 21124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "cannot copy a libtool object to \`$destfile'" 21134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2114893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 2115893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 21164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install the libtool object if requested. 21174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$destfile" && \ 21184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog $file $destfile" 'exit $?' 21194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 21204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install the old object if enabled. 21214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = yes; then 21224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Deduce the name of the old-style object file. 21234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lo2o "$file" 21244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project staticobj=$func_lo2o_result 21254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 2126893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 21274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 21284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2129893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 21304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 21314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Figure out destination file name, if it wasn't already specified. 21324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$destname"; then 21334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$destdir/$destname" 21344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 21354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file" 21364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$func_basename_result" 21374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$destdir/$destfile" 21384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 21394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 21404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the file is missing, and there is a .exe on the end, strip it 21414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # because it is most likely a libtool script we actually want to 21424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # install 21434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project stripped_ext="" 21444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 21454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.exe) 21464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -f "$file"; then 21474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$file" 21484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=$func_stripname_result 21494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project stripped_ext=".exe" 2150893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 21514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 21524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 2153893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 21544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do a test to see if this is really a libtool program. 21554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 21565f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw*) 21574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_executable_p "$file"; then 21584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_scriptname "$file" 21594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrapper=$func_ltwrapper_scriptname_result 21604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 21614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$file" 21624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrapper=$func_stripname_result 21634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 21644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 21654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 21664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrapper=$file 21674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 21684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 21694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_script_p "$wrapper"; then 21704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_deplibs= 21714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 2172893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 21734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$wrapper" 2174893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 21754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check the variables that should have been set. 21764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$generated_by_libtool_version" && \ 21774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "invalid libtool wrapper script \`$wrapper'" 21784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 21794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize=yes 21804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $notinst_deplibs; do 21814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that each library is installed. 21824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir= 21834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$lib"; then 21844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$lib" 21854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 21864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 21874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$libdir" && test ! -f "$libfile"; then 21884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`$lib' has not been installed in \`$libdir'" 21894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize=no 21904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 21914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 21924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 21934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 21944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$wrapper" 21954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 21964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project outputname= 21974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$fast_install" = no && test -n "$relink_command"; then 21984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 21994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$finalize" = yes; then 22004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmpdir=`func_mktempdir` 22014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file$stripped_ext" 22024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file="$func_basename_result" 22034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project outputname="$tmpdir/$file" 22044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Replace the output file specification. 22054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` 22064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 22074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_silent || { 22084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand "$relink_command" 22094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "func_echo $func_quote_for_expand_result" 22104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 22114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval "$relink_command"; then : 22124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 22134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "error: relink \`$file' with the above command before installing it" 22144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || ${RM}r "$tmpdir" 22154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 22164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 22174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file="$outputname" 22184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 22194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "cannot relink \`$file'" 22204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 22214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 2222893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 22234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install the binary that we compiled earlier. 22244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 2225893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 22264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2227893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # remove .exe since cygwin /usr/bin/install will append another 22294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # one anyway 22304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $install_prog,$host in 22314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project */usr/bin/install*,*cygwin*) 22324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file:$destfile in 22334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.exe:*.exe) 22344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # this is ok 22354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 22364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.exe:*) 22374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile=$destfile.exe 22384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 22394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *:*.exe) 22404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$destfile" 22414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile=$func_stripname_result 22424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 22434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 2244893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2245893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 22464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 22474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || if test -n "$outputname"; then 22484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ${RM}r "$tmpdir" 22494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 22504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 22514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 22524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2253893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file in $staticlibs; do 22554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file" 22564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 2257893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Set up the ranlib parameters. 22594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlib="$destdir/$name" 2260893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 2262893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$stripme" && test -n "$old_striplib"; then 22644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$old_striplib $oldlib" 'exit $?' 22654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2266893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each command in the postinstall commands. 22684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$old_postinstall_cmds" 'exit $?' 22694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2270893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$future_libdirs" && \ 22724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "remember to run \`$progname --finish$future_libdirs'" 2273893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$current_libdirs"; then 22754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Maybe just do a dry run. 22764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run && current_libdirs=" -n$current_libdirs" 22774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 22784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 22794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 22804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 22814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2282893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttest "$mode" = install && func_mode_install ${1+"$@"} 2284893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2285893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_generate_dlsyms outputname originator pic_p 22874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Extract symbols from dlprefiles and create ${outputname}S.o with 22884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# a dlpreopen symbol table. 22894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_generate_dlsyms () 22904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 22914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 22924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_outputname="$1" 22934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_originator="$2" 22944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_pic_p="${3-no}" 22954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 22964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_dlsyms= 22974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 22984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 22994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$NM" && test -n "$global_symbol_pipe"; then 23004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_dlsyms="${my_outputname}S.c" 23014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 23024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "not configured to extract global symbols from dlpreopened files" 23034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 23044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2305893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$my_dlsyms"; then 23074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $my_dlsyms in 23084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project "") ;; 23094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.c) 23104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Discover the nlist of each of the dlfiles. 23114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project nlist="$output_objdir/${my_outputname}.nm" 23124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 23134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 23144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 23154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Parse the name list into a source file. 23164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating $output_objdir/$my_dlsyms" 23174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 23184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 23194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 23204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 23214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 23224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef __cplusplus 23234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectextern \"C\" { 23244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 23254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 23264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* External symbol declarations for the compiler. */\ 23274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 23284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 23294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$dlself" = yes; then 23304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "generating symbol list for \`$output'" 23314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 23324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 23334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 23344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add our own program objects to the symbol list. 23354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 23364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for progfile in $progfiles; do 23374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "extracting global C symbols from \`$progfile'" 23384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 23394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 23404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 23414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$exclude_expsyms"; then 23424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 23434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 23444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$MV "$nlist"T "$nlist"' 23454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 2346893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2347893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols_regex"; then 23494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 23504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 23514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$MV "$nlist"T "$nlist"' 23524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 2353893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 23544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 23554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepare the list of exported symbols 23564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$export_symbols"; then 23574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols="$output_objdir/$outputname.exp" 23584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 23594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM $export_symbols 23604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 23614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 23625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw* | *cegcc* ) 23634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 23654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2366893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 23674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 23684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 23694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 23704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 23714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 23724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$MV "$nlist"T "$nlist"' 23734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 23745f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin | *mingw* | *cegcc* ) 23754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 23764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 23774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2378893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 23794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 2380893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 23814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2382893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dlprefile in $dlprefiles; do 23844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "extracting global C symbols from \`$dlprefile'" 23854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$dlprefile" 23864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 23874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 23884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$ECHO ": $name " >> "$nlist"' 23894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 23904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 23914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2392893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 23944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure we have at least an empty file. 23954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -f "$nlist" || : > "$nlist" 2396893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$exclude_expsyms"; then 23984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 23994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV "$nlist"T "$nlist" 2400893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2401893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Try sorting and uniquifying the output. 24034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $GREP -v "^: " < "$nlist" | 24044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if sort -k 3 </dev/null >/dev/null 2>&1; then 24054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project sort -k 3 2406893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 24074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project sort +2 24084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi | 24094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project uniq > "$nlist"S; then 24104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 2411893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 24124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP -v "^: " < "$nlist" > "$nlist"S 2413893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2414893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$nlist"S; then 24164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 2417893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 24184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" 2419893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2420893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO >> "$output_objdir/$my_dlsyms" "\ 2422893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* The mapping between symbol names and symbols. */ 24244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttypedef struct { 24254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *name; 24264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project void *address; 24274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} lt_dlsymlist; 24284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 24294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 24305f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw* | *cegcc* ) 24314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO >> "$output_objdir/$my_dlsyms" "\ 24324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* DATA imports from DLLs on WIN32 con't be const, because 24334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project runtime relocations are performed -- see ld's documentation 24344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project on pseudo-relocs. */" 24354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_dlsym_const= ;; 24364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *osf5*) 24374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project echo >> "$output_objdir/$my_dlsyms" "\ 24384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* This system does not cope well with relocations in const data */" 24394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_dlsym_const= ;; 24404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 24414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_dlsym_const=const ;; 24424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 2443893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO >> "$output_objdir/$my_dlsyms" "\ 24454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectextern $lt_dlsym_const lt_dlsymlist 24464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_${my_prefix}_LTX_preloaded_symbols[]; 24474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$lt_dlsym_const lt_dlsymlist 24484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_${my_prefix}_LTX_preloaded_symbols[] = 24494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{\ 24504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { \"$my_originator\", (void *) 0 }," 2451893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $need_lib_prefix in 24534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project no) 24544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 24554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 24564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 24574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 24584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 24594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 24604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO >> "$output_objdir/$my_dlsyms" "\ 24614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project {0, (void *) 0} 24624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}; 2463893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* This works around a problem in FreeBSD linker */ 24654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef FREEBSD_WORKAROUND 24664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectstatic const void *lt_preloaded_setup() { 24674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return lt_${my_prefix}_LTX_preloaded_symbols; 24684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 24694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 2470893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef __cplusplus 24724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 24734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif\ 24744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 24754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } # !$opt_dry_run 2476893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_flag_for_symtable= 24784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$compile_command " in 24794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -static "*) ;; 24804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 24814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 24824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # compiling the symbol table file with pic_flag works around 24834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # a FreeBSD bug that causes programs to crash when -lm is 24844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # linked before any other PIC object. But we must not use 24854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # pic_flag when linking with -static. The problem exists in 24864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 24874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 24884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 24894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-hpux*) 24904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_flag_for_symtable=" $pic_flag" ;; 24914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 24924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$my_pic_p" != Xno; then 24934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_flag_for_symtable=" $pic_flag" 24944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 24954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 24964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 24974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 24984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 24994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project symtab_cflags= 25004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg in $LTCFLAGS; do 25014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 25024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -pie | -fpie | -fPIE) ;; 25034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) symtab_cflags="$symtab_cflags $arg" ;; 25044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 25054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2506893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now compile the dynamic symbol file. 25084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 2509893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Clean up the generated files. 25114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 2512893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform the symbol file into the correct name. 25144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project symfileobj="$output_objdir/${my_outputname}S.$objext" 25154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 25165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw* | *cegcc* ) 25174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$output_objdir/$my_outputname.def"; then 25184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 25204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 25214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 25244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 25254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 25264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` 25284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 25294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 2530893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2531893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 25324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "unknown suffix for \`$my_dlsyms'" 2533893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2534893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 25354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 25364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We keep going just in case the user didn't refer to 25374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 25384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # really was required. 2539893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Nullify the symbol file. 25414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 25424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 25434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 25444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2545893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_win32_libid arg 25474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# return the library type of file 'arg' 25484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 25494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Need a lot of goo to handle *both* DLLs and import libs 25504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Has to be a shell function in order to 'eat' the argument 25514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# that is supplied when $file_magic_command is called. 25524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_win32_libid () 25534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 25544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 25554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_libid_type="unknown" 25564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_fileres=`file -L $1 2>/dev/null` 25574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $win32_fileres in 25584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *ar\ archive\ import\ library*) # definitely import 25594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_libid_type="x86 archive import" 25604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 25614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *ar\ archive*) # could be an import, or static 25624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 25634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 25644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_nmres=`eval $NM -f posix -A $1 | 25654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -n -e ' 25664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1,100{ 25674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project / I /{ 25684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s,.*,import, 25694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p 25704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project q 25714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 25724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project }'` 25734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $win32_nmres in 25744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project import*) win32_libid_type="x86 archive import";; 25754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) win32_libid_type="x86 archive static";; 25764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 25774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 25784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 25794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *DLL*) 25804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_libid_type="x86 DLL" 25814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 25824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *executable*) # but shell scripts are "executable" too... 25834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $win32_fileres in 25844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *MS\ Windows\ PE\ Intel*) 25854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_libid_type="x86 DLL" 25864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 25874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 25884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 25894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 25904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$win32_libid_type" 25914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2592893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2593893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2594893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_extract_an_archive dir oldlib 25964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_extract_an_archive () 25974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 25984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 25994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project f_ex_an_ar_dir="$1"; shift 26004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project f_ex_an_ar_oldlib="$1" 26014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 26024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 26034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 26044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 26054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 26064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 26074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2608893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2609893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 26104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_extract_archives gentop oldlib ... 26114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_extract_archives () 26124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 26134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 26144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_gentop="$1"; shift 26154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_oldlibs=${1+"$@"} 26164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_oldobjs="" 26174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xlib="" 26184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xabs="" 26194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xdir="" 2620893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 26214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for my_xlib in $my_oldlibs; do 26224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract the objects. 26234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $my_xlib in 26244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 26254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) my_xabs=`pwd`"/$my_xlib" ;; 26264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 26274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$my_xlib" 26284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xlib="$func_basename_result" 26294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xlib_u=$my_xlib 26304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while :; do 26314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $extracted_archives " in 26324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $my_xlib_u "*) 26334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $extracted_serial + 1 26344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project extracted_serial=$func_arith_result 26354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xlib_u=lt$extracted_serial-$my_xlib ;; 26364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) break ;; 2637893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 26384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 26394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project extracted_archives="$extracted_archives $my_xlib_u" 26404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xdir="$my_gentop/$my_xlib_u" 2641893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 26424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mkdir_p "$my_xdir" 2643893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 26444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 26454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-darwin*) 26464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "Extracting $my_xabs" 26474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do not bother doing anything if just a dry run 26484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 26494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_orig_dir=`pwd` 26504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cd $my_xdir || exit $? 26514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_archive=$my_xabs 26524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_curdir=`pwd` 26534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_base_archive=`basename "$darwin_archive"` 26544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 26554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$darwin_arches"; then 26564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 26574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_arch= 26584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 26594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for darwin_arch in $darwin_arches ; do 26604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 26624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 26634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_an_archive "`pwd`" "${darwin_base_archive}" 26644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cd "$darwin_curdir" 26654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 26664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # $darwin_arches 26674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ## Okay now we've a bunch of thin objects, gotta fatten them up :) 26684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 26694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_file= 26704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_files= 26714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for darwin_file in $darwin_filelist; do 26724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 26734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $LIPO -create -output "$darwin_file" $darwin_files 26744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # $darwin_filelist 26754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM -rf unfat-$$ 26764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cd "$darwin_orig_dir" 26774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 26784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cd $darwin_orig_dir 26794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_an_archive "$my_xdir" "$my_xabs" 26804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $darwin_arches 26814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } # !$opt_dry_run 26824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 26834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 26844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_an_archive "$my_xdir" "$my_xabs" 26854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 26864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 26874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 26884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2689893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 26904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives_result="$my_oldobjs" 26914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2692893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 26934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 26944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 26955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# func_emit_wrapper_part1 [arg=no] 26964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 26975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Emit the first part of a libtool wrapper script on stdout. 26985f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# For more information, see the description associated with 26995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# func_emit_wrapper(), below. 27005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottfunc_emit_wrapper_part1 () 27014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 27025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_emit_wrapper_part1_arg1=no 27034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$1" ; then 27045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_emit_wrapper_part1_arg1=$1 2705893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2706893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 27084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#! $SHELL 2709893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# $output - temporary wrapper script for $objdir/$outputname 27114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 27124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 27134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The $output program cannot be directly executed until all the libtool 27144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# libraries that it depends on are installed. 27154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 27164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This wrapper script should never be moved out of the build directory. 27174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# If it is, it will not operate correctly. 2718893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Sed substitution that helps us do robust quoting. It backslashifies 27204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# metacharacters that are still active within double-quoted strings. 27214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectXsed='${SED} -e 1s/^X//' 27224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectsed_quote_subst='$sed_quote_subst' 2723893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Be Bourne compatible 27254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 27264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project emulate sh 27274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project NULLCMD=: 27284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 27294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # is contrary to our usage. Disable this feature. 27304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project alias -g '\${1+\"\$@\"}'='\"\$@\"' 27314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project setopt NO_GLOB_SUBST 27324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelse 27334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 27344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi 27354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectBIN_SH=xpg4; export BIN_SH # for Tru64 27364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectDUALCASE=1; export DUALCASE # for MKS sh 2737893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The HP-UX ksh and POSIX shell print the target directory to stdout 27394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# if CDPATH is set. 27404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 2741893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrelink_command=\"$relink_command\" 2743893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This environment variable determines our operation mode. 27454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test \"\$libtool_install_magic\" = \"$magic\"; then 27464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # install mode needs the following variables: 27474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project generated_by_libtool_version='$macro_version' 27484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_deplibs='$notinst_deplibs' 27494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelse 27504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # When we are sourced in execute mode, \$file and \$ECHO are already set. 27514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"\$libtool_execute_magic\" != \"$magic\"; then 27524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ECHO=\"$qecho\" 27534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=\"\$0\" 27544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure echo works. 27554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"X\$1\" = X--no-reexec; then 27564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Discard the --no-reexec flag, and continue. 27574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 27584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then 27594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Yippee, \$ECHO works! 27604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 27614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 27624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restart under the correct shell, and then maybe \$ECHO will work. 27634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 27644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 27654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi\ 27664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 27674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 2768893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Find the directory that this script lives in. 27704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 27714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test \"x\$thisdir\" = \"x\$file\" && thisdir=. 2772893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Follow symbolic links until we get to the real thisdir. 27744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 27754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test -n \"\$file\"; do 27764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 2777893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If there was a directory component, then change thisdir. 27794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"x\$destdir\" != \"x\$file\"; then 27804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case \"\$destdir\" in 27814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 27824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) thisdir=\"\$thisdir/\$destdir\" ;; 27834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 27844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2785893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 27874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 27884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 27895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott" 27905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 27915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# end: func_emit_wrapper_part1 27925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 27935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# func_emit_wrapper_part2 [arg=no] 27945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# 27955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Emit the second part of a libtool wrapper script on stdout. 27965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# For more information, see the description associated with 27975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# func_emit_wrapper(), below. 27985f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottfunc_emit_wrapper_part2 () 27995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 28005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_emit_wrapper_part2_arg1=no 28015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -n "$1" ; then 28025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_emit_wrapper_part2_arg1=$1 28035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 28045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 28055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $ECHO "\ 2806893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Usually 'no', except on cygwin/mingw when embedded into 28084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the cwrapper. 28095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 28104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 28114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # special case for '.' 28124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"\$thisdir\" = \".\"; then 28134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project thisdir=\`pwd\` 28144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 28154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # remove .libs from thisdir 28164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case \"\$thisdir\" in 28174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; 28184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $objdir ) thisdir=. ;; 28194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 28204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2821893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Try to get the absolute directory name. 28234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir=\`cd \"\$thisdir\" && pwd\` 28244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n \"\$absdir\" && thisdir=\"\$absdir\" 28254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 2826893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$fast_install" = yes; then 28284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 28294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project program=lt-'$outputname'$exeext 28304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progdir=\"\$thisdir/$objdir\" 2831893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -f \"\$progdir/\$program\" || 28334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 28344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test \"X\$file\" != \"X\$progdir/\$program\"; }; then 2835893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=\"\$\$-\$program\" 2837893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -d \"\$progdir\"; then 28394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MKDIR \"\$progdir\" 28404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 28414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM \"\$progdir/\$file\" 28424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi" 2843893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 28454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 28464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # relink executable if necessary 28474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n \"\$relink_command\"; then 28484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if relink_command_output=\`eval \$relink_command 2>&1\`; then : 28494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 28504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \"\$relink_command_output\" >&2 28514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM \"\$progdir/\$file\" 28524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit 1 2853893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 28544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2855893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 28574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { $RM \"\$progdir/\$program\"; 28584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 28594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM \"\$progdir/\$file\" 28604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi" 28614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 28624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 28634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project program='$outputname' 28644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progdir=\"\$thisdir/$objdir\" 28654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 2866893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2867893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 2869893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f \"\$progdir/\$program\"; then" 2871893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Export our shlibpath_var if we have one. 28734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 28744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 28754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add our own library path to $shlibpath_var 28764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 2877893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Some systems cannot cope with colon-terminated $shlibpath_var 28794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The second colon is a workaround for a bug in BeOS R4 sed 28804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 28814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 28824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export $shlibpath_var 28834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 2884893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2885893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # fixup the dll searchpath if we need to. 28874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dllsearchpath"; then 28884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 28894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add the dll search path components to the executable PATH 28904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project PATH=$dllsearchpath:\$PATH 28914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 28924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2893893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 28954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"\$libtool_execute_magic\" != \"$magic\"; then 28964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Run the actual program with our arguments. 28974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 28984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 28994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Backslashes separate directories on plain windows 29005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-mingw | *-*-os2* | *-cegcc*) 29014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 29024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 29034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 29044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 29054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 29074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 29084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec \"\$progdir/\$program\" \${1+\"\$@\"} 29094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 29104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2911893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 29124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 29134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 29144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit 1 29154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 29164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 29174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The program doesn't exist. 29184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 29194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 29204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 29214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit 1 29224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 29234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi\ 29244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 29254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 29265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# end: func_emit_wrapper_part2 29275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 29285f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 29295f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# func_emit_wrapper [arg=no] 29305f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# 29315f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Emit a libtool wrapper script on stdout. 29325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Don't directly open a file because we may want to 29335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# incorporate the script contents within a cygwin/mingw 29345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# wrapper executable. Must ONLY be called from within 29355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# func_mode_link because it depends on a number of variables 29365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# set therein. 29375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# 29385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 29395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# variable will take. If 'yes', then the emitted script 29405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# will assume that the directory in which it is stored is 29415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# the $objdir directory. This is a cygwin/mingw-specific 29425f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# behavior. 29435f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottfunc_emit_wrapper () 29445f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 29455f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_emit_wrapper_arg1=no 29465f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -n "$1" ; then 29475f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_emit_wrapper_arg1=$1 29485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 29495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 29505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # split this up so that func_emit_cwrapperexe_src 29515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # can call each part independently. 29525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" 29535f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" 29545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 29555f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 29565f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 29575f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# func_to_host_path arg 29585f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# 29595f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Convert paths to host format when used with build tools. 29605f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Intended for use with "native" mingw (where libtool itself 29615f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# is running under the msys shell), or in the following cross- 29625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# build environments: 29635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# $build $host 29645f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# mingw (msys) mingw [e.g. native] 29655f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# cygwin mingw 29665f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# *nix + wine mingw 29675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# where wine is equipped with the `winepath' executable. 29685f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# In the native mingw case, the (msys) shell automatically 29695f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# converts paths for any non-msys applications it launches, 29705f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# but that facility isn't available from inside the cwrapper. 29715f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Similar accommodations are necessary for $host mingw and 29725f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# $build cygwin. Calling this function does no harm for other 29735f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# $host/$build combinations not listed above. 29745f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# 29755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# ARG is the path (on $build) that should be converted to 29765f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# the proper representation for $host. The result is stored 29775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# in $func_to_host_path_result. 29785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottfunc_to_host_path () 29795f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 29805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_path_result="$1" 29815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -n "$1" ; then 29825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott case $host in 29835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *mingw* ) 29845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 29855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott case $build in 29865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *mingw* ) # actually, msys 29875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # awkward: cmd appends spaces to result 29885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_sed_strip_trailing_spaces="s/[ ]*\$//" 29895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_path_tmp1=`( cmd //c echo "$1" |\ 29905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 29915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e "$lt_sed_naive_backslashify"` 29935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 29945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* ) 29955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_path_tmp1=`cygpath -w "$1"` 29965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 29975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e "$lt_sed_naive_backslashify"` 29985f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 29995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott * ) 30005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # Unfortunately, winepath does not exit with a non-zero 30015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # error code, so we are forced to check the contents of 30025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # stdout. On the other hand, if the command is not 30035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # found, the shell will set an exit code of 127 and print 30045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # *an error message* to stdout. So we must check for both 30055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # error code of zero AND non-empty stdout, which explains 30065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # the odd construction: 30075f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 30085f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 30095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ 30105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e "$lt_sed_naive_backslashify"` 30115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 30125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # Allow warning below. 30135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_path_result="" 30145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 30155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 30165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott esac 30175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -z "$func_to_host_path_result" ; then 30185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_error "Could not determine host path corresponding to" 30195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_error " '$1'" 30205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_error "Continuing, but uninstalled executables may not work." 30215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # Fallback: 30225f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_path_result="$1" 30235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 30245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 30255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott esac 30265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 30275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 30285f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# end: func_to_host_path 30295f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 30305f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# func_to_host_pathlist arg 30315f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# 30325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Convert pathlists to host format when used with build tools. 30335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# See func_to_host_path(), above. This function supports the 30345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# following $build/$host combinations (but does no harm for 30355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# combinations not listed here): 30365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# $build $host 30375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# mingw (msys) mingw [e.g. native] 30385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# cygwin mingw 30395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# *nix + wine mingw 30405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# 30415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# Path separators are also converted from $build format to 30425f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# $host format. If ARG begins or ends with a path separator 30435f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# character, it is preserved (but converted to $host format) 30445f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# on output. 30455f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# 30465f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# ARG is a pathlist (on $build) that should be converted to 30475f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# the proper representation on $host. The result is stored 30485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# in $func_to_host_pathlist_result. 30495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottfunc_to_host_pathlist () 30505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 30515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_result="$1" 30525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -n "$1" ; then 30535f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott case $host in 30545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *mingw* ) 30555f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 30565f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # Remove leading and trailing path separator characters from 30575f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # ARG. msys behavior is inconsistent here, cygpath turns them 30585f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # into '.;' and ';.', and winepath ignores them completely. 30595f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_tmp2="$1" 30605f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # Once set for this call, this variable should not be 30615f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # reassigned. It is used in tha fallback case. 30625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ 30635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e 's|^:*||' -e 's|:*$||'` 30645f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott case $build in 30655f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *mingw* ) # Actually, msys. 30665f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # Awkward: cmd appends spaces to result. 30675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_sed_strip_trailing_spaces="s/[ ]*\$//" 30685f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ 30695f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` 30705f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30715f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e "$lt_sed_naive_backslashify"` 30725f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 30735f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* ) 30745f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` 30755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ 30765f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e "$lt_sed_naive_backslashify"` 30775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 30785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott * ) 30795f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # unfortunately, winepath doesn't convert pathlists 30805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_result="" 30815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_oldIFS=$IFS 30825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott IFS=: 30835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 30845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott IFS=$func_to_host_pathlist_oldIFS 30855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -n "$func_to_host_pathlist_f" ; then 30865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_path "$func_to_host_pathlist_f" 30875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -n "$func_to_host_path_result" ; then 30885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -z "$func_to_host_pathlist_result" ; then 30895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_result="$func_to_host_path_result" 30905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 30915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" 30925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 30935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 30945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 30955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott IFS=: 30965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott done 30975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott IFS=$func_to_host_pathlist_oldIFS 30985f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 30995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott esac 31005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -z "$func_to_host_pathlist_result" ; then 31015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_error "Could not determine the host path(s) corresponding to" 31025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_error " '$1'" 31035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_error "Continuing, but uninstalled executables may not work." 31045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # Fallback. This may break if $1 contains DOS-style drive 31055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # specifications. The fix is not to complicate the expression 31065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # below, but for the user to provide a working wine installation 31075f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # with winepath so that path translation in the cross-to-mingw 31085f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # case works properly. 31095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_replace_pathsep_nix_to_dos="s|:|;|g" 31105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 31115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e "$lt_replace_pathsep_nix_to_dos"` 31125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 31135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # Now, add the leading and trailing path separators back 31145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott case "$1" in 31155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 31165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 31175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott esac 31185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott case "$1" in 31195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" 31205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 31215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott esac 31225f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 31235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott esac 31245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 31255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 31265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# end: func_to_host_pathlist 3127893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 31284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_emit_cwrapperexe_src 31294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# emit the source code for a wrapper executable on stdout 31304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Must ONLY be called from within func_mode_link because 31314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# it depends on a number of variable set therein. 31324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_emit_cwrapperexe_src () 31334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 31344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<EOF 3135893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 31364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 31374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 31384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 31394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project The $output program cannot be directly executed until all the libtool 31404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libraries that it depends on are installed. 31414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 31424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project This wrapper executable should never be moved out of the build directory. 31434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project If it is, it will not operate correctly. 31444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 31454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project Currently, it simply execs the wrapper *script* "$SHELL $output", 31464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project but could eventually absorb all of the scripts functionality and 31474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec $objdir/$outputname directly. 31484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project*/ 3149893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectEOF 31504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<"EOF" 31514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <stdio.h> 31524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <stdlib.h> 31534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef _MSC_VER 31544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <direct.h> 31554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <process.h> 31564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <io.h> 31574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define setmode _setmode 31584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else 31594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <unistd.h> 31604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <stdint.h> 31614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# ifdef __CYGWIN__ 31624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <io.h> 31635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# define HAVE_SETENV 31645f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# ifdef __STRICT_ANSI__ 31655f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottchar *realpath (const char *, char *); 31665f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottint putenv (char *); 31675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottint setenv (const char *, const char *, int); 31685f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott# endif 31694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# endif 31704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 31714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <malloc.h> 31724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <stdarg.h> 31734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <assert.h> 31744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <string.h> 31754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <ctype.h> 31764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <errno.h> 31774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <fcntl.h> 31784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <sys/stat.h> 31794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 31804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined(PATH_MAX) 31814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LT_PATHMAX PATH_MAX 31824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#elif defined(MAXPATHLEN) 31834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LT_PATHMAX MAXPATHLEN 31844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else 31854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LT_PATHMAX 1024 31864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 31874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 31884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef S_IXOTH 31894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define S_IXOTH 0 31904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 31914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef S_IXGRP 31924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define S_IXGRP 0 31934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 31944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 31954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef _MSC_VER 31964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define S_IXUSR _S_IEXEC 31974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define stat _stat 31984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# ifndef _INTPTR_T_DEFINED 31994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define intptr_t int 32004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# endif 32014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 32024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef DIR_SEPARATOR 32044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define DIR_SEPARATOR '/' 32054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define PATH_SEPARATOR ':' 32064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 32074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 32094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project defined (__OS2__) 32104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define HAVE_DOS_BASED_FILE_SYSTEM 32114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define FOPEN_WB "wb" 32124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# ifndef DIR_SEPARATOR_2 32134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define DIR_SEPARATOR_2 '\\' 32144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# endif 32154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# ifndef PATH_SEPARATOR_2 32164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define PATH_SEPARATOR_2 ';' 32174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# endif 32184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 32194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef DIR_SEPARATOR_2 32214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 32224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else /* DIR_SEPARATOR_2 */ 32234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_DIR_SEPARATOR(ch) \ 32244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 32254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif /* DIR_SEPARATOR_2 */ 32264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef PATH_SEPARATOR_2 32284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 32294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else /* PATH_SEPARATOR_2 */ 32304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 32314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif /* PATH_SEPARATOR_2 */ 32324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef __CYGWIN__ 32344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define FOPEN_WB "wb" 32354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 32364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef FOPEN_WB 32384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define FOPEN_WB "w" 32394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 32404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef _O_BINARY 32414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define _O_BINARY 0 32424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 32434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 32454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#define XFREE(stale) do { \ 32464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (stale) { free ((void *) stale); stale = 0; } \ 32474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} while (0) 32484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#undef LTWRAPPER_DEBUGPRINTF 32504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined DEBUGWRAPPER 32514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args 32524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectstatic void 32534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectltwrapper_debugprintf (const char *fmt, ...) 32544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 32554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project va_list args; 32564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project va_start (args, fmt); 32574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project (void) vfprintf (stderr, fmt, args); 32584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project va_end (args); 32594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 32604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else 32614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LTWRAPPER_DEBUGPRINTF(args) 32624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 32634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectconst char *program_name = NULL; 32654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectvoid *xmalloc (size_t num); 32674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *xstrdup (const char *string); 32684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectconst char *base_name (const char *name); 32694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *find_executable (const char *wrapper); 32704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *chase_symlinks (const char *pathspec); 32714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint make_executable (const char *path); 32724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint check_executable (const char *path); 32734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *strendzap (char *str, const char *pat); 32744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectvoid lt_fatal (const char *message, ...); 32755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_setenv (const char *name, const char *value); 32765f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 32775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_opt_process_env_set (const char *arg); 32785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_opt_process_env_prepend (const char *arg); 32795f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_opt_process_env_append (const char *arg); 32805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottint lt_split_name_value (const char *arg, char** name, char** value); 32815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_update_exe_path (const char *name, const char *value); 32825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_update_lib_path (const char *name, const char *value); 32835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 32845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *script_text_part1 = 32854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 32864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_emit_wrapper_part1 yes | 32885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e 's/\([\\"]\)/\\\1/g' \ 32895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott -e 's/^/ "/' -e 's/$/\\n"/' 32905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott echo ";" 32915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<EOF 32925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 32935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *script_text_part2 = 32945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 32955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_emit_wrapper_part2 yes | 32964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -e 's/\([\\"]\)/\\\1/g' \ 32974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -e 's/^/ "/' -e 's/$/\\n"/' 32984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project echo ";" 32994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 33004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<EOF 33014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectconst char * MAGIC_EXE = "$magic_exe"; 33025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 33035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 33045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 33065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist "$temp_rpath" 33075f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<EOF 33085f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 33095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 33105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 33115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 33125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * LIB_PATH_VALUE = ""; 33135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 33145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 33155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -n "$dllsearchpath"; then 33175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_to_host_pathlist "$dllsearchpath:" 33185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<EOF 33195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * EXE_PATH_VARNAME = "PATH"; 33205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 33215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 33225f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 33235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 33245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * EXE_PATH_VARNAME = ""; 33255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * EXE_PATH_VALUE = ""; 33265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 33275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 33285f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33295f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test "$fast_install" = yes; then 33305f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<EOF 33315f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 33325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 33335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 33345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<EOF 33355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 33365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 33375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 33385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 33415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33425f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#define LTWRAPPER_OPTION_PREFIX "--lt-" 33435f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 33445f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33455f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH; 33465f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 33475f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 33495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7; 33515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set"; 33525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* argument is putenv-style "foo=bar", value of foo is set to bar */ 33535f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11; 33555f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend"; 33565f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ 33575f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 33585f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10; 33595f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append"; 33605f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ 33614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 33624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint 33634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmain (int argc, char *argv[]) 33644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 33654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char **newargz; 33665f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int newargc; 33674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *tmp_pathspec; 33684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *actual_cwrapper_path; 33695f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *actual_cwrapper_name; 33705f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *target_name; 33715f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *lt_argv_zero; 33724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project intptr_t rval = 127; 33734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 33744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int i; 33754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 33764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project program_name = (char *) xstrdup (base_name (argv[0])); 33774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); 33784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); 33794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 33804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* very simple arg parsing; don't want to rely on getopt */ 33814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (i = 1; i < argc; i++) 33824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 33834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (strcmp (argv[i], dumpscript_opt) == 0) 33844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 33854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 33864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$host" in 33874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *mingw* | *cygwin* ) 33884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # make stdout use "unix" line endings 33894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project echo " setmode(1,_O_BINARY);" 33904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 33914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 33924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 33935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 33945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott printf ("%s", script_text_part1); 33955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott printf ("%s", script_text_part2); 33964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 0; 33974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 33984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 33994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 34005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott newargz = XMALLOC (char *, argc + 1); 34014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_pathspec = find_executable (argv[0]); 34024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (tmp_pathspec == NULL) 34034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_fatal ("Couldn't find %s", argv[0]); 34044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n", 34054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_pathspec)); 34064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 34074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project actual_cwrapper_path = chase_symlinks (tmp_pathspec); 34084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n", 34094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project actual_cwrapper_path)); 34104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (tmp_pathspec); 34114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 34125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); 34135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strendzap (actual_cwrapper_path, actual_cwrapper_name); 34145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 34155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* wrapper name transforms */ 34165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strendzap (actual_cwrapper_name, ".exe"); 34175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 34185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (actual_cwrapper_name); 34195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott actual_cwrapper_name = tmp_pathspec; 34204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_pathspec = 0; 34215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 34225f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* target_name transforms -- use actual target program name; might have lt- prefix */ 34235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 34245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strendzap (target_name, ".exe"); 34255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 34265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (target_name); 34275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott target_name = tmp_pathspec; 34285f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott tmp_pathspec = 0; 34295f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 34305f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", 34315f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott target_name)); 34324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 3433893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<EOF 34355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott newargz[0] = 34364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XMALLOC (char, (strlen (actual_cwrapper_path) + 34375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 34385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcpy (newargz[0], actual_cwrapper_path); 34395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcat (newargz[0], "$objdir"); 34405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcat (newargz[0], "/"); 34414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 3442893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34435f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 34445f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* stop here, and copy so we don't have to do this twice */ 34455f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott tmp_pathspec = xstrdup (newargz[0]); 34465f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 34475f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 34485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcat (newargz[0], actual_cwrapper_name); 34495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 34505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* DO want the lt- prefix here if it exists, so use target_name */ 34515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 34525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (tmp_pathspec); 34535f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott tmp_pathspec = NULL; 34545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 3455893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host_os in 34574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project mingw*) 34584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<"EOF" 34594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 34604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char* p; 34615f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott while ((p = strchr (newargz[0], '\\')) != NULL) 34625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 34635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *p = '/'; 34645f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 34655f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott while ((p = strchr (lt_argv_zero, '\\')) != NULL) 34664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 34674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *p = '/'; 34684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 34694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 34704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 34714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 34724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 3473893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<"EOF" 34755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (target_name); 34764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (actual_cwrapper_path); 34775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (actual_cwrapper_name); 3478893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34795f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 34805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 34815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 34825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 3483893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott newargc=0; 34854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (i = 1; i < argc; i++) 34865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 34875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) 34885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 34895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (argv[i][env_set_opt_len] == '=') 34905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 34915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott const char *p = argv[i] + env_set_opt_len + 1; 34925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_opt_process_env_set (p); 34935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 34945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) 34955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 34965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_opt_process_env_set (argv[++i]); /* don't copy */ 34975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 34985f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 34995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_fatal ("%s missing required argument", env_set_opt); 35005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott continue; 35015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 35025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) 35035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 35045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (argv[i][env_prepend_opt_len] == '=') 35055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 35065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott const char *p = argv[i] + env_prepend_opt_len + 1; 35075f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_opt_process_env_prepend (p); 35085f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 35095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) 35105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 35115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_opt_process_env_prepend (argv[++i]); /* don't copy */ 35125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 35135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 35145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_fatal ("%s missing required argument", env_prepend_opt); 35155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott continue; 35165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 35175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) 35185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 35195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (argv[i][env_append_opt_len] == '=') 35205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 35215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott const char *p = argv[i] + env_append_opt_len + 1; 35225f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_opt_process_env_append (p); 35235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 35245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) 35255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 35265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_opt_process_env_append (argv[++i]); /* don't copy */ 35275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 35285f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 35295f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_fatal ("%s missing required argument", env_append_opt); 35305f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott continue; 35315f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 35325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) 35335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 35345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 35355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott namespace, but it is not one of the ones we know about and 35365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott have already dealt with, above (inluding dump-script), then 35375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott report an error. Otherwise, targets might begin to believe 35385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 35395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott namespace. The first time any user complains about this, we'll 35405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott need to make LTWRAPPER_OPTION_PREFIX a configure-time option 35415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott or a configure.ac-settable value. 35425f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott */ 35435f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_fatal ("Unrecognized option in %s namespace: '%s'", 35445f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ltwrapper_option_prefix, argv[i]); 35455f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 35465f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* otherwise ... */ 35475f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott newargz[++newargc] = xstrdup (argv[i]); 35485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 35495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott newargz[++newargc] = NULL; 3550893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 35515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>"))); 35525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott for (i = 0; i < newargc; i++) 35534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 35545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>"))); 35554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 3556893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 35574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 3558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 35594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host_os in 35604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project mingw*) 35615f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 35624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* execv doesn't actually work on mingw as expected on unix */ 35635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 35644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (rval == -1) 35654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 35664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* failed to start process */ 35675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); 35684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 127; 35694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 35704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return rval; 35714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 35724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 35734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 35745f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 35755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott execv (lt_argv_zero, newargz); 35764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return rval; /* =127, but avoids unused variable warning */ 35774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 35784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 35794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 3580893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 35814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<"EOF" 35825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 3583893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 35844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectvoid * 35854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectxmalloc (size_t num) 35864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 35874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project void *p = (void *) malloc (num); 35884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (!p) 35894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_fatal ("Memory exhausted"); 3590893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 35914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return p; 35924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3593893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 35944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar * 35954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectxstrdup (const char *string) 35964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 35974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 35984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project string) : NULL; 35994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectconst char * 36024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbase_name (const char *name) 36034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 36044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *base; 3605893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* Skip over the disk name in MSDOS pathnames. */ 36084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (isalpha ((unsigned char) name[0]) && name[1] == ':') 36094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name += 2; 36104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 3611893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (base = name; *name; name++) 36134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (IS_DIR_SEPARATOR (*name)) 36144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project base = name + 1; 36154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return base; 36164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3617893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint 36194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcheck_executable (const char *path) 36204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 36214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project struct stat st; 3622893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", 36244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project path ? (*path ? path : "EMPTY!") : "NULL!")); 36254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ((!path) || (!*path)) 36264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 0; 3627893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ((stat (path, &st) >= 0) 36294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 36304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 1; 36314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 36324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 0; 36334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3634893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint 36364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmake_executable (const char *path) 36374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 36384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int rval = 0; 36394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project struct stat st; 3640893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", 36424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project path ? (*path ? path : "EMPTY!") : "NULL!")); 36434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ((!path) || (!*path)) 36444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 0; 3645893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (stat (path, &st) >= 0) 36474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 36484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 36494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 36504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return rval; 36514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3652893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* Searches for the full path of the wrapper. Returns 36544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newly allocated full path name if found, NULL otherwise 36554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project Does not chase symlinks, even on platforms that support them. 36564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project*/ 36574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar * 36584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfind_executable (const char *wrapper) 36594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 36604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int has_slash = 0; 36614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *p; 36624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *p_next; 36634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* static buffer for getcwd */ 36644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char tmp[LT_PATHMAX + 1]; 36654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int tmp_len; 36664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *concat_name; 3667893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", 36694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 3670893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ((wrapper == NULL) || (*wrapper == '\0')) 36724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return NULL; 3673893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* Absolute path? */ 36754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 36774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 36784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name = xstrdup (wrapper); 36794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (check_executable (concat_name)) 36804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return concat_name; 36814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (concat_name); 36824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 36834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 36844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 36854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 36864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (IS_DIR_SEPARATOR (wrapper[0])) 36874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 36884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name = xstrdup (wrapper); 36894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (check_executable (concat_name)) 36904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return concat_name; 36914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (concat_name); 36924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 36934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 36944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 36954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 3696893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 36974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (p = wrapper; *p; p++) 36984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (*p == '/') 36994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project has_slash = 1; 37014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break; 37024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 37034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (!has_slash) 37044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* no slashes; search PATH */ 37064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *path = getenv ("PATH"); 37074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (path != NULL) 37084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (p = path; *p; p = p_next) 37104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *q; 37124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project size_t p_len; 37134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (q = p; *q; q++) 37144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (IS_PATH_SEPARATOR (*q)) 37154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break; 37164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p_len = q - p; 37174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p_next = (*q == '\0' ? q : q + 1); 37184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (p_len == 0) 37194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* empty path: current directory */ 37214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (getcwd (tmp, LT_PATHMAX) == NULL) 37224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_fatal ("getcwd failed"); 37234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_len = strlen (tmp); 37244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name = 37254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project memcpy (concat_name, tmp, tmp_len); 37274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name[tmp_len] = '/'; 37284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project strcpy (concat_name + tmp_len + 1, wrapper); 37294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 37304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 37314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name = 37334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 37344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project memcpy (concat_name, p, p_len); 37354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name[p_len] = '/'; 37364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project strcpy (concat_name + p_len + 1, wrapper); 37374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 37384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (check_executable (concat_name)) 37394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return concat_name; 37404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (concat_name); 37414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 37424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 37434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* not found in PATH; assume curdir */ 37444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 37454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* Relative path | not found in path: prepend cwd */ 37464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (getcwd (tmp, LT_PATHMAX) == NULL) 37474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_fatal ("getcwd failed"); 37484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_len = strlen (tmp); 37494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 37504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project memcpy (concat_name, tmp, tmp_len); 37514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name[tmp_len] = '/'; 37524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project strcpy (concat_name + tmp_len + 1, wrapper); 3753893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 37544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (check_executable (concat_name)) 37554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return concat_name; 37564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (concat_name); 37574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return NULL; 37584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3759893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 37604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar * 37614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchase_symlinks (const char *pathspec) 37624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 37634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef S_ISLNK 37644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return xstrdup (pathspec); 37654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else 37664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char buf[LT_PATHMAX]; 37674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project struct stat s; 37684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *tmp_pathspec = xstrdup (pathspec); 37694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *p; 37704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int has_symlinks = 0; 37714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while (strlen (tmp_pathspec) && !has_symlinks) 37724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", 37744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_pathspec)); 37754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (lstat (tmp_pathspec, &s) == 0) 37764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (S_ISLNK (s.st_mode) != 0) 37784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project has_symlinks = 1; 37804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break; 37814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 3782893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 37834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* search backwards for last DIR_SEPARATOR */ 37844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p = tmp_pathspec + strlen (tmp_pathspec) - 1; 37854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p--; 37874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 37884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* no more DIR_SEPARATORS left */ 37904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break; 37914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 37924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *p = '\0'; 37934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 37944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 37954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 37964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *errstr = strerror (errno); 37974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); 37984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 37994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 38004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (tmp_pathspec); 3801893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (!has_symlinks) 38034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 38044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return xstrdup (pathspec); 38054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 3806893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_pathspec = realpath (pathspec, buf); 38084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (tmp_pathspec == 0) 38094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 38104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_fatal ("Could not follow symlinks for %s", pathspec); 38114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 38124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return xstrdup (tmp_pathspec); 38134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 38144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3815893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar * 38174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectstrendzap (char *str, const char *pat) 38184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 38194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project size_t len, patlen; 3820893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project assert (str != NULL); 38224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project assert (pat != NULL); 3823893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len = strlen (str); 38254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project patlen = strlen (pat); 3826893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (patlen <= len) 38284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 38294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project str += len - patlen; 38304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (strcmp (str, pat) == 0) 38314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *str = '\0'; 38324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 38334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return str; 38344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3835893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectstatic void 38374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_error_core (int exit_status, const char *mode, 38384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *message, va_list ap) 38394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 38404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fprintf (stderr, "%s: %s: ", program_name, mode); 38414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vfprintf (stderr, message, ap); 38424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fprintf (stderr, ".\n"); 3843893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (exit_status >= 0) 38454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit (exit_status); 38464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3847893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectvoid 38494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_fatal (const char *message, ...) 38504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 38514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project va_list ap; 38524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project va_start (ap, message); 38534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 38544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project va_end (ap); 38554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 38565f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 38575f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid 38585f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_setenv (const char *name, const char *value) 38595f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 38605f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", 38615f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott (name ? name : "<NULL>"), 38625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott (value ? value : "<NULL>"))); 38635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 38645f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#ifdef HAVE_SETENV 38655f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* always make a copy, for consistency with !HAVE_SETENV */ 38665f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *str = xstrdup (value); 38675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott setenv (name, str, 1); 38685f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#else 38695f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int len = strlen (name) + 1 + strlen (value) + 1; 38705f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *str = XMALLOC (char, len); 38715f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott sprintf (str, "%s=%s", name, value); 38725f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (putenv (str) != EXIT_SUCCESS) 38735f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 38745f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (str); 38755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 38765f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#endif 38775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 38785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 38795f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 38805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottchar * 38815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_extend_str (const char *orig_value, const char *add, int to_end) 38825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 38835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *new_value; 38845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (orig_value && *orig_value) 38855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 38865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int orig_value_len = strlen (orig_value); 38875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int add_len = strlen (add); 38885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott new_value = XMALLOC (char, add_len + orig_value_len + 1); 38895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (to_end) 38905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 38915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcpy (new_value, orig_value); 38925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcpy (new_value + orig_value_len, add); 38935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 38945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 38955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 38965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcpy (new_value, add); 38975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcpy (new_value + add_len, orig_value); 38985f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 38995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 39005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 39015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 39025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott new_value = xstrdup (add); 39035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 39045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott return new_value; 39055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 39065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39075f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottint 39085f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_split_name_value (const char *arg, char** name, char** value) 39095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 39105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott const char *p; 39115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int len; 39125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (!arg || !*arg) 39135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott return 1; 39145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott p = strchr (arg, (int)'='); 39165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (!p) 39185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott return 1; 39195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *value = xstrdup (++p); 39215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39225f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott len = strlen (arg) - strlen (*value); 39235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *name = XMALLOC (char, len); 39245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strncpy (*name, arg, len-1); 39255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott (*name)[len - 1] = '\0'; 39265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott return 0; 39285f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 39295f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39305f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid 39315f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_opt_process_env_set (const char *arg) 39325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 39335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *name = NULL; 39345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *value = NULL; 39355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (lt_split_name_value (arg, &name, &value) != 0) 39375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 39385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (name); 39395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (value); 39405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); 39415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 39425f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39435f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv (name, value); 39445f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (name); 39455f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (value); 39465f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 39475f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid 39495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_opt_process_env_prepend (const char *arg) 39505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 39515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *name = NULL; 39525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *value = NULL; 39535f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *new_value = NULL; 39545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39555f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (lt_split_name_value (arg, &name, &value) != 0) 39565f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 39575f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (name); 39585f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (value); 39595f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); 39605f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 39615f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott new_value = lt_extend_str (getenv (name), value, 0); 39635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv (name, new_value); 39645f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (new_value); 39655f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (name); 39665f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (value); 39675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 39685f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39695f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid 39705f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_opt_process_env_append (const char *arg) 39715f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 39725f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *name = NULL; 39735f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *value = NULL; 39745f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *new_value = NULL; 39755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39765f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (lt_split_name_value (arg, &name, &value) != 0) 39775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 39785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (name); 39795f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (value); 39805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); 39815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 39825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott new_value = lt_extend_str (getenv (name), value, 1); 39845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv (name, new_value); 39855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (new_value); 39865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (name); 39875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (value); 39885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 39895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid 39915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_update_exe_path (const char *name, const char *value) 39925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 39935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 39945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott (name ? name : "<NULL>"), 39955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott (value ? value : "<NULL>"))); 39965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 39975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (name && *name && value && *value) 39985f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 39995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *new_value = lt_extend_str (getenv (name), value, 0); 40005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* some systems can't cope with a ':'-terminated path #' */ 40015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int len = strlen (new_value); 40025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 40035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 40045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott new_value[len-1] = '\0'; 40055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 40065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv (name, new_value); 40075f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (new_value); 40085f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 40095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 40105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 40115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid 40125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_update_lib_path (const char *name, const char *value) 40135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 40145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 40155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott (name ? name : "<NULL>"), 40165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott (value ? value : "<NULL>"))); 40175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 40185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (name && *name && value && *value) 40195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 40205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *new_value = lt_extend_str (getenv (name), value, 0); 40215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv (name, new_value); 40225f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (new_value); 40235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 40245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 40255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 40265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 40274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 40284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 40294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# end: func_emit_cwrapperexe_src 4030893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_link arg... 40324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_link () 40334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 40344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 40354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 40365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 40374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # It is impossible to link a dll without this setting, and 40384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # we shouldn't force the makefile maintainer to figure out 40394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # which system we are compiling for in order to pass an extra 40404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # flag for every libtool invocation. 40414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # allow_undefined=no 4042893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FIXME: Unfortunately, there are problems with the above when trying 40444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # to make a dll which has undefined symbols, in which case not 40454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # even a static library is built. For now, we need to specify 40464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -no-undefined on the libtool link line when we can be certain 40474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # that all symbols are satisfied, otherwise we get a static library. 40484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project allow_undefined=yes 40494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 40504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 40514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project allow_undefined=yes 40524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 40534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 40544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libtool_args=$nonopt 40554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project base_compile="$nonopt $@" 40564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command=$nonopt 40574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command=$nonopt 4058893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_rpath= 40604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_rpath= 40614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_shlibpath= 40624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_shlibpath= 40634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project convenience= 40644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_convenience= 40654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs= 40664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_deplibs= 40674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags= 40684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linker_flags= 40694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dllsearchpath= 40704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_search_path=`pwd` 40714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project inst_prefix_dir= 40724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_inherited_linker_flags= 4073893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project avoid_version=no 40754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles= 40764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles= 40774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlself=no 40784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_dynamic=no 40794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols= 40804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols_regex= 40814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project generated= 40824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs= 40834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ltlibs= 40844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project module=no 40854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project no_install=no 40864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objs= 40874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_objects= 40884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project precious_files_regex= 40894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prefer_static_libs=no 40904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project preload=no 40914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 40924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prevarg= 40934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release= 40944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 40954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xrpath= 40964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project perm_rpath= 40974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project temp_rpath= 40984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project thread_safe=no 40994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vinfo= 41004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vinfo_number=no 41014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project weak_libs= 41024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project single_module="${wl}-single_module" 41034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_infer_tag $base_compile 4104893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 41054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need to know -static, to get the right output filenames. 41064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg 41074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 41084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 41094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared) 41104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_libtool_libs" != yes && \ 41114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_configuration "can not build a shared library" 41124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=no 41134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 41144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 41154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -all-static | -static | -static-libtool-libs) 41164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 41174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -all-static) 41184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 41194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "complete static linking is impossible in this configuration" 41204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 41214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$link_static_flag"; then 41224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopen_self=$dlopen_self_static 41234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 41244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prefer_static_libs=yes 41254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 41264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static) 41274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_flag" && test -n "$link_static_flag"; then 41284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopen_self=$dlopen_self_static 41294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 41304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prefer_static_libs=built 41314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 41324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static-libtool-libs) 41334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_flag" && test -n "$link_static_flag"; then 41344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopen_self=$dlopen_self_static 41354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 41364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prefer_static_libs=yes 41374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 41384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 41394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 41404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 41414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 41424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 41434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 41444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 4145893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 41464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # See if our shared archives depend on static archives. 41474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$old_archive_from_new_cmds" && build_old_libs=yes 4148893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 41494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Go through the arguments, transforming them on the way. 41504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test "$#" -gt 0; do 41514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$1" 41524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 41534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 41544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project qarg=$func_quote_for_eval_unquoted_result 41554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append libtool_args " $func_quote_for_eval_result" 4156893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 41574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the previous option needs an argument, assign it. 41584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$prev"; then 41594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $prev in 41604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output) 41614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " @OUTPUT@" 41624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " @OUTPUT@" 41634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 41644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 4165893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 41664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $prev in 41674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles|dlprefiles) 41684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$preload" = no; then 41694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add the symbol object into the linking commands. 41704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " @SYMFILE@" 41714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " @SYMFILE@" 41724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project preload=yes 41734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 41744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 41754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la | *.lo) ;; # We handle these cases below. 41764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project force) 41774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$dlself" = no; then 41784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlself=needless 41794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_dynamic=yes 41804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 41814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 41824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 41834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 41844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project self) 41854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlprefiles; then 41864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlself=yes 41874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 41884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlself=yes 41894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 41904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlself=needless 41914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_dynamic=yes 41924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 41934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 41944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 41954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 41964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 41974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlfiles; then 41984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles="$dlfiles $arg" 41994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 42004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$dlprefiles $arg" 42014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 42024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 42034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 42044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 42054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 42064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 42074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project expsyms) 42084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols="$arg" 42094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -f "$arg" \ 42104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project || func_fatal_error "symbol file \`$arg' does not exist" 42114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 42124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 42134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 42144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project expsyms_regex) 42154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols_regex="$arg" 42164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 42174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 42184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 42194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project framework) 42204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 42214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-darwin*) 42224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$deplibs " in 42234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $qarg.ltframework "*) ;; 42244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 42254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 42264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 42274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 42284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 42294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 42304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 42314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 42324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project inst_prefix) 42334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project inst_prefix_dir="$arg" 42344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 42354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 42364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 42374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objectlist) 42384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$arg"; then 42394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_arg=$arg 42404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project moreargs= 42414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for fil in `cat "$save_arg"` 42424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 42434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# moreargs="$moreargs $fil" 42444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$fil 42454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A libtool-controlled object. 4246893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 42474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that this really is a libtool object. 42484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_lalib_unsafe_p "$arg"; then 42494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object= 42504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object= 4251893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 42524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Read the .lo file 42534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$arg" 4254893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 42554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_object" || 42564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$non_pic_object" || 42574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$pic_object" = none && 42584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$non_pic_object" = none; then 42594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find name of object for \`$arg'" 42604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4261893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 42624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract subdirectory from the argument. 42634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$arg" "/" "" 42644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xdir="$func_dirname_result" 4265893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 42664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pic_object" != none; then 42674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepend the subdirectory the object is found in. 42684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object="$xdir$pic_object" 4269893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 42704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlfiles; then 42714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 42724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles="$dlfiles $pic_object" 42734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 42744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 42754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 42764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If libtool objects are unsupported, then we need to preload. 42774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=dlprefiles 42784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 42794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4280893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 42814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # CHECK ME: I think I busted this. -Ossama 42824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlprefiles; then 42834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Preload the old-style object. 42844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$dlprefiles $pic_object" 42854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 42864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4287893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 42884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A PIC object. 42894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append libobjs " $pic_object" 42904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$pic_object" 42914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4292893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 42934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Non-PIC object. 42944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$non_pic_object" != none; then 42954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepend the subdirectory the object is found in. 42964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object="$xdir$non_pic_object" 4297893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 42984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A standard non-PIC object 42994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 43004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_object" || test "$pic_object" = none ; then 43014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$non_pic_object" 43024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 43034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 43044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the PIC object exists, use it instead. 43054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # $xdir was prepended to $pic_object above. 43064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object="$pic_object" 43074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 43084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 43094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 43104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only an error if not doing a dry-run. 43114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $opt_dry_run; then 43124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract subdirectory from the argument. 43134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$arg" "/" "" 43144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xdir="$func_dirname_result" 43154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 43164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lo2o "$arg" 43174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object=$xdir$objdir/$func_lo2o_result 43184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object=$xdir$func_lo2o_result 43194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append libobjs " $pic_object" 43204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 43214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 43224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$arg' is not a valid libtool object" 43234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 43244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 43254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 43264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 43274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "link input file \`$arg' does not exist" 43284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 43294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$save_arg 43304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 43314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 4332893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 43334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project precious_regex) 43344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project precious_files_regex="$arg" 43354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 43364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 43374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 43384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release) 43394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release="-$arg" 43404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 43414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 43424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 43434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath | xrpath) 43444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need an absolute path. 43454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 43464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) ;; 43474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 43484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "only absolute run-paths are allowed" 43494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4350893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 43514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = rpath; then 43524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$rpath " in 43534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $arg "*) ;; 43544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) rpath="$rpath $arg" ;; 43554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 43564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 43574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$xrpath " in 43584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $arg "*) ;; 43594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) xrpath="$xrpath $arg" ;; 43604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 43614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 43624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 43634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 43644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 43654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shrext) 43664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shrext_cmds="$arg" 43674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 43684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 43694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 43704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project weak) 43714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project weak_libs="$weak_libs $arg" 43724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 43734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 43744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 43754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xcclinker) 43764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linker_flags="$linker_flags $qarg" 43774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags $qarg" 43784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 43794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $qarg" 43804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $qarg" 43814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 43824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 43834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xcompiler) 43844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags $qarg" 43854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 43864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $qarg" 43874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $qarg" 43884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 43894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 43904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xlinker) 43914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linker_flags="$linker_flags $qarg" 43924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags $wl$qarg" 43934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 43944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $wl$qarg" 43954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $wl$qarg" 43964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 43974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 43984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 43994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$prev=\"\$arg\"" 44004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 44014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 4402893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 4403893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 44044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # test -n "$prev" 4405893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 44064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prevarg="$arg" 4407893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 44084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 44094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -all-static) 44104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$link_static_flag"; then 44114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # See comment for -static flag below, for more details. 44124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $link_static_flag" 44134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $link_static_flag" 44144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 44154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 44164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4417893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 44184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -allow-undefined) 44194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FIXME: remove this flag sometime in the future. 44204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`-allow-undefined' must not be used because it is the default" 44214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4422893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 44234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -avoid-version) 44244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project avoid_version=yes 44254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 44264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 44284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlopen) 44294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=dlfiles 44304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 44314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 44334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlpreopen) 44344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=dlprefiles 44354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 44364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 44384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -export-dynamic) 44394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_dynamic=yes 44404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 44414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 44434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -export-symbols | -export-symbols-regex) 44444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 44454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "more than one -exported-symbols argument is not allowed" 44464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 44474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$arg" = "X-export-symbols"; then 44484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=expsyms 44494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 44504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=expsyms_regex 4451893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 44524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 44534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 44554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -framework) 44564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=framework 44574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 44584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 44604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -inst-prefix-dir) 44614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=inst_prefix 44624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 44634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 44654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 44664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # so, if we see these flags be careful not to treat them like -L 44674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L[A-Z][A-Z]*:*) 44684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $with_gcc/$host in 44694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project no/*-*-irix* | /*-*-irix*) 44704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 44714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 44724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 44744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 44754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 44774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) 44784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-L' '' "$arg" 44794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir=$func_stripname_result 44805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -z "$dir"; then 44815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test "$#" -gt 0; then 44825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_fatal_error "require no space between \`-L' and \`$1'" 44835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 44845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_fatal_error "need path for \`-L' option" 44855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 44865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 44874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need an absolute path. 44884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $dir in 44894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) ;; 44904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 44914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir=`cd "$dir" && pwd` 44924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$absdir" && \ 44934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot determine absolute directory name of \`$dir'" 44944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$absdir" 44954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 44974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$deplibs " in 44984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -L$dir "*) ;; 44994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 45004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplibs -L$dir" 45014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_search_path="$lib_search_path $dir" 45024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 45034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 4504893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $host in 45055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 45064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` 4507893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case :$dllsearchpath: in 45084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$dir:"*) ;; 45095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ::) dllsearchpath=$dir;; 45104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) dllsearchpath="$dllsearchpath:$dir";; 4511893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 4512893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case :$dllsearchpath: in 4513893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *":$testbindir:"*) ;; 45145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ::) dllsearchpath=$testbindir;; 4515893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) dllsearchpath="$dllsearchpath:$testbindir";; 4516893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 4517893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 4518893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 45194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 45204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4521893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 45234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 45244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 45255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) 45264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # These systems don't actually have a C or math library (as such) 45274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 45284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 45294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-os2*) 45304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # These systems don't actually have a C library (as such) 45314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$arg" = "X-lc" && continue 45324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 45334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do not include libc due to us having libc/libc_r. 45354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$arg" = "X-lc" && continue 45364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 45374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-rhapsody* | *-*-darwin1.[012]) 45384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Rhapsody C and math libraries are in the System framework 45394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplibs System.ltframework" 45404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 45414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 45424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sco3.2v5* | *-*-sco5v6*) 45434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Causes problems with __ctype 45444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$arg" = "X-lc" && continue 45454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 45464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 45474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Compiler inserts libc in the correct place for threads to work 45484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$arg" = "X-lc" && continue 45494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4550893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 45514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "X$arg" = "X-lc_r"; then 45524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 45534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 45544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do not include libc_r directly, use -pthread flag. 45554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 45564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 45574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 4558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 45594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplibs $arg" 45604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 45614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4562893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -module) 45644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project module=yes 45654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 45664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4567893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Tru64 UNIX uses -model [arg] to determine the layout of C++ 45694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # classes, name mangling, and exception handling. 45704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Darwin uses the -arch flag to determine output architecture. 45714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -model|-arch|-isysroot) 45724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags $arg" 45734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 45744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 45754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=xcompiler 45764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 45774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4578893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 45804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags $arg" 45814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 45824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 45834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$new_inherited_linker_flags " in 45844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $arg "*) ;; 45854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 45864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 45874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 45884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4589893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -multi_module) 45914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project single_module="${wl}-multi_module" 45924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 45934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4594893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-fast-install) 45964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fast_install=no 45974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 45984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4599893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-install) 46014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 46025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 46034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The PATH hackery in wrapper scripts is required on Windows 46044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # and Darwin in order for the loader to find any dlls it needs. 46054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-no-install' is ignored for $host" 46064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "assuming \`-no-fast-install' instead" 46074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fast_install=no 46084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 46094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) no_install=yes ;; 46104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 46114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4613893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-undefined) 46154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project allow_undefined=no 46164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4618893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -objectlist) 46204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=objectlist 46214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4623893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -o) prev=output ;; 4625893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -precious-files-regex) 46274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=precious_regex 46284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4630893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -release) 46324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=release 46334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4635893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -rpath) 46374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=rpath 46384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4640893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R) 46424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=xrpath 46434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4645893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R*) 46474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-R' '' "$arg" 46484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir=$func_stripname_result 46494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need an absolute path. 46504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $dir in 46514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) ;; 46524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 46534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "only absolute run-paths are allowed" 46544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 46554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 46564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$xrpath " in 46574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $dir "*) ;; 46584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) xrpath="$xrpath $dir" ;; 46594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 46604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4662893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared) 46644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The effects of -shared are defined in a previous loop. 46654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4667893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shrext) 46694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=shrext 46704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4672893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static | -static-libtool-libs) 46744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The effects of -static are defined in a previous loop. 46754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We used to do the same as -all-static on platforms that 46764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # didn't have a PIC flag, but the assumption that the effects 46774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # would be equivalent was wrong. It would break on at least 46784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Digital Unix and AIX. 46794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4681893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -thread-safe) 46834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project thread_safe=yes 46844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4686893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -version-info) 46884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=vinfo 46894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4691893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -version-number) 46934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=vinfo 46944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vinfo_number=yes 46954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 46964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4697893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -weak) 46994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=weak 47004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 47014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4702893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Wc,*) 47044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-Wc,' '' "$arg" 47054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project args=$func_stripname_result 47064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg= 47074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS=',' 47084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for flag in $args; do 47094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 47104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$flag" 47114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$arg $wl$func_quote_for_eval_result" 47124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags $func_quote_for_eval_result" 47134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 47144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 47154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname ' ' '' "$arg" 47164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$func_stripname_result 47174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4718893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Wl,*) 47204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-Wl,' '' "$arg" 47214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project args=$func_stripname_result 47224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg= 47234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS=',' 47244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for flag in $args; do 47254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 47264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$flag" 47274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$arg $wl$func_quote_for_eval_result" 47284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 47294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linker_flags="$linker_flags $func_quote_for_eval_result" 47304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 47314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 47324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname ' ' '' "$arg" 47334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$func_stripname_result 47344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4735893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Xcompiler) 47374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=xcompiler 47384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 47394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4740893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Xlinker) 47424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=xlinker 47434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 47444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4745893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -XCClinker) 47474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=xcclinker 47484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 47494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4750893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -msg_* for osf cc 47524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -msg_*) 47534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 47544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$func_quote_for_eval_result" 47554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4756893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 47584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -r[0-9][0-9]* specifies the processor on the SGI compiler 47594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 47604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # +DA*, +DD* enable 64-bit mode on the HP compiler 47614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -q* pass through compiler args for the IBM compiler 47624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -m*, -t[45]*, -txscale* pass through architecture-specific 47634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # compiler args for GCC 47644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -F/path gives path to uninstalled frameworks, gcc on darwin 47654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 47664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # @file GCC response files 47674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 47684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 47694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 47704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$func_quote_for_eval_result" 47714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 47724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 47734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags $arg" 47744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 47754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4776893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Some other compiler flag. 47784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -* | +*) 47794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 47804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$func_quote_for_eval_result" 47814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4782893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$objext) 47844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A standard object. 47854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objs="$objs $arg" 47864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4787893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) 47894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A libtool-controlled object. 4790893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that this really is a libtool object. 47924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_lalib_unsafe_p "$arg"; then 47934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object= 47944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object= 4795893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Read the .lo file 47974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$arg" 4798893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_object" || 48004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$non_pic_object" || 48014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$pic_object" = none && 48024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$non_pic_object" = none; then 48034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find name of object for \`$arg'" 48044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4805893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract subdirectory from the argument. 48074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$arg" "/" "" 48084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xdir="$func_dirname_result" 4809893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pic_object" != none; then 48114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepend the subdirectory the object is found in. 48124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object="$xdir$pic_object" 4813893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlfiles; then 48154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 48164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles="$dlfiles $pic_object" 48174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 48184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 48194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 48204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If libtool objects are unsupported, then we need to preload. 48214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=dlprefiles 48224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 48234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4824893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # CHECK ME: I think I busted this. -Ossama 48264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlprefiles; then 48274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Preload the old-style object. 48284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$dlprefiles $pic_object" 48294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 48304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4831893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A PIC object. 48334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append libobjs " $pic_object" 48344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$pic_object" 48354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4836893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Non-PIC object. 48384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$non_pic_object" != none; then 48394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepend the subdirectory the object is found in. 48404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object="$xdir$non_pic_object" 4841893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A standard non-PIC object 48434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 48444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_object" || test "$pic_object" = none ; then 48454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$non_pic_object" 48464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4847893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 48484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the PIC object exists, use it instead. 48494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # $xdir was prepended to $pic_object above. 48504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object="$pic_object" 48514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 4852893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 4853893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 48544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only an error if not doing a dry-run. 48554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $opt_dry_run; then 48564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract subdirectory from the argument. 48574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$arg" "/" "" 48584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xdir="$func_dirname_result" 48594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 48604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lo2o "$arg" 48614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object=$xdir$objdir/$func_lo2o_result 48624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object=$xdir$func_lo2o_result 48634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append libobjs " $pic_object" 48644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 48654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 48664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$arg' is not a valid libtool object" 48674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4868893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 48694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4870893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$libext) 48724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # An archive. 48734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplibs $arg" 48744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_deplibs="$old_deplibs $arg" 48754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 48764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4877893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 48794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A libtool-controlled library. 4880893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlfiles; then 48824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This library was specified with -dlopen. 48834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles="$dlfiles $arg" 48844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 48854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$prev" = dlprefiles; then 48864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The library was specified with -dlpreopen. 48874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$dlprefiles $arg" 48884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 48894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 48904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplibs $arg" 48914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 48924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 48934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 4894893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Some other compiler argument. 48964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 48974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Unknown arguments in both finalize_command and compile_command need 48984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # to be aesthetically quoted because they are evaled later. 48994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 49004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$func_quote_for_eval_result" 49014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 49024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac # arg 4903893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now actually substitute the argument into the commands. 49054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$arg"; then 49064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 49074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 4908893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 49094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # argument parsing loop 4910893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$prev" && \ 49124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "the \`$prevarg' option requires an argument" 4913893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 49154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval arg=\"$export_dynamic_flag_spec\" 49164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 49174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 49184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4919893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs= 49214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # calculate the name of the file, without its directory 49224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$output" 49234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project outputname="$func_basename_result" 49244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs_save="$libobjs" 4925893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath_var"; then 49274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # get the directories listed in $shlibpath_var 49284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 49294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 49304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shlib_search_path= 49314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 49324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 49334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 4934893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$output" "/" "" 49364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output_objdir="$func_dirname_result$objdir" 49374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Create the object directory. 49384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mkdir_p "$output_objdir" 4939893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Determine the type of output 49414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $output in 49424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project "") 49434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify an output file" 49444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 49454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$libext) linkmode=oldlib ;; 49464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo | *.$objext) linkmode=obj ;; 49474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) linkmode=lib ;; 49484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) linkmode=prog ;; # Anything else should be a program. 49494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 4950893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project specialdeplibs= 4952893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libs= 49544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Find all interdependent deplibs by searching for libraries 49554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # that are linked more than once (e.g. -la -lb -la) 49564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $deplibs; do 49574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $opt_duplicate_deps ; then 49584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$libs " in 49594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 49604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 49614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 49624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libs="$libs $deplib" 49634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 4964893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib; then 49664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libs="$predeps $libs $compiler_lib_search_path $postdeps" 4967893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Compute libraries that are listed more than once in $predeps 49694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # $postdeps and mark them as special (i.e., whose duplicates are 49704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # not to be eliminated). 49714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pre_post_deps= 49724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $opt_duplicate_compiler_generated_deps; then 49734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for pre_post_dep in $predeps $postdeps; do 49744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$pre_post_deps " in 49754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 49764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 49774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pre_post_deps="$pre_post_deps $pre_post_dep" 49784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 49794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 49804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pre_post_deps= 49814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4982893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs= 49844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs= 49854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib_search_path= 49864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project need_relink=no # whether we're linking any uninstalled libtool libraries 49874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_deplibs= # not-installed libtool libraries 49884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_path= # paths that contain not-installed libtool libraries 4989893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 49904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $linkmode in 49914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib) 49924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project passes="conv dlpreopen link" 49934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file in $dlfiles $dlprefiles; do 49944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 49954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) ;; 49964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 49974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 49984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 49994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 50004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 50014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 50024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prog) 50034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs= 50044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs= 50054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project alldeplibs=no 50064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlfiles= 50074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles= 50084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project passes="conv scan dlopen dlpreopen link" 50094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 50104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) passes="conv" 50114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 50124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 5013893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 50144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for pass in $passes; do 50154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The preopen pass in lib mode reverses $deplibs; put it back here 50164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # so that -L comes before libs that need it for instance... 50174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "lib,link"; then 50184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ## FIXME: Find the place where the list is rebuilt in the wrong 50194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ## order, and fix it there properly 50204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_deplibs= 50214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $deplibs; do 50224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_deplibs="$deplib $tmp_deplibs" 50234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 50244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$tmp_deplibs" 50254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5026893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 50274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "lib,link" || 50284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$linkmode,$pass" = "prog,scan"; then 50294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libs="$deplibs" 50304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs= 50314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 50324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog; then 50334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $pass in 50344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopen) libs="$dlfiles" ;; 50354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlpreopen) libs="$dlprefiles" ;; 50364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 50374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 50384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 50394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "lib,dlpreopen"; then 50404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Collect and forward deplibs of preopened libtool libs 50414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $dlprefiles; do 50424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Ignore non-libtool-libs 50434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs= 50444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $lib in 50454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) func_source "$lib" ;; 50464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 5047893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 50484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Collect preopened libtool deplibs, except any this library 50494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # has declared as weak libs 50504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 50514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` 50524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $weak_libs " in 50534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib_base "*) ;; 50544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) deplibs="$deplibs $deplib" ;; 50554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 50564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 50574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 50584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libs="$dlprefiles" 50594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 50604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = dlopen; then 50614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Collect dlpreopened libraries 50624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_deplibs="$deplibs" 50634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs= 50644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5065893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 50664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $libs; do 50674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib= 50684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project found=no 50694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 50704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 50714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "prog,link"; then 50724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 50734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 50744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 50754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags $deplib" 50764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib ; then 50774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$new_inherited_linker_flags " in 50784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 50794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 50804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 50814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 50824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 50834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 50844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 50854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 50864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" != lib && test "$linkmode" != prog; then 50874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-l' is ignored for archives/objects" 50884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 50894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 50904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-l' '' "$deplib" 50914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 50924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib; then 50934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 50944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 50954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 50964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 50974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for searchdir in $searchdirs; do 50984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for search_ext in .la $std_shrext .so .a; do 50994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Search the libtool library 51004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib="$searchdir/lib${name}${search_ext}" 51014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$lib"; then 51024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$search_ext" = ".la"; then 51034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project found=yes 51044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 51054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project found=no 51064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 2 51084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 51104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 51114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$found" != yes; then 51124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # deplib doesn't seem to be a libtool library 51134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "prog,link"; then 51144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 51154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 51164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 51174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 51184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 51214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else # deplib is a libtool library 51224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 51234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need to do some special things here, and not later. 51244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 51254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps " in 51264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) 51274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_lalib_p "$lib"; then 51284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project library_names= 51294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_library= 51304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$lib" 51314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for l in $old_library $library_names; do 51324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ll="$l" 51334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 51344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$ll" = "X$old_library" ; then # only static version available 51354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project found=no 51364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$lib" "" "." 51374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ladir="$func_dirname_result" 51384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib=$ladir/$old_library 51394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "prog,link"; then 51404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 51414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 51424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 51434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 51444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 51454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 51474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 51504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) ;; 51514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 51524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; # -l 51554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.ltframework) 51564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "prog,link"; then 51574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 51584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 51594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 51604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 51614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib ; then 51624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$new_inherited_linker_flags " in 51634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 51644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 51654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 51664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 51694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 51704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) 51714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $linkmode in 51724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib) 51734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 51744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$pass" = conv && continue 51754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs="$deplib $newdependency_libs" 51764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-L' '' "$deplib" 51774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib_search_path="$newlib_search_path $func_stripname_result" 51784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 51794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prog) 51804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = conv; then 51814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 51824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 51834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = scan; then 51854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 51864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 51874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 51884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 51894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-L' '' "$deplib" 51914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib_search_path="$newlib_search_path $func_stripname_result" 51924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 51934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 51944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-L' is ignored for archives/objects" 51954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 51964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac # linkmode 51974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 51984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; # -L 51994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R*) 52004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = link; then 52014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-R' '' "$deplib" 52024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir=$func_stripname_result 52034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure the xrpath contains only unique directories. 52044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$xrpath " in 52054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $dir "*) ;; 52064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) xrpath="$xrpath $dir" ;; 52074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 52084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 52104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) lib="$deplib" ;; 52134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$libext) 52144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = conv; then 52154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 52164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $linkmode in 52194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib) 52204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Linking convenience modules into shared libraries is allowed, 52214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # but linking other static libraries is non-portable. 52224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $dlpreconveniencelibs " in 52234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 52244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 52254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project valid_a_lib=no 52264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplibs_check_method in 52274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project match_pattern*) 52284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $deplibs_check_method; shift 52294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 52304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ 52314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project | $EGREP "$match_pattern_regex" > /dev/null; then 52324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project valid_a_lib=yes 52334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pass_all) 52364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project valid_a_lib=yes 52374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 52394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$valid_a_lib" != yes; then 52404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 52414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: Trying to link with static lib archive $deplib." 52424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** I have the capability to make that library automatically link in when" 52434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** you link to this library. But I can only do this if you have a" 52444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** shared version of the library, which you do not appear to have" 52454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** because the file extensions .$libext of this argument makes me believe" 52464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** that it is just a static archive that I should not use here." 52474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 52484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 52494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: Linking the shared library $output against the" 52504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** static library $deplib is not portable!" 52514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 52524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 52554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prog) 52584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" != link; then 52594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 52604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 52614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 52624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 52634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac # linkmode 52674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; # *.$libext 52684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo | *.$objext) 52694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = conv; then 52704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 52714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$linkmode" = prog; then 52724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 52734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If there is no dlopen support or we're linking statically, 52744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # we need to preload. 52754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles="$newdlprefiles $deplib" 52764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 52774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 52784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 52794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlfiles="$newdlfiles $deplib" 52804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project %DEPLIBS%) 52854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project alldeplibs=yes 52864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac # case $deplib 5289893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 52904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$found" = yes || test -f "$lib"; then : 52914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 52924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 52934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5294893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 52954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that this really is a libtool archive. 52964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lalib_unsafe_p "$lib" \ 52974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project || func_fatal_error "\`$lib' is not a valid libtool archive" 5298893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 52994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$lib" "" "." 53004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ladir="$func_dirname_result" 5301893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlname= 53034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopen= 53044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlpreopen= 53054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir= 53064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project library_names= 53074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_library= 53084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project inherited_linker_flags= 53094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the library was installed with an old release of libtool, 53104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # it will not redefine variables installed, or shouldnotlink 53114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project installed=yes 53124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shouldnotlink=no 53134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project avoidtemprpath= 5314893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5315893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Read the .la file 53174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$lib" 53184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 53194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Convert "-framework foo" to "foo.ltframework" 53204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$inherited_linker_flags"; then 53214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` 53224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 53234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_inherited_linker_flags " in 53244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $tmp_inherited_linker_flag "*) ;; 53254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 53264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 53274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 53284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 53304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "lib,link" || 53314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$linkmode,$pass" = "prog,scan" || 53324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test "$linkmode" != prog && test "$linkmode" != lib; }; then 53334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 53344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 53354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5336893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = conv; then 53384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only check for convenience libraries 53394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$lib $deplibs" 53404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$libdir"; then 53414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$old_library"; then 53424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find name of link library for \`$lib'" 53434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # It is a libtool convenience library, so add in its objects. 53454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project convenience="$convenience $ladir/$objdir/$old_library" 53464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_convenience="$old_convenience $ladir/$objdir/$old_library" 53474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$linkmode" != prog && test "$linkmode" != lib; then 53484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$lib' is not a convenience library" 53494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs= 53514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 53524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 53534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $opt_duplicate_deps ; then 53544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$tmp_libs " in 53554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 53564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 53574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs="$tmp_libs $deplib" 53594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 53604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 53614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $pass = conv 5362893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5363893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Get the name of the library we link against. 53654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linklib= 53664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for l in $old_library $library_names; do 53674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linklib="$l" 53684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 53694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$linklib"; then 53704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find name of link library for \`$lib'" 53714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5372893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This library was specified with -dlopen. 53744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = dlopen; then 53754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$libdir"; then 53764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 53774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$dlname" || 53794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$dlopen_support" != yes || 53804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_libtool_libs" = no; then 53814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If there is no dlname, no dlopen support or we're linking 53824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # statically, we need to preload. We also need to preload any 53834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # dependent libraries so libltdl's deplib preloader doesn't 53844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # bomb out in the load deplibs phase. 53854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$dlprefiles $lib $dependency_libs" 53864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 53874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlfiles="$newdlfiles $lib" 53884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 53904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $pass = dlopen 5391893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need an absolute path. 53934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $ladir in 53944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 53954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 53964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project abs_ladir=`cd "$ladir" && pwd` 53974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$abs_ladir"; then 53984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "cannot determine absolute directory name of \`$ladir'" 53994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "passing it literally to the linker, although it might fail" 54004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project abs_ladir="$ladir" 54014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 54024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 54044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$lib" 54054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project laname="$func_basename_result" 5406893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Find the relevant object directory and library name. 54084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$installed" = Xyes; then 54094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "library \`$lib' was moved." 54114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$ladir" 54124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir="$abs_ladir" 54134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir="$abs_ladir" 54144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 54154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$libdir" 54164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir="$libdir" 54174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 54184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 54194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 54204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 54214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$ladir" 54224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir="$abs_ladir" 54234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Remove this search path later 54244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_path="$notinst_path $abs_ladir" 54254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 54264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$ladir/$objdir" 54274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir="$abs_ladir/$objdir" 54284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Remove this search path later 54294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_path="$notinst_path $abs_ladir" 54304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 54314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $installed = yes 54324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname 'lib' '.la' "$laname" 54334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 5434893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This library was specified with -dlpreopen. 54364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = dlpreopen; then 54374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$libdir" && test "$linkmode" = prog; then 54384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 54394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 54404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prefer using a static library (so that no silly _DYNAMIC symbols 54414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # are required to link). 54424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$old_library"; then 54434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles="$newdlprefiles $dir/$old_library" 54444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Keep a list of preopened convenience libraries to check 54454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # that they are being used correctly in the link pass. 54464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libdir" && \ 54474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 54484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Otherwise, use the dlname, so that lt_dlopen finds it. 54494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$dlname"; then 54504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles="$newdlprefiles $dir/$dlname" 54514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 54524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles="$newdlprefiles $dir/$linklib" 54534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 54544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $pass = dlpreopen 5455893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$libdir"; then 54574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Link the convenience library 54584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib; then 54594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$dir/$old_library $deplibs" 54604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$linkmode,$pass" = "prog,link"; then 54614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$dir/$old_library $compile_deplibs" 54624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$dir/$old_library $finalize_deplibs" 54634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 54644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$lib $deplibs" # used for prog,scan pass 54654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 54664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5468893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5469893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog && test "$pass" != link; then 54714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib_search_path="$newlib_search_path $ladir" 54724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$lib $deplibs" 5473893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linkalldeplibs=no 54754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$link_all_deplibs" != no || test -z "$library_names" || 54764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_libtool_libs" = no; then 54774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linkalldeplibs=yes 54784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5479893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs= 54814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 54824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 54834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) func_stripname '-L' '' "$deplib" 54844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib_search_path="$newlib_search_path $func_stripname_result" 54854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 54874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Need to link against all dependency_libs? 54884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkalldeplibs" = yes; then 54894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 54904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 54914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Need to hardcode shared library paths 54924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # or/and link against static libraries 54934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs="$deplib $newdependency_libs" 54944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 54954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $opt_duplicate_deps ; then 54964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$tmp_libs " in 54974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 54984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 54994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 55004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs="$tmp_libs $deplib" 55014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # for deplib 55024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 55034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $linkmode = prog... 5504893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 55054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "prog,link"; then 55064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$library_names" && 55074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { { test "$prefer_static_libs" = no || 55084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$prefer_static_libs,$installed" = "built,yes"; } || 55094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$old_library"; }; then 55104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need to hardcode the library path 55114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 55124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure the rpath contains only unique directories. 55134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$temp_rpath:" in 55144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *"$absdir:"*) ;; 55154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) temp_rpath="$temp_rpath$absdir:" ;; 55164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 55174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5518893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 55194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Hardcode the library path. 55204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Skip directories that are in the system default run-time 55214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # search path. 55224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $sys_lib_dlsearch_path " in 55234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $absdir "*) ;; 55244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 55254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$compile_rpath " in 55264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $absdir "*) ;; 55274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) compile_rpath="$compile_rpath $absdir" 55284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 55294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 55314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $sys_lib_dlsearch_path " in 55324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 55334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 55344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$finalize_rpath " in 55354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 55364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) finalize_rpath="$finalize_rpath $libdir" 55374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 55384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 55404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $linkmode,$pass = prog,link... 5541893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 55424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$alldeplibs" = yes && 55434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test "$deplibs_check_method" = pass_all || 55444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test "$build_libtool_libs" = yes && 55454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$library_names"; }; }; then 55464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We only need to search for static libraries 55474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 55484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 55494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5550893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 55514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_static=no # Whether the deplib will be linked statically 55524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project use_static_libs=$prefer_static_libs 55534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$use_static_libs" = built && test "$installed" = yes; then 55544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project use_static_libs=no 55554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 55564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$library_names" && 55574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test "$use_static_libs" = no || test -z "$old_library"; }; then 55584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 55595f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw* | *cegcc*) 55604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # No point in relinking DLLs because paths are not encoded 55614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_deplibs="$notinst_deplibs $lib" 55624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project need_relink=no 55634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 55654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$installed" = no; then 55664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_deplibs="$notinst_deplibs $lib" 55674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project need_relink=yes 55684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 55694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 55714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This is a shared library 5572893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 55734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Warn about portability, can't link against -module's on some 55744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # systems (darwin). Don't bleat about dlopened modules though! 55754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopenmodule="" 55764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dlpremoduletest in $dlprefiles; do 55774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$dlpremoduletest" = "X$lib"; then 55784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopenmodule="$dlpremoduletest" 55794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 55804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 55814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 55824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 55834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 55844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog; then 55854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: Linking the executable $output against the loadable module" 55864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 55874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: Linking the shared library $output against the loadable module" 55884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 55894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** $linklib is not portable!" 55904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 55914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib && 55924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$hardcode_into_libs" = yes; then 55934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Hardcode the library path. 55944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Skip directories that are in the system default run-time 55954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # search path. 55964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $sys_lib_dlsearch_path " in 55974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $absdir "*) ;; 55984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 55994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$compile_rpath " in 56004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $absdir "*) ;; 56014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) compile_rpath="$compile_rpath $absdir" 56024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 56034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 56044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 56054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $sys_lib_dlsearch_path " in 56064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 56074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 56084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$finalize_rpath " in 56094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 56104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) finalize_rpath="$finalize_rpath $libdir" 56114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 56124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 56134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 56144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5615893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$old_archive_from_expsyms_cmds"; then 56174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # figure out the soname 56184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $library_names 56194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 56204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project realname="$1" 56214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 56224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=`eval "\\$ECHO \"$libname_spec\""` 56234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # use dlname if we got it. it's perfectly good, no? 56244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlname"; then 56254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project soname="$dlname" 56264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$soname_spec"; then 56274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # bleh windows 56284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 56295f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | mingw* | *cegcc*) 56304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 56314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=$func_arith_result 56324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="-$major" 56334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 56344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 56354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval soname=\"$soname_spec\" 56364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 56374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project soname="$realname" 56384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5639893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make a new name for the extract_expsyms_cmds to use 56414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project soroot="$soname" 56424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$soroot" 56434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project soname="$func_basename_result" 56444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname 'lib' '.dll' "$soname" 56454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib=libimp-$func_stripname_result.a 5646893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the library has no export list, then create one now 56484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$output_objdir/$soname-def"; then : 56494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 56504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "extracting exported symbol list from \`$soname'" 56514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 56524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5653893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Create $newlib 56554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$output_objdir/$newlib"; then :; else 56564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "generating import library for \`$soname'" 56574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 56584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 56594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # make sure the library variables are pointing to the new library 56604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir=$output_objdir 56614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linklib=$newlib 56624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # test -n "$old_archive_from_expsyms_cmds" 5663893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog || test "$mode" != relink; then 56654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_shlibpath= 56664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir= 56674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add= 56684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_linked=yes 56694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $hardcode_action in 56704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project immediate | unsupported) 56714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_direct" = no; then 56724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$dir/$linklib" 56734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 56744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 56754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sysv4*uw2*) add_dir="-L$dir" ;; 56764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 56774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-unixware7*) add_dir="-L$dir" ;; 56784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-darwin* ) 56794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # if the lib is a (non-dlopened) module then we can not 56804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # link against it, someone is ignoring the earlier warnings 56814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if /usr/bin/file -L $add 2> /dev/null | 56824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP ": [^:]* bundle" >/dev/null ; then 56834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$dlopenmodule" != "X$lib"; then 56844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: lib $linklib is a module, not a shared library" 56854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$old_library" ; then 56864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 56874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** And there doesn't seem to be a static archive available" 56884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** The link will probably fail, sorry" 56894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 56904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$dir/$old_library" 56914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 56924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$old_library"; then 56934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$dir/$old_library" 56944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 56954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 56964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 56974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_minus_L" = no; then 56984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 56994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sunos*) add_shlibpath="$dir" ;; 57004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 57014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir="-L$dir" 57024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 57034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_shlibpath_var" = no; then 57044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_shlibpath="$dir" 57054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 57064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 57074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_linked=no 57084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 57094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 57104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink) 57114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_direct" = yes && 57124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$hardcode_direct_absolute" = no; then 57134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$dir/$linklib" 57144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_minus_L" = yes; then 57154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir="-L$dir" 57164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Try looking first in the location we're being installed to. 57174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$inst_prefix_dir"; then 57184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $libdir in 57194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]*) 57204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir="$add_dir -L$inst_prefix_dir$libdir" 57214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 57224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 57234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 57244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 57254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_shlibpath_var" = yes; then 57264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_shlibpath="$dir" 57274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 57284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 57294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_linked=no 57304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 57314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 57324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) lib_linked=no ;; 57334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 5734893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$lib_linked" != yes; then 57364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_configuration "unsupported hardcode properties" 57374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5738893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$add_shlibpath"; then 57404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case :$compile_shlibpath: in 57414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$add_shlibpath:"*) ;; 57424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 57434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 57444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 57454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog; then 57464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 57474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add" && compile_deplibs="$add $compile_deplibs" 57484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 57494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add_dir" && deplibs="$add_dir $deplibs" 57504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add" && deplibs="$add $deplibs" 57514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_direct" != yes && 57524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$hardcode_minus_L" != yes && 57534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$hardcode_shlibpath_var" = yes; then 57544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case :$finalize_shlibpath: in 57554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$libdir:"*) ;; 57564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 57584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 57594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 57604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5761893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog || test "$mode" = relink; then 57634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_shlibpath= 57644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir= 57654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add= 57664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Finalize command for both is simple: just hardcode it. 57674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_direct" = yes && 57684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$hardcode_direct_absolute" = no; then 57694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$libdir/$linklib" 57704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_minus_L" = yes; then 57714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir="-L$libdir" 57724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 57734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_shlibpath_var" = yes; then 57744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case :$finalize_shlibpath: in 57754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$libdir:"*) ;; 57764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 57774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 57784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 57794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_automatic" = yes; then 57804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$inst_prefix_dir" && 57814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -f "$inst_prefix_dir$libdir/$linklib" ; then 57824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$inst_prefix_dir$libdir/$linklib" 57834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 57844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$libdir/$linklib" 57854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 57864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 57874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We cannot seem to hardcode it, guess we'll fake it. 57884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir="-L$libdir" 57894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Try looking first in the location we're being installed to. 57904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$inst_prefix_dir"; then 57914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $libdir in 57924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]*) 57934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir="$add_dir -L$inst_prefix_dir$libdir" 57944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 57954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 57964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 57974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 57984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5799893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog; then 58014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 58024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 58034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 58044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add_dir" && deplibs="$add_dir $deplibs" 58054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add" && deplibs="$add $deplibs" 58064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 58074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 58084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$linkmode" = prog; then 58094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Here we assume that one of hardcode_direct or hardcode_minus_L 58104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # is not unsupported. This is valid on all known static and 58114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # shared platforms. 58124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_direct" != unsupported; then 58134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$old_library" && linklib="$old_library" 58144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$dir/$linklib $compile_deplibs" 58154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$dir/$linklib $finalize_deplibs" 58164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 58174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="-l$name -L$dir $compile_deplibs" 58184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="-l$name -L$dir $finalize_deplibs" 58194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 58204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$build_libtool_libs" = yes; then 58214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Not a shared library 58224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$deplibs_check_method" != pass_all; then 58234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We're trying link a shared library against a static one 58244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # but the system doesn't support it. 5825893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Just print a warning and add the library to dependency_libs so 58274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # that the program can be linked against the static library. 58284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 58294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: This system can not link to static lib archive $lib." 58304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** I have the capability to make that library automatically link in when" 58314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** you link to this library. But I can only do this if you have a" 58324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** shared version of the library, which you do not appear to have." 58334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$module" = yes; then 58344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** But as you try to build a module library, libtool will still create " 58354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** a static module, that should work as long as the dlopening application" 58364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." 58374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$global_symbol_pipe"; then 58384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 58394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** However, this would only work if libtool was able to extract symbol" 58404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 58414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** not find such a program. So, this module is probably useless." 58424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 58434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 58444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = no; then 58454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=module 58464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 58474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 58484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 58494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 58504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 58514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 58524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$dir/$old_library $deplibs" 58534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_static=yes 58544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 58554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # link shared/static library? 5856893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib; then 58584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dependency_libs" && 58594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test "$hardcode_into_libs" != yes || 58604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_old_libs" = yes || 58614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$link_static" = yes; }; then 58624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract -R from dependency_libs 58634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project temp_deplibs= 58644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $dependency_libs; do 58654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $libdir in 58664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R*) func_stripname '-R' '' "$libdir" 58674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project temp_xrpath=$func_stripname_result 58684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $xrpath " in 58694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $temp_xrpath "*) ;; 58704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) xrpath="$xrpath $temp_xrpath";; 58714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac;; 58724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) temp_deplibs="$temp_deplibs $libdir";; 58734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 58744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 58754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs="$temp_deplibs" 58764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 58774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 58784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib_search_path="$newlib_search_path $absdir" 58794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Link against this library 58804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 58814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # ... and its dependency_libs 58824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs= 58834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 58844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs="$deplib $newdependency_libs" 58854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $opt_duplicate_deps ; then 58864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$tmp_libs " in 58874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 58884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 58894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 58904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs="$tmp_libs $deplib" 58914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 58924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 58934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$link_all_deplibs" != no; then 58944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add the search paths of all dependency libraries 58954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 58964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 58974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) path="$deplib" ;; 58984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 58994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$deplib" "" "." 59004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$func_dirname_result" 59014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need an absolute path. 59024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $dir in 59034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 59044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 59054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir=`cd "$dir" && pwd` 59064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$absdir"; then 59074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "cannot determine absolute directory name of \`$dir'" 59084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir="$dir" 59094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 59114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 59124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $GREP "^installed=no" $deplib > /dev/null; then 59134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 59144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-darwin*) 59154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project depdepl= 59164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 59174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$deplibrary_names" ; then 59184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for tmp in $deplibrary_names ; do 59194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project depdepl=$tmp 59204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 59214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$absdir/$objdir/$depdepl" ; then 59224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project depdepl="$absdir/$objdir/$depdepl" 59235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$darwin_install_name"; then 59255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 59264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 59284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 59294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project path= 59304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 59334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 59344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project path="-L$absdir/$objdir" 59354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 59364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 59374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 59384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 59394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libdir" && \ 59404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$deplib' is not a valid libtool archive" 59414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$absdir" != "$libdir" && \ 59424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`$deplib' seems to be moved" 59434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 59444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project path="-L$absdir" 59454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 59474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 59484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $deplibs " in 59494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $path "*) ;; 59504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) deplibs="$path $deplibs" ;; 59514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 59524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 59534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # link_all_deplibs != no 59544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # linkmode = lib 59554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # for deplib in $libs 59564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = link; then 59574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = "prog"; then 59584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 59594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 59604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 59614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 59624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs="$newdependency_libs" 59654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = dlpreopen; then 59664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Link the dlpreopened libraries before other libraries 59674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $save_deplibs; do 59684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 59694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 59704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" != dlopen; then 59724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" != conv; then 59734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure lib_search_path contains only unique directories. 59744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_search_path= 59754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dir in $newlib_search_path; do 59764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$lib_search_path " in 59774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $dir "*) ;; 59784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) lib_search_path="$lib_search_path $dir" ;; 59794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 59804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 59814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib_search_path= 59824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 59844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" != "prog,link"; then 59854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vars="deplibs" 59864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 59874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vars="compile_deplibs finalize_deplibs" 59884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for var in $vars dependency_libs; do 59904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add libraries to $var in reverse order 59914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval tmp_libs=\"\$$var\" 59924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_libs= 59934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $tmp_libs; do 59944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FIXME: Pedantically, this is the right thing to do, so 59954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # that some nasty dependency loop isn't accidentally 59964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # broken: 59974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project #new_libs="$deplib $new_libs" 59984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Pragmatically, this seems to cause very few problems in 59994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # practice: 60004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 60014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) new_libs="$deplib $new_libs" ;; 60024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R*) ;; 60034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 60044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # And here is the reason: when a library appears more 60054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # than once as an explicit dependence of a library, or 60064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # is implicitly linked in more than once by the 60074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # compiler, it is considered special, and multiple 60084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # occurrences thereof are not removed. Compare this 60094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # with having the same library being listed as a 60104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # dependency of multiple other libraries: in this case, 60114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # we know (pedantically, we assume) the library does not 60124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # need to be listed more than once, so we keep only the 60134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # last copy. This is not always right, but it is rare 60144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # enough that we require users that really mean to play 60154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # such unportable linking tricks to link the library 60164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # using -Wl,-lname, so that libtool does not consider it 60174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # for duplicate removal. 60184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $specialdeplibs " in 60194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) new_libs="$deplib $new_libs" ;; 60204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 60214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_libs " in 60224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 60234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) new_libs="$deplib $new_libs" ;; 60244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 60254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 60264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 60274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 60284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 60294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 60304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs= 60314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $new_libs; do 60324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 60334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) 60344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $tmp_libs " in 60354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 60364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) tmp_libs="$tmp_libs $deplib" ;; 60374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 60384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 60394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) tmp_libs="$tmp_libs $deplib" ;; 60404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 60414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 60424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval $var=\"$tmp_libs\" 60434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # for var 60444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 60454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Last step: remove runtime libs from dependency_libs 60464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # (they stay in deplibs) 60474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs= 60484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $dependency_libs ; do 60494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps $compiler_lib_search_path " in 60504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $i "*) 60514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project i="" 60524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 60534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 60544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$i" ; then 60554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs="$tmp_libs $i" 60564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 60574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 60584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs=$tmp_libs 60594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # for pass 60604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog; then 60614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles="$newdlfiles" 60624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 60634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog || test "$linkmode" = lib; then 60644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$newdlprefiles" 60654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 60664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 60674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $linkmode in 60684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlib) 60694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 60704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-dlopen' is ignored for archives" 60714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 60724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 60734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $deplibs" in 60744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *\ -l* | *\ -L*) 60754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-l' and \`-L' are ignored for archives" ;; 60764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 60774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 60784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$rpath" && \ 60794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-rpath' is ignored for archives" 60804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 60814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$xrpath" && \ 60824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-R' is ignored for archives" 60834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 60844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$vinfo" && \ 60854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-version-info/-version-number' is ignored for archives" 60864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 60874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$release" && \ 60884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-release' is ignored for archives" 60894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 60904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$export_symbols$export_symbols_regex" && \ 60914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-export-symbols' is ignored for archives" 60924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 60934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now set the variables for building old libraries. 60944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 60954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs="$output" 60964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objs="$objs$old_deplibs" 60974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 60984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 60994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib) 61004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure we only generate libraries of the form `libNAME.la'. 61014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $outputname in 61024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib*) 61034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname 'lib' '.la' "$outputname" 61044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 61054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval shared_ext=\"$shrext_cmds\" 61064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libname=\"$libname_spec\" 61074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 61084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 61094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$module" = no && \ 61104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "libtool library \`$output' must begin with \`lib'" 61114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$need_lib_prefix" != no; then 61134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add the "lib" prefix for modules if required 61144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.la' "$outputname" 61154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 61164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval shared_ext=\"$shrext_cmds\" 61174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libname=\"$libname_spec\" 61184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 61194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.la' "$outputname" 61204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=$func_stripname_result 61214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 61234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 61244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$objs"; then 61264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$deplibs_check_method" != pass_all; then 61274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 61284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 61294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 61304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 61314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** objects $objs is not portable!" 61324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs="$libobjs $objs" 61334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$dlself" != no && \ 61374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-dlopen self' is ignored for libtool libraries" 61384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $rpath 61404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 61414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$#" -gt 1 && \ 61424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "ignoring multiple \`-rpath's for a libtool library" 61434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install_libdir="$1" 61454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs= 61474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$rpath"; then 61484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes; then 61494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Building a libtool convenience library. 61504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Some compilers have problems with a `.al' extension so 61514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # convenience libraries should have the same extension an 61524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # archive normally would. 61534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs="$output_objdir/$libname.$libext $oldlibs" 61544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=convenience 61554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 61564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$vinfo" && \ 61594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 61604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$release" && \ 61624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-release' is ignored for convenience libraries" 61634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 61644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Parse the version information argument. 61664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS=':' 61674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $vinfo 0 0 0 61684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 61694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 61704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$7" && \ 61724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "too many parameters to \`-version-info'" 61734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # convert absolute version numbers to libtool ages 61754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # this retains compatibility with .la files and attempts 61764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # to make the code below a bit more comprehensible 61774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 61784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $vinfo_number in 61794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project yes) 61804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project number_major="$1" 61814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project number_minor="$2" 61824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project number_revision="$3" 61834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # 61844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # There are really only two kinds -- those that 61854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # use the current revision as the major version 61864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # and those that subtract age and use age as 61874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # a minor version. But, then there is irix 61884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # which has an extra 1 added just for fun 61894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # 61904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $version_type in 61914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin|linux|osf|windows|none) 61924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $number_major + $number_minor 61934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project current=$func_arith_result 61944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project age="$number_minor" 61954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project revision="$number_revision" 61964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 61974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project freebsd-aout|freebsd-elf|sunos) 61984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project current="$number_major" 61994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project revision="$number_minor" 62004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project age="0" 62014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project irix|nonstopux) 62034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $number_major + $number_minor 62044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project current=$func_arith_result 62054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project age="$number_minor" 62064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project revision="$number_minor" 62074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_irix_increment=no 62084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 62104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project no) 62124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project current="$1" 62134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project revision="$2" 62144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project age="$3" 62154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 62174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check that each of the things are valid numbers. 62194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $current in 62204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 62214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 62224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "CURRENT \`$current' must be a nonnegative integer" 62234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$vinfo' is not valid version information" 62244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 62264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $revision in 62284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 62294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 62304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "REVISION \`$revision' must be a nonnegative integer" 62314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$vinfo' is not valid version information" 62324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 62344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $age in 62364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 62374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 62384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "AGE \`$age' must be a nonnegative integer" 62394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$vinfo' is not valid version information" 62404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 62424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$age" -gt "$current"; then 62444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "AGE \`$age' is greater than the current interface number \`$current'" 62454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$vinfo' is not valid version information" 62464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Calculate the version variables. 62494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major= 62504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix= 62514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring= 62524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $version_type in 62534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project none) ;; 62544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin) 62564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Like Linux, but with the current version available in 62574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # verstring for coding it into the library header 62584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 62594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=.$func_arith_result 62604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="$major.$age.$revision" 62614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Darwin ld doesn't like 0 for these options... 62624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current + 1 62634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project minor_current=$func_arith_result 62644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 62654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 62664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project freebsd-aout) 62694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=".$current" 62704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".$current.$revision"; 62714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project freebsd-elf) 62744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=".$current" 62754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".$current" 62764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project irix | nonstopux) 62794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$lt_irix_increment" = "Xno"; then 62804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 62814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 62824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age + 1 62834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=$func_arith_result 62854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $version_type in 62874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project nonstopux) verstring_prefix=nonstopux ;; 62884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) verstring_prefix=sgi ;; 62894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 62904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="$verstring_prefix$major.$revision" 62914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 62924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add in all the interfaces that we are compatible with. 62934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project loop=$revision 62944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test "$loop" -ne 0; do 62954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $revision - $loop 62964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project iface=$func_arith_result 62974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $loop - 1 62984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project loop=$func_arith_result 62994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="$verstring_prefix$major.$iface:$verstring" 63004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 63014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Before this point, $major must not contain `.'. 63034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=.$major 63044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="$major.$revision" 63054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linux) 63084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 63094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=.$func_arith_result 63104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="$major.$age.$revision" 63114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project osf) 63144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 63154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=.$func_arith_result 63164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".$current.$age.$revision" 63174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="$current.$age.$revision" 63184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add in all the interfaces that we are compatible with. 63204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project loop=$age 63214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test "$loop" -ne 0; do 63224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $loop 63234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project iface=$func_arith_result 63244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $loop - 1 63254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project loop=$func_arith_result 63264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="$verstring:${iface}.0" 63274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 63284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make executables depend on our current version. 63304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="$verstring:${current}.0" 63314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project qnx) 63344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=".$current" 63354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".$current" 63364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project sunos) 63394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=".$current" 63404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".$current.$revision" 63414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project windows) 63444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Use '-' rather than '.', since we only want one 63454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # extension on DOS 8.3 filesystems. 63464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 63474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=$func_arith_result 63484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="-$major" 63494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 63524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_configuration "unknown library version type \`$version_type'" 63534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 63554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Clear the version info if we defaulted, and they specified a release. 63574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$vinfo" && test -n "$release"; then 63584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major= 63594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $version_type in 63604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin) 63614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # we can't check for "0.0" in archive_cmds due to quoting 63624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # problems, so we reset it completely 63634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring= 63644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 63664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="0.0" 63674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 63694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$need_version" = no; then 63704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix= 63714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 63724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".0.0" 63734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Remove version info from name if versioning should be avoided 63774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$avoid_version" = yes && test "$need_version" = no; then 63784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major= 63794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix= 63804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="" 63814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see if the archive will have undefined symbols. 63844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$allow_undefined" = yes; then 63854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$allow_undefined_flag" = unsupported; then 63864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "undefined symbols not allowed in $host shared libraries" 63874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 63884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 63894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 63914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't allow undefined symbols. 63924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project allow_undefined_flag="$no_undefined_flag" 63934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 63974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_generate_dlsyms "$libname" "$libname" "yes" 63984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs="$libobjs $symfileobj" 63994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 64004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 64014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$mode" != relink; then 64024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Remove our outputs, but don't remove object files since they 64034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # may have been created when compiling PIC objects. 64044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project removelist= 64054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tempremovelist=`$ECHO "$output_objdir/*"` 64064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for p in $tempremovelist; do 64074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $p in 64085f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *.$objext | *.gcno) 64094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 64104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 64114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$precious_files_regex" != "X"; then 64124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 64134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project then 64144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 64154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 64164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 64174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project removelist="$removelist $p" 64184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 64194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) ;; 64204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 64214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 64224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$removelist" && \ 64234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "${RM}r \$removelist" 64244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 64254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 64264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now set the variables for building old libraries. 64274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 64284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs="$oldlibs $output_objdir/$libname.$libext" 64294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 64304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform .lo files to .o files. 64314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 64324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 64334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 64344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Eliminate all temporary directories. 64354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project #for path in $notinst_path; do 64364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` 64374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` 64384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` 64394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project #done 64404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 64414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$xrpath"; then 64424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the user specified any rpath flags, then add them. 64434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project temp_xrpath= 64444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $xrpath; do 64454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project temp_xrpath="$temp_xrpath -R$libdir" 64464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$finalize_rpath " in 64474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 64484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) finalize_rpath="$finalize_rpath $libdir" ;; 64494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 64504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 64514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 64524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs="$temp_xrpath $dependency_libs" 64534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 64544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 64554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 64564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure dlfiles contains only unique files that won't be dlpreopened 64574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_dlfiles="$dlfiles" 64584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles= 64594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $old_dlfiles; do 64604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $dlprefiles $dlfiles " in 64614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $lib "*) ;; 64624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) dlfiles="$dlfiles $lib" ;; 64634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 64644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 64654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 64664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure dlprefiles contains only unique files 64674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_dlprefiles="$dlprefiles" 64684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles= 64694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $old_dlprefiles; do 64704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$dlprefiles " in 64714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $lib "*) ;; 64724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) dlprefiles="$dlprefiles $lib" ;; 64734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 64744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 6475893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 64764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes; then 64774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$rpath"; then 64784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 64795f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) 64804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # these systems don't actually have a c library (as such)! 64814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 64824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-rhapsody* | *-*-darwin1.[012]) 64834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Rhapsody C library is in the System framework 64844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplibs System.ltframework" 64854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 64864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-netbsd*) 64874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't link with libc until the a.out ld.so is fixed. 64884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 64894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 64904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do not include libc due to us having libc/libc_r. 64914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 64924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sco3.2v5* | *-*-sco5v6*) 64934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Causes problems with __ctype 64944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 64954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 64964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Compiler inserts libc in the correct place for threads to work 64974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 64984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 64994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add libc to deplibs on all other systems if necessary. 65004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_need_lc" = "yes"; then 65014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplibs -lc" 65024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 65034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 65044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 65054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 65064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 65074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform deplibs into only deplibs that can be linked in shared. 65084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name_save=$name 65094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname_save=$libname 65104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release_save=$release 65114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix_save=$versuffix 65124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major_save=$major 65134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # I'm not sure if I'm treating the release correctly. I think 65144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # release should show up in the -l (ie -lgmp5) so we don't want to 65154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # add it in twice. Is that correct? 65164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release="" 65174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="" 65184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major="" 65194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs= 65204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=no 65214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplibs_check_method in 65224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pass_all) 65234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't check for shared/static. Everything works. 65244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This might be a little naive. We might want to check 65254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # whether the library exists or not. But this is on 65264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # osf3 & osf4 and I'm not really sure... Just 65274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # implementing what was already the behavior. 65284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs=$deplibs 65294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 65304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test_compile) 65314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This code stresses the "libraries are programs" paradigm to its 65324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # limits. Maybe even breaks it. We compile a program, linking it 65334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # against the deplibs as a proxy for the library. Then we can check 65344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # whether they linked in statically or dynamically with ldd. 65354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM conftest.c 65364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat > conftest.c <<EOF 65374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int main() { return 0; } 65384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 65394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM conftest 65404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 65414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ldd_output=`ldd conftest` 65424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $deplibs; do 65434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $i in 65444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 65454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname -l '' "$i" 65464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 65474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps " in 65494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $i "*) 65504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $i" 65514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project i="" 65524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 65534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 65544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 65554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$i" ; then 65564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=`eval "\\$ECHO \"$libname_spec\""` 65574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 65584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $deplib_matches; shift 65594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplib_match=$1 65604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 65614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $i" 65624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 65634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 65644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 65654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: dynamic linker does not accept needed library $i." 65664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** I have the capability to make that library automatically link in when" 65674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** you link to this library. But I can only do this if you have a" 65684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** shared version of the library, which I believe you do not have" 65694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** because a test_compile did reveal that the linker did not use it for" 65704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** its dynamic dependency list that programs get resolved with at runtime." 65714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 65724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 65734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 65744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 65754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $i" 65764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 65774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 65784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 65794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 65804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Error occurred in the first compile. Let's try to salvage 65814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the situation: Compile a separate program for each library. 65824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $deplibs; do 65834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $i in 65844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 65854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname -l '' "$i" 65864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 65874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM conftest 65884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 65894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ldd_output=`ldd conftest` 65904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 65914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps " in 65924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $i "*) 65934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $i" 65944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project i="" 65954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 65964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 65974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 65984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$i" ; then 65994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=`eval "\\$ECHO \"$libname_spec\""` 66004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 66014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $deplib_matches; shift 66024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplib_match=$1 66034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 66044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $i" 66054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 66064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 66074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 66084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: dynamic linker does not accept needed library $i." 66094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** I have the capability to make that library automatically link in when" 66104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** you link to this library. But I can only do this if you have a" 66114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** shared version of the library, which you do not appear to have" 66124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** because a test_compile did reveal that the linker did not use this one" 66134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime." 66144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 66174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 66184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 66194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 66204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** make it link in! You will probably need to install it or some" 66214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** library that it depends on before this library will be fully" 66224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** functional. Installing it before continuing would be even better." 66234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 66254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 66264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $i" 66274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 66284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 66294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 66304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 66324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file_magic*) 66334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $deplibs_check_method; shift 66344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 66354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for a_deplib in $deplibs; do 66364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $a_deplib in 66374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 66384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname -l '' "$a_deplib" 66394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 66404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 66414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps " in 66424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $a_deplib "*) 66434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $a_deplib" 66444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project a_deplib="" 66454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 66464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 66474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$a_deplib" ; then 66494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=`eval "\\$ECHO \"$libname_spec\""` 66504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 66514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 66524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for potent_lib in $potential_libs; do 66534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Follow soft links. 66544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ls -lLd "$potent_lib" 2>/dev/null | 66554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP " -> " >/dev/null; then 66564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 66574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The statement above tries to avoid entering an 66594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # endless loop below, in case of cyclic links. 66604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We might still enter an endless loop, since a link 66614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # loop can be closed while we follow links, 66624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # but so what? 66634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project potlib="$potent_lib" 66644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test -h "$potlib" 2>/dev/null; do 66654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 66664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $potliblink in 66674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 66684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 66694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 66704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 66714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 66724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -e 10q | 66734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $EGREP "$file_magic_regex" > /dev/null; then 66744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $a_deplib" 66754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project a_deplib="" 66764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 2 66774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 66794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 66804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$a_deplib" ; then 66824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 66834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 66844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 66854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** I have the capability to make that library automatically link in when" 66864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** you link to this library. But I can only do this if you have a" 66874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** shared version of the library, which you do not appear to have" 66884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** because I did check the linker path looking for a file starting" 66894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$potlib" ; then 66904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 66914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 66924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** with $libname and none of the candidates passed a file format test" 66934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** using a file magic. Last file checked: $potlib" 66944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 66974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 66984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add a -L argument. 66994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $a_deplib" 67004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # Gone through all deplibs. 67034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project match_pattern*) 67054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $deplibs_check_method; shift 67064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 67074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for a_deplib in $deplibs; do 67084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $a_deplib in 67094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 67104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname -l '' "$a_deplib" 67114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 67124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps " in 67144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $a_deplib "*) 67154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $a_deplib" 67164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project a_deplib="" 67174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$a_deplib" ; then 67214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=`eval "\\$ECHO \"$libname_spec\""` 67224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 67234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 67244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for potent_lib in $potential_libs; do 67254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project potlib="$potent_lib" # see symlink-check above in file_magic test 67264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ 67274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $EGREP "$match_pattern_regex" > /dev/null; then 67284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $a_deplib" 67294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project a_deplib="" 67304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 2 67314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 67334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 67344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$a_deplib" ; then 67364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 67374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 67384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 67394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** I have the capability to make that library automatically link in when" 67404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** you link to this library. But I can only do this if you have a" 67414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** shared version of the library, which you do not appear to have" 67424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** because I did check the linker path looking for a file starting" 67434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$potlib" ; then 67444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 67454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 67464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** with $libname and none of the candidates passed a file format test" 67474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** using a regex pattern. Last file checked: $potlib" 67484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 67524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add a -L argument. 67534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="$newdeplibs $a_deplib" 67544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # Gone through all deplibs. 67574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project none | unknown | *) 67594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="" 67604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ 67614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` 67624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 67634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $predeps $postdeps ; do 67644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # can't use Xsed below, because $i might contain '/' 67654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` 67664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 67674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | 67694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP . >/dev/null; then 67704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 67714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$deplibs_check_method" = "Xnone"; then 67724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: inter-library dependencies are not supported in this platform." 67734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 67744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: inter-library dependencies are not known to be supported." 67754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** All declared inter-library dependencies are being dropped." 67774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 67784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=$versuffix_save 67824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=$major_save 67834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release=$release_save 67844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=$libname_save 67854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$name_save 67864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 67874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 67884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-rhapsody* | *-*-darwin1.[012]) 67894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # On Rhapsody replace the C library with the System framework 67904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 67914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 67944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$droppeddeps" = yes; then 67954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$module" = yes; then 67964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 67974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: libtool could not satisfy all declared inter-library" 67984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 67994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** a static module, that should work as long as the dlopening" 68004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** application is linked with the -dlopen flag." 68014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$global_symbol_pipe"; then 68024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 68034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** However, this would only work if libtool was able to extract symbol" 68044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" 68054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** not find such a program. So, this module is probably useless." 68064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." 68074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = no; then 68094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs="$output_objdir/$libname.$libext" 68104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=module 68114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 68124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 68134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 68144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 68164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** The inter-library dependencies that have been dropped here will be" 68174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** automatically added whenever a program is linked with this library" 68184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** or is declared to -dlopen it." 68194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 68204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$allow_undefined" = no; then 68214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 68224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Since this library must not contain undefined symbols," 68234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** because either the platform does not support them or" 68244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** it was explicitly requested with -no-undefined," 68254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** libtool will only create a static version of it." 68264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = no; then 68274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs="$output_objdir/$libname.$libext" 68284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=module 68294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 68304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 68314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 68324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6835893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 68364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Done checking deplibs! 68374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs=$newdeplibs 68384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Time to change all our "foo.ltframework" stuff back to "-framework foo" 68404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 68414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-darwin*) 68424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 68444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 6845893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 68464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6847893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 68484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # move library search paths that coincide with paths to not yet 68494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # installed libraries to the beginning of the library search list 68504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_libs= 68514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for path in $notinst_path; do 68524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_libs " in 68534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -L$path/$objdir "*) ;; 6854893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 68554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $deplibs " in 68564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -L$path/$objdir "*) 68574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_libs="$new_libs -L$path/$objdir" ;; 68584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6859893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 6860893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 68614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 68624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $deplibs; do 68634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 68644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) 68654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_libs " in 68664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 68674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) new_libs="$new_libs $deplib" ;; 68684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 68694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 68704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) new_libs="$new_libs $deplib" ;; 68714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 68724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 68734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$new_libs" 6874893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 68754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # All the library-specific variables (install_libdir is set above). 68764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project library_names= 68774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_library= 68784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlname= 6879893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 68804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Test again, we may have decided not to build it any more 68814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes; then 68824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_into_libs" = yes; then 68834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Hardcode the library paths 68844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs= 68854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dep_rpath= 68864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath="$finalize_rpath" 68874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$mode" != relink && rpath="$compile_rpath$rpath" 68884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $rpath; do 68894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_flag_spec"; then 68904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator"; then 68914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$hardcode_libdirs"; then 68924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs="$libdir" 68934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 68944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Just accumulate the unique libdirs. 68954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 68964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 68974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 68984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 68994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 69004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 69014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 69024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 69044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval flag=\"$hardcode_libdir_flag_spec\" 69054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dep_rpath="$dep_rpath $flag" 69064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$runpath_var"; then 69084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$perm_rpath " in 69094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 69104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) perm_rpath="$perm_rpath $libdir" ;; 69114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 69124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 69144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Substitute the hardcoded libdirs into the rpath. 69154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator" && 69164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$hardcode_libdirs"; then 69174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir="$hardcode_libdirs" 69184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_flag_spec_ld"; then 69194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 69204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 69214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval dep_rpath=\"$hardcode_libdir_flag_spec\" 69224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$runpath_var" && test -n "$perm_rpath"; then 69254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We should set the runpath_var. 69264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 69274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dir in $perm_rpath; do 69284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath="$rpath$dir:" 69294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 69304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 69314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 6933893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 6934893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 69354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shlibpath="$finalize_shlibpath" 69364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 69374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath"; then 69384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 69394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6940893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 69414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Get the real and link names of the library. 69424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval shared_ext=\"$shrext_cmds\" 69434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval library_names=\"$library_names_spec\" 69444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $library_names 69454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 69464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project realname="$1" 69474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 6948893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 69494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$soname_spec"; then 69504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval soname=\"$soname_spec\" 6951893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 69524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project soname="$realname" 69534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$dlname"; then 69554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlname=$soname 69564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6957893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 69584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib="$output_objdir/$realname" 69594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linknames= 69604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for link 69614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 69624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linknames="$linknames $link" 69634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 6964893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 69654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Use standard objects if they are pic 69664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 69674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 69684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 69694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project delfiles= 69704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$include_expsyms"; then 69714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 69724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols="$output_objdir/$libname.uexp" 69734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project delfiles="$delfiles $export_symbols" 69744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 69764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project orig_export_symbols= 69774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host_os in 69785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cygwin* | mingw* | cegcc*) 69794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 69804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # exporting using user supplied symfile 69814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 69824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # and it's NOT already a .def file. Must figure out 69834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # which of the given symbols are data symbols and tag 69844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # them as such. So, trigger use of export_symbols_cmds. 69854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # export_symbols gets reassigned inside the "prepare 69864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the list of exported symbols" if statement, so the 69874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # include_expsyms logic still works. 69884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project orig_export_symbols="$export_symbols" 69894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols= 69904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project always_export_symbols=yes 6991893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 6992893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 69934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 69944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6995893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 69964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepare the list of exported symbols 69974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$export_symbols"; then 69984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 69994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "generating symbol list for \`$libname.la'" 70004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols="$output_objdir/$libname.exp" 70014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $export_symbols 70024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$export_symbols_cmds 70034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS='~' 70044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for cmd in $cmds; do 70054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 70064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmd=\"$cmd\" 70074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $cmd" 70084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_len_result 70094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 70104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$cmd" 'exit $?' 70114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project skipped_export=false 70124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 70134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The command line is too long to execute in one step. 70144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "using reloadable object file for export list..." 70154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project skipped_export=: 70164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Break out early, otherwise skipped_export may be 70174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # set to false by a later but shorter cmd. 70184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 70194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 70204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 70214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 70224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 70234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 70244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 70254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 70264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7027893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 7028893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 70294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$include_expsyms"; then 70304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_export_symbols="$export_symbols" 70314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 70324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 70334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7034893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 70354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 70364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The given exports_symbols file has to be filtered, so filter it. 70374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 70384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FIXME: $output_objdir/$libname.filter potentially contains lots of 70394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # 's' commands which not all seds can handle. GNU sed should be fine 70404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # though. Also, the filter scales superlinearly with the number of 70414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # global variables. join(1) would be nice here, but unfortunately 70424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # isn't a blessed tool. 70434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 70444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 70454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols=$output_objdir/$libname.def 70464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 70474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7048893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 70494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_deplibs= 70504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for test_deplib in $deplibs; do 70514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $convenience " in 70524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $test_deplib "*) ;; 70534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 70544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_deplibs="$tmp_deplibs $test_deplib" 70554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 70564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 70574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 70584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$tmp_deplibs" 70594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 70604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$convenience"; then 70614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$whole_archive_flag_spec" && 70624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$compiler_needs_object" = yes && 70634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libobjs"; then 70644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # extract the archives, so we have objects to list. 70654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # TODO: could optimize this to just extract one archive. 70664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project whole_archive_flag_spec= 70674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 70684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$whole_archive_flag_spec"; then 70694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_libobjs=$libobjs 70704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 70714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 7072893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 70734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${outputname}x" 70744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project generated="$generated $gentop" 70754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 70764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives $gentop $convenience 70774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs="$libobjs $func_extract_archives_result" 70784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 7079893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 7080893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 7081893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 70824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 70834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval flag=\"$thread_safe_flag_spec\" 70844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linker_flags="$linker_flags $flag" 70854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7086893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 70874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make a backup of the uninstalled library when relinking 70884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$mode" = relink; then 70894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 70904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7091893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 70924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each of the archive commands. 70934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$module" = yes && test -n "$module_cmds" ; then 70944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 70954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$module_expsym_cmds\" 70964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$module_expsym_cmds 70974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 70984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$module_cmds\" 70994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$module_cmds 71004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7101893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 71024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 71034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$archive_expsym_cmds\" 71044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$archive_expsym_cmds 71054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 71064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$archive_cmds\" 71074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$archive_cmds 71084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7109893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 7110893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 71114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$skipped_export" != "X:" && 71124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $test_cmds" && 71134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_len_result && 71144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 71154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 71164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 71174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The command line is too long to link in one step, link piecewise 71184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # or, if using GNU ld and skipped_export is not :, use a linker 71194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # script. 7120893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 71214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Save the value of $output and $libobjs because we want to 71224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # use them later. If we have whole_archive_flag_spec, we 71234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # want to use save_libobjs as it was before 71244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # whole_archive_flag_spec was expanded, because we can't 71254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # assume the linker understands whole_archive_flag_spec. 71264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This may have to be revisited, in case too many 71274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # convenience libraries get linked in and end up exceeding 71284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the spec. 71294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 71304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_libobjs=$libobjs 71314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 71324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_output=$output 71334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output_la=`$ECHO "X$output" | $Xsed -e "$basename"` 71344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 71354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Clear the reloadable object creation command queue and 71364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # initialize k to one. 71374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test_cmds= 71384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_cmds= 71394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objlist= 71404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project last_robj= 71414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project k=1 71424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 71434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 71444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=${output_objdir}/${output_la}.lnkscript 71454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating GNU ld script: $output" 71464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO 'INPUT (' > $output 71474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj in $save_libobjs 71484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 71494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$obj" >> $output 71504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 71514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO ')' >> $output 71524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project delfiles="$delfiles $output" 71534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 71544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=${output_objdir}/${output_la}.lnk 71554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating linker input file list: $output" 71564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : > $output 71574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set x $save_libobjs 71584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 71594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project firstobj= 71604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$compiler_needs_object" = yes; then 71614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project firstobj="$1 " 71624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 7163893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 71644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj 71654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 71664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$obj" >> $output 7167893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 71684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project delfiles="$delfiles $output" 71694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$firstobj\"$file_list_spec$output\" 71704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 71714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$save_libobjs"; then 71724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating reloadable object files..." 71734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$output_objdir/$output_la-${k}.$objext 71744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$reload_cmds\" 71754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $test_cmds" 71764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len0=$func_len_result 71774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$len0 71784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 71794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Loop over the list of objects to be linked. 71804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj in $save_libobjs 71814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 71824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $obj" 71834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $len + $func_len_result 71844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_arith_result 71854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$objlist" = X || 71864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$len" -lt "$max_cmd_len"; then 71874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append objlist " $obj" 71884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 71894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The command $test_cmds is almost too long, add a 71904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # command to the queue. 71914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$k" -eq 1 ; then 71924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The first file doesn't have a previous command to add. 71934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 71944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 71954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # All subsequent reloadable object files will link in 71964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the last one created. 71974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" 71984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 71994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project last_robj=$output_objdir/$output_la-${k}.$objext 72004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $k + 1 72014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project k=$func_arith_result 72024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$output_objdir/$output_la-${k}.$objext 72034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objlist=$obj 72044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $last_robj" 72054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $len0 + $func_len_result 72064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_arith_result 72074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 72094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Handle the remaining objects by creating one last 72104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # reloadable object file. All subsequent reloadable object 72114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # files will link in the last one created. 72124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 72144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$last_robj"; then 72154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 7216893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 72174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project delfiles="$delfiles $output" 72184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 72204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output= 72214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ${skipped_export-false}; then 72244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "generating symbol list for \`$libname.la'" 72254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols="$output_objdir/$libname.exp" 72264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $export_symbols 72274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs=$output 72284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Append the command to create the export file. 72294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 72304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 72314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$last_robj"; then 72324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 7233893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 72344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$save_libobjs" && 72374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating a temporary reloadable object file: $output" 72384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Loop through the commands generated above and execute them. 72404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS='~' 72414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for cmd in $concat_cmds; do 72424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 72434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_silent || { 72444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand "$cmd" 72454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "func_echo $func_quote_for_expand_result" 72464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 72474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval "$cmd" || { 72484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_exit=$? 72494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restore the uninstalled library and exit 72514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$mode" = relink; then 72524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ( cd "$output_objdir" && \ 72534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM "${realname}T" && \ 72544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV "${realname}U" "$realname" ) 72554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $lt_exit 72584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 7259893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 72604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 72614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols_regex" && ${skipped_export-false}; then 72634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 72644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 72654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7266893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 7267893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 72684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ${skipped_export-false}; then 72694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$include_expsyms"; then 72704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_export_symbols="$export_symbols" 72714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 72724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' 72734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7274893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 72754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$orig_export_symbols"; then 72764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The given exports_symbols file has to be filtered, so filter it. 72774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 72784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FIXME: $output_objdir/$libname.filter potentially contains lots of 72794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # 's' commands which not all seds can handle. GNU sed should be fine 72804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # though. Also, the filter scales superlinearly with the number of 72814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # global variables. join(1) would be nice here, but unfortunately 72824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # isn't a blessed tool. 72834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 72844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 72854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols=$output_objdir/$libname.def 72864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 72874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7289893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 72904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs=$output 72914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restore the value of output. 72924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$save_output 7293893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 72944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 72954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 72964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 72974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Expand the library linking commands again to reset the 72994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # value of $libobjs for piecewise linking. 7300893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each of the archive commands. 73024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$module" = yes && test -n "$module_cmds" ; then 73034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 73044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$module_expsym_cmds 73054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 73064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$module_cmds 73074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 73084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 73094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 73104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$archive_expsym_cmds 73114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 73124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$archive_cmds 73134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 73144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 73154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7316893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$delfiles"; then 73184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Append the command to remove temporary files to $cmds. 73194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmds=\"\$cmds~\$RM $delfiles\" 73204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7321893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add any objects from preloaded convenience libraries 73234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlprefiles"; then 73244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${outputname}x" 73254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project generated="$generated $gentop" 7326893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives $gentop $dlprefiles 73284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs="$libobjs $func_extract_archives_result" 73294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 73304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7331893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS='~' 73334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for cmd in $cmds; do 73344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 73354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmd=\"$cmd\" 73364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_silent || { 73374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand "$cmd" 73384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "func_echo $func_quote_for_expand_result" 73394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 73404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval "$cmd" || { 73414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_exit=$? 73424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restore the uninstalled library and exit 73444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$mode" = relink; then 73454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ( cd "$output_objdir" && \ 73464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM "${realname}T" && \ 73474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV "${realname}U" "$realname" ) 73484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 73494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $lt_exit 73514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 7352893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 73534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 7354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restore the uninstalled library and exit 73564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$mode" = relink; then 73574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 7358893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$convenience"; then 73604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$whole_archive_flag_spec"; then 73614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '${RM}r "$gentop"' 73624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 73634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7364893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 73664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 73674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Create links to the real library. 73694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for linkname in $linknames; do 73704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$realname" != "$linkname"; then 73714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 73724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 73734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 7374893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If -module or -export-dynamic was specified, set the dlname. 73764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$module" = yes || test "$export_dynamic" = yes; then 73774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # On all known operating systems, these are identical. 73784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlname="$soname" 73794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 73804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7381893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 7382893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project obj) 73844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 73854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-dlopen' is ignored for objects" 7386893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 7387893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 73884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $deplibs" in 73894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *\ -l* | *\ -L*) 73904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-l' and \`-L' are ignored for objects" ;; 73914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 73924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$rpath" && \ 73944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-rpath' is ignored for objects" 73954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$xrpath" && \ 73974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-R' is ignored for objects" 73984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$vinfo" && \ 74004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-version-info' is ignored for objects" 74014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$release" && \ 74034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-release' is ignored for objects" 74044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $output in 74064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) 74074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$objs$old_deplibs" && \ 74084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot build library object \`$output' from non-libtool objects" 74094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj=$output 74114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lo2o "$libobj" 74124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project obj=$func_lo2o_result 7413893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 7414893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 74154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj= 74164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project obj="$output" 7417893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 7418893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 7419893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 74204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Delete the old objects. 74214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $obj $libobj 7422893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 74234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Objects from convenience libraries. This assumes 74244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # single-version convenience libraries. Whenever we create 74254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # different ones for PIC/non-PIC, this we'll have to duplicate 74264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the extraction. 74274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project reload_conv_objs= 74284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop= 74294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # reload_cmds runs $LD directly, so let us get rid of 74304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -Wl from whole_archive_flag_spec and hope we can get by with 74314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # turning comma into space.. 74324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wl= 7433893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 74344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$convenience"; then 74354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$whole_archive_flag_spec"; then 74364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 74374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 74384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 74394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${obj}x" 74404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project generated="$generated $gentop" 7441893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 74424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives $gentop $convenience 74434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project reload_conv_objs="$reload_objs $func_extract_archives_result" 74444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7445893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 7446893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 74474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Create the old-style object. 74484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 7449893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 74504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output="$obj" 74514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$reload_cmds" 'exit $?' 7452893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 74534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Exit if we aren't doing a library object file. 74544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$libobj"; then 74554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$gentop"; then 74564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '${RM}r "$gentop"' 74574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 74584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 7460893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 74614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" != yes; then 74634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$gentop"; then 74644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '${RM}r "$gentop"' 74654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 74664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Create an invalid libtool object if no PIC, so that we don't 74684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # accidentally link it into a program. 74694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # $show "echo timestamp > $libobj" 74704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 74714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 74724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 74734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$pic_flag" || test "$pic_mode" != default; then 74754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only do commands if we really have different PIC objects. 74764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project reload_objs="$libobjs $reload_conv_objs" 74774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output="$libobj" 74784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$reload_cmds" 'exit $?' 74794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 74804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$gentop"; then 74824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '${RM}r "$gentop"' 74834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 74844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 7486893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 7487893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 74884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prog) 74894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 74904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *cygwin*) func_stripname '' '.exe' "$output" 74914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$func_stripname_result.exe;; 74924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 74934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$vinfo" && \ 74944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-version-info' is ignored for programs" 7495893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 74964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$release" && \ 74974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-release' is ignored for programs" 7498893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 74994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$preload" = yes \ 75004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && test "$dlopen_support" = unknown \ 75014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && test "$dlopen_self" = unknown \ 75024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && test "$dlopen_self_static" = unknown && \ 75034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 75044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 75054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 75064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-rhapsody* | *-*-darwin1.[012]) 75074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # On Rhapsody replace the C library is the System framework 75084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 75094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` 7510893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 75114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 7512893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 75134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 75144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-darwin*) 75154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't allow lazy linking, it breaks C++ global constructors 75164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # But is supposedly fixed on 10.4 or later (yay!). 75174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$tagname" = CXX ; then 75184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 75194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10.[0123]) 75204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command="$compile_command ${wl}-bind_at_load" 75214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command="$finalize_command ${wl}-bind_at_load" 75224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 75234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 7524893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 75254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Time to change all our "foo.ltframework" stuff back to "-framework foo" 75264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` 75284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 75294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 7530893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 7531893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 75324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # move library search paths that coincide with paths to not yet 75334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # installed libraries to the beginning of the library search list 75344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_libs= 75354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for path in $notinst_path; do 75364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_libs " in 75374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -L$path/$objdir "*) ;; 75384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 75394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $compile_deplibs " in 75404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -L$path/$objdir "*) 75414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_libs="$new_libs -L$path/$objdir" ;; 7542893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 75434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 75444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 75454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 75464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $compile_deplibs; do 75474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 75484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) 75494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_libs " in 75504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 75514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) new_libs="$new_libs $deplib" ;; 7552893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 75534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 75544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) new_libs="$new_libs $deplib" ;; 75554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 75564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 75574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$new_libs" 7558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 7559893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 75604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command="$compile_command $compile_deplibs" 75614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command="$finalize_command $finalize_deplibs" 7562893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 75634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$rpath$xrpath"; then 75644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the user specified any rpath flags, then add them. 75654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $rpath $xrpath; do 75664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This is the magic to use -rpath. 75674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$finalize_rpath " in 75684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 75694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) finalize_rpath="$finalize_rpath $libdir" ;; 75704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 75714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 75724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7573893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 75744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now hardcode the library paths 75754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 75764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs= 75774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $compile_rpath $finalize_rpath; do 75784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_flag_spec"; then 75794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator"; then 75804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$hardcode_libdirs"; then 75814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs="$libdir" 75824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 75834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Just accumulate the unique libdirs. 75844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 75854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 75864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 75874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 75884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 75894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 75904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 75914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7592893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 75934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval flag=\"$hardcode_libdir_flag_spec\" 75944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath="$rpath $flag" 7595893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 75964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$runpath_var"; then 75974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$perm_rpath " in 75984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 75994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) perm_rpath="$perm_rpath $libdir" ;; 76004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 76014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 76024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 76035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 76044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 76054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case :$dllsearchpath: in 76064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$libdir:"*) ;; 76075f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ::) dllsearchpath=$libdir;; 76084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) dllsearchpath="$dllsearchpath:$libdir";; 76094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 76104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case :$dllsearchpath: in 76114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$testbindir:"*) ;; 76125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ::) dllsearchpath=$testbindir;; 76134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) dllsearchpath="$dllsearchpath:$testbindir";; 76144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 76154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 76174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 76184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Substitute the hardcoded libdirs into the rpath. 76194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator" && 76204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$hardcode_libdirs"; then 76214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir="$hardcode_libdirs" 76224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval rpath=\" $hardcode_libdir_flag_spec\" 76234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 76244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_rpath="$rpath" 7625893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 76264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 76274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs= 76284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $finalize_rpath; do 76294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_flag_spec"; then 76304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator"; then 76314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$hardcode_libdirs"; then 76324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs="$libdir" 76334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 76344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Just accumulate the unique libdirs. 76354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 76364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 76374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 76394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 76404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 76424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7643893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 76444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval flag=\"$hardcode_libdir_flag_spec\" 76454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath="$rpath $flag" 7646893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 76474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$runpath_var"; then 76484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$finalize_perm_rpath " in 76494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 76504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 76514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 7652893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 76534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 76544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Substitute the hardcoded libdirs into the rpath. 76554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator" && 76564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$hardcode_libdirs"; then 76574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir="$hardcode_libdirs" 76584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval rpath=\" $hardcode_libdir_flag_spec\" 76594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 76604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_rpath="$rpath" 7661893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 76624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$libobjs" && test "$build_old_libs" = yes; then 76634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform all the library objects into standard objects. 76644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 76664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7667893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 76684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 7669893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 76704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # template prelinking step 76714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$prelink_cmds"; then 76724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$prelink_cmds" 'exit $?' 76734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7674893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 76754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrappers_required=yes 76764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 76774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *cygwin* | *mingw* ) 76784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" != yes; then 76794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrappers_required=no 76804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 76814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cegcc) 76835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # Disable wrappers for cegcc, we are cross compiling anyway. 76845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott wrappers_required=no 76855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ;; 76864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 76874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 76884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrappers_required=no 76894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 76904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 76924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$wrappers_required" = no; then 76934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Replace the output file specification. 76944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 76954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command="$compile_command$compile_rpath" 7696893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 76974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We have no uninstalled library dependencies, so finalize right now. 76984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit_status=0 76994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$link_command" 'exit_status=$?' 7700893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Delete the generated files. 77024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$output_objdir/${outputname}S.${objext}"; then 77034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 7704893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 7705893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $exit_status 77074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7708893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$compile_shlibpath$finalize_shlibpath"; then 77104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 77114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 77124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$finalize_shlibpath"; then 77134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 77144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7715893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_var= 77174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_var= 77184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$runpath_var"; then 77194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$perm_rpath"; then 77204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We should set the runpath_var. 77214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 77224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dir in $perm_rpath; do 77234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath="$rpath$dir:" 77244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 77254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 7726893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 77274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$finalize_perm_rpath"; then 77284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We should set the runpath_var. 77294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 77304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dir in $finalize_perm_rpath; do 77314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath="$rpath$dir:" 77324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 77334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 7734893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 77354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7736893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$no_install" = yes; then 77384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We don't need to create a wrapper script. 77394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command="$compile_var$compile_command$compile_rpath" 77404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Replace the output file specification. 77414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 77424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Delete the old output file. 77434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $output 77444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Link the executable and exit 77454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$link_command" 'exit $?' 7746893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_SUCCESS 77474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7748893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_action" = relink; then 77504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Fast installation is not supported 77514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command="$compile_var$compile_command$compile_rpath" 77524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$finalize_var$finalize_command$finalize_rpath" 77534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 77544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "this platform does not like uninstalled shared libraries" 77554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`$output' will be relinked during installation" 77564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 77574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$fast_install" != no; then 77584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command="$finalize_var$compile_command$finalize_rpath" 77594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$fast_install" = yes; then 77604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` 77614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 77624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # fast_install is set to needless 77634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 77644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7765893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 77664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command="$compile_var$compile_command$compile_rpath" 77674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$finalize_var$finalize_command$finalize_rpath" 7768893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 77694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7770893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Replace the output file specification. 77724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 7773893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Delete the old output files. 77754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 7776893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$link_command" 'exit $?' 7778893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now create the wrapper script. 77804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating $output" 7781893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Quote the relink command for shipping. 77834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$relink_command"; then 77844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Preserve any variables that may affect compiler behavior 77854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for var in $variables_saved_for_relink; do 77864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval test -z \"\${$var+set}\"; then 77874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 77884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif eval var_value=\$$var; test -z "$var_value"; then 77894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$var=; export $var; $relink_command" 7790893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 77914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$var_value" 77924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 7793893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 77944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 77954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="(cd `pwd`; $relink_command)" 77964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 77974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7798893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 77994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Quote $ECHO for shipping. 78004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then 78014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $progpath in 78024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 78034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 7804893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 78054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` 78064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 78074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 78084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7809893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 78104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only actually do things if not in dry run mode. 78114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 78124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # win32 will think the script is a binary if it has 78134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # a .exe suffix, so we strip it off here. 78144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $output in 78154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.exe) func_stripname '' '.exe' "$output" 78164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$func_stripname_result ;; 78174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 78184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # test for cygwin because mv fails w/o .exe extensions 78194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 78204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *cygwin*) 78214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exeext=.exe 78224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$outputname" 78234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project outputname=$func_stripname_result ;; 78244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) exeext= ;; 78254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 78264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 78274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *cygwin* | *mingw* ) 78284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname_and_basename "$output" "" "." 78294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output_name=$func_basename_result 78304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output_path=$func_dirname_result 78314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cwrappersource="$output_path/$objdir/lt-$output_name.c" 78324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cwrapper="$output_path/$output_name.exe" 78334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM $cwrappersource $cwrapper 78344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 78354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 78364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_emit_cwrapperexe_src > $cwrappersource 78374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 78385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # The wrapper executable is built using the $host compiler, 78395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # because it contains $host paths and files. If cross- 78405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # compiling, it, like the target executable, must be 78415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # executed on the $host or under an emulation environment. 78424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 78434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 78444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $STRIP $cwrapper 78454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 7846893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 78474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now, create the wrapper script for func_source use: 78484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_scriptname $cwrapper 78494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM $func_ltwrapper_scriptname_result 78504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 78514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 78524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # note: this script will not be executed, so do not chmod. 78534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "x$build" = "x$host" ; then 78544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 78554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 78564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_emit_wrapper no > $func_ltwrapper_scriptname_result 78574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 78594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 78604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project * ) 78614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM $output 78624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 7863893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 78644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_emit_wrapper no > $output 78654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project chmod +x $output 78664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 78674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 78684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 78694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 78704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 78714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 7872893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 78734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # See if we need to build an old-fashioned archive. 78744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for oldlib in $oldlibs; do 78754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 78764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = convenience; then 78774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$libobjs_save $symfileobj" 78784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project addlibs="$convenience" 78794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 78804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 78814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = module; then 78824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$libobjs_save" 78834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 78844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 78854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$old_deplibs $non_pic_objects" 78864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$preload" = yes && test -f "$symfileobj"; then 78874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$oldobjs $symfileobj" 78884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project addlibs="$old_convenience" 7891893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 7892893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 78934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$addlibs"; then 78944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${outputname}x" 78954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project generated="$generated $gentop" 7896893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 78974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives $gentop $addlibs 78984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$oldobjs $func_extract_archives_result" 78994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7900893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 79014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each command in the archive commands. 79024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 79034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$old_archive_from_new_cmds 79044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 7905893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 79064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add any objects from preloaded convenience libraries 79074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlprefiles"; then 79084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${outputname}x" 79094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project generated="$generated $gentop" 7910893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 79114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives $gentop $dlprefiles 79124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$oldobjs $func_extract_archives_result" 79134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7914893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 79154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # POSIX demands no paths to be encoded in archives. We have 79164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # to avoid creating archives with duplicate basenames if we 79174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # might have to extract them afterwards, e.g., when creating a 79184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # static archive out of a convenience library, or when linking 79194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the entirety of a libtool archive into another (currently 79204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # not supported by libtool). 79214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (for obj in $oldobjs 79224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 79234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$obj" 79244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$func_basename_result" 79254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done | sort | sort -uc >/dev/null 2>&1); then 79264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 79274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 79284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "copying selected object files to avoid basename conflicts..." 79294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${outputname}x" 79304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project generated="$generated $gentop" 79314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mkdir_p "$gentop" 79324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_oldobjs=$oldobjs 79334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs= 79344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project counter=1 79354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj in $save_oldobjs 79364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 79374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$obj" 79384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objbase="$func_basename_result" 79394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $oldobjs " in 79404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project " ") oldobjs=$obj ;; 79414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\ /]"$objbase "*) 79424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while :; do 79434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure we don't pick an alternate name that also 79444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # overlaps. 79454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newobj=lt$counter-$objbase 79464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $counter + 1 79474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project counter=$func_arith_result 79484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $oldobjs " in 79494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\ /]"$newobj "*) ;; 79504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) if test ! -f "$gentop/$newobj"; then break; fi ;; 79514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 79524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 79534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 79544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$oldobjs $gentop/$newobj" 79554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 79564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) oldobjs="$oldobjs $obj" ;; 79574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 7958893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 7959893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 79604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmds=\"$old_archive_cmds\" 7961893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 79624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $cmds" 79634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_len_result 79644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 79654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$old_archive_cmds 79664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 79674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the command line is too long to link in one step, link in parts 79684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "using piecewise archive linking..." 79694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_RANLIB=$RANLIB 79704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project RANLIB=: 79714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objlist= 79724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_cmds= 79734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_oldobjs=$oldobjs 79744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs= 79754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Is there a better way of finding the last object in the list? 79764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj in $save_oldobjs 79774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 79784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project last_oldobj=$obj 79794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 79804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$old_archive_cmds\" 79814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $test_cmds" 79824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len0=$func_len_result 79834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$len0 79844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj in $save_oldobjs 79854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 79864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $obj" 79874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $len + $func_len_result 79884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_arith_result 79894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append objlist " $obj" 79904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$len" -lt "$max_cmd_len"; then 79914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 79924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 79934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the above command should be used before it gets too long 79944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs=$objlist 79954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$obj" = "$last_oldobj" ; then 79964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project RANLIB=$save_RANLIB 79974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 79984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 79994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 80004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objlist= 80014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$len0 80024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 80034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 80044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project RANLIB=$save_RANLIB 80054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs=$objlist 80064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$oldobjs" = "X" ; then 80074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmds=\"\$concat_cmds\" 80084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 80094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 80104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 80114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 80124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 80134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$cmds" 'exit $?' 8014893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 8015893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 80164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$generated" && \ 80174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "${RM}r$generated" 8018893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 80194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now create the libtool archive. 80204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $output in 80214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 80224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_library= 80234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_old_libs" = yes && old_library="$libname.$libext" 80244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating $output" 8025893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 80264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Preserve any variables that may affect compiler behavior 80274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for var in $variables_saved_for_relink; do 80284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval test -z \"\${$var+set}\"; then 80294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 80304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif eval var_value=\$$var; test -z "$var_value"; then 80314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$var=; export $var; $relink_command" 8032893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 80334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$var_value" 80344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 8035893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 80364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 80374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Quote the link command for shipping. 80384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 80394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` 80404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_automatic" = yes ; then 80414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 80424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8043893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 80444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only create the output if not a dry run. 80454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 80464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for installed in no yes; do 80474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$installed" = yes; then 80484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$install_libdir"; then 80494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 80504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 80514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output="$output_objdir/$outputname"i 80524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Replace all uninstalled libtool libraries with the installed ones 80534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs= 80544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 80554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 80564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 80574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$deplib" 80584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 80594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 80604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libdir" && \ 80614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$deplib' is not a valid libtool archive" 80624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs="$newdependency_libs $libdir/$name" 80634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 80644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) newdependency_libs="$newdependency_libs $deplib" ;; 80654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 80664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 80674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs="$newdependency_libs" 80684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlfiles= 80694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 80704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $dlfiles; do 80714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $lib in 80724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 80734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$lib" 80744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 80754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 80764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libdir" && \ 80774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$lib' is not a valid libtool archive" 80784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlfiles="$newdlfiles $libdir/$name" 80794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 80804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) newdlfiles="$newdlfiles $lib" ;; 80814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 80824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 80834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles="$newdlfiles" 80844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles= 80854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $dlprefiles; do 80864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $lib in 80874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 80884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only pass preopened files to the pseudo-archive (for 80894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # eventual linking with the app. that links it) if we 80904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # didn't already link the preopened objects directly into 80914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the library: 80924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$lib" 80934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 80944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 80954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libdir" && \ 80964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$lib' is not a valid libtool archive" 80974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles="$newdlprefiles $libdir/$name" 80984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 80994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 81004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 81014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$newdlprefiles" 81024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 81034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlfiles= 81044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $dlfiles; do 81054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $lib in 81064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) abs=`pwd`"/$lib" ;; 81084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 81094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlfiles="$newdlfiles $abs" 81104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 81114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles="$newdlfiles" 81124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles= 81134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $dlprefiles; do 81144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $lib in 81154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 81164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) abs=`pwd`"/$lib" ;; 81174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 81184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles="$newdlprefiles $abs" 81194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 81204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$newdlprefiles" 81214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 81224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM $output 81234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # place dlname in correct position for cygwin 81244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tdlname=$dlname 81254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host,$output,$installed,$module,$dlname in 81265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 81274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 81284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO > $output "\ 81294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# $outputname - a libtool library file 81304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 81314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 81324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Please DO NOT delete this file! 81334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# It is necessary for linking the library. 8134893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The name that we can dlopen(3). 81364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdlname='$tdlname' 8137893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Names of this library. 81394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlibrary_names='$library_names' 8140893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The name of the static archive. 81424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectold_library='$old_library' 8143893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Linker flags that can not go in dependency_libs. 81454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectinherited_linker_flags='$new_inherited_linker_flags' 8146893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Libraries that this one depends upon. 81484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdependency_libs='$dependency_libs' 8149893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Names of additional weak libraries provided by this library 81514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectweak_library_names='$weak_libs' 8152893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Version information for $libname. 81544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcurrent=$current 81554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectage=$age 81564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrevision=$revision 8157893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Is this an already installed library? 81594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectinstalled=$installed 8160893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Should we warn about portability when linking against -modules? 81624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectshouldnotlink=$module 8163893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Files to dlopen/dlpreopen 81654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdlopen='$dlfiles' 81664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdlpreopen='$dlprefiles' 8167893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Directory that this library needs to be installed in: 81694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlibdir='$install_libdir'" 81704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$installed" = no && test "$need_relink" = yes; then 81714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO >> $output "\ 81724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrelink_command=\"$relink_command\"" 81734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 81744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 81754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 8176893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do a symbolic link so that the libtool archive can be found in 81784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # LD_LIBRARY_PATH before the program is installed. 81794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 81804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 81814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 81824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 81834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 8184893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ test "$mode" = link || test "$mode" = relink; } && 81864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mode_link ${1+"$@"} 8187893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8188893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_uninstall arg... 81904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_uninstall () 81914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 81924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 81934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project RM="$nonopt" 8194893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project files= 8195893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmforce= 8196893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit_status=0 8197893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8198893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # This variable tells wrapper scripts just to set variables rather 8199893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # than running their programs. 8200893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project libtool_install_magic="$magic" 8201893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8202893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for arg 8203893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project do 8204893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $arg in 82054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -f) RM="$RM $arg"; rmforce=yes ;; 82064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -*) RM="$RM $arg" ;; 8207893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) files="$files $arg" ;; 8208893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 8209893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 8210893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 82114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$RM" && \ 82124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify an RM program" 8213893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8214893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmdirs= 8215893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8216893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project origobjdir="$objdir" 8217893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for file in $files; do 82184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$file" "" "." 82194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$func_dirname_result" 82204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$dir" = X.; then 8221893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project objdir="$origobjdir" 8222893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 8223893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project objdir="$dir/$origobjdir" 8224893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 82254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file" 82264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 8227893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project test "$mode" = uninstall && objdir="$dir" 8228893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8229893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Remember objdir for removal later, being careful to avoid duplicates 8230893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$mode" = clean; then 8231893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case " $rmdirs " in 8232893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *" $objdir "*) ;; 8233893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) rmdirs="$rmdirs $objdir" ;; 8234893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 8235893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8236893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8237893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Don't error if the file doesn't exist and rm -f was used. 82384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if { test -L "$file"; } >/dev/null 2>&1 || 82394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test -h "$file"; } >/dev/null 2>&1 || 82404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -f "$file"; then 8241893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project : 8242893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project elif test -d "$file"; then 8243893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit_status=1 8244893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 8245893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project elif test "$rmforce" = yes; then 8246893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 8247893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8248893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8249893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmfiles="$file" 8250893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8251893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $name in 8252893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *.la) 8253893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Possibly a libtool archive, so verify it. 82544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_lalib_p "$file"; then 82554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source $dir/$name 8256893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8257893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Delete the libtool libraries and symlinks. 8258893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for n in $library_names; do 8259893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmfiles="$rmfiles $objdir/$n" 8260893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 8261893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 8262893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8263893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case "$mode" in 8264893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project clean) 8265893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case " $library_names " in 8266893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # " " in the beginning catches empty $dlname 8267893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *" $dlname "*) ;; 8268893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) rmfiles="$rmfiles $objdir/$dlname" ;; 8269893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 82704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 8271893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8272893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project uninstall) 8273893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -n "$library_names"; then 8274893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Do each command in the postuninstall commands. 82754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 8276893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8277893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8278893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -n "$old_library"; then 8279893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Do each command in the old_postuninstall commands. 82804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 8281893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8282893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # FIXME: should reinstall the best remaining shared library. 8283893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8284893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 8285893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8286893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8287893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8288893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *.lo) 8289893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Possibly a libtool object, so verify it. 82904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_lalib_p "$file"; then 8291893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8292893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Read the .lo file 82934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source $dir/$name 8294893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8295893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Add PIC object to the list of files to remove. 82964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$pic_object" && 82974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$pic_object" != none; then 8298893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmfiles="$rmfiles $dir/$pic_object" 8299893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8300893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8301893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Add non-PIC object to the list of files to remove. 83024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$non_pic_object" && 83034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$non_pic_object" != none; then 8304893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmfiles="$rmfiles $dir/$non_pic_object" 8305893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8306893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8307893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8308893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8309893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 8310893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$mode" = clean ; then 8311893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project noexename=$name 8312893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $file in 8313893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *.exe) 83144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$file" 83154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=$func_stripname_result 83164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$name" 83174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project noexename=$func_stripname_result 8318893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # $file with .exe has already been added to rmfiles, 8319893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # add $file without .exe 8320893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmfiles="$rmfiles $file" 8321893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8322893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 8323893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Do a test to see if this is a libtool program. 83244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_p "$file"; then 83254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_executable_p "$file"; then 83264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_scriptname "$file" 83274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 83284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source $func_ltwrapper_scriptname_result 83294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 83304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 83314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 83324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source $dir/$noexename 83334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8334893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8335893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # note $name still contains .exe if it was in $file originally 8336893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # as does the version of $file that was added into $rmfiles 8337893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 8338893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$fast_install" = yes && test -n "$relink_command"; then 8339893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmfiles="$rmfiles $objdir/lt-$name" 8340893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8341893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "X$noexename" != "X$name" ; then 8342893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmfiles="$rmfiles $objdir/lt-${noexename}.c" 8343893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8344893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8345893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8346893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8347893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 83484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$RM $rmfiles" 'exit_status=1' 8349893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 8350893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project objdir="$origobjdir" 8351893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8352893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Try to remove the ${objdir}s in the directories where we deleted files 8353893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for dir in $rmdirs; do 8354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -d "$dir"; then 83554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "rmdir $dir >/dev/null 2>&1" 8356893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8357893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 8358893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8359893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $exit_status 83604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 8361893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 83624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ test "$mode" = uninstall || test "$mode" = clean; } && 83634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mode_uninstall ${1+"$@"} 8364893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 83654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttest -z "$mode" && { 83664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project help="$generic_help" 83674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify a MODE" 83684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 83694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 83704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttest -z "$exec_cmd" && \ 83714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "invalid operation mode \`$mode'" 8372893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8373893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectif test -n "$exec_cmd"; then 83744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval exec "$exec_cmd" 8375893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_FAILURE 8376893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectfi 8377893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 83784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexit $exit_status 8379893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8380893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8381893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# The TAGs below are defined such that we never get into a situation 8382893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# in which we disable both kinds of libraries. Given conflicting 8383893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# choices, we go for a static library, that is the most portable, 8384893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# since we can't tell whether shared libraries were disabled because 8385893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# the user asked for that or because the platform doesn't support 8386893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# them. This is particularly important on AIX, because we don't 8387893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# support having both static and shared libraries enabled at the same 8388893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# time on that platform, so we default to a shared-only configuration. 8389893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# If a disable-shared tag is given, we'll fallback to a static-only 8390893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# configuration. But we'll never go from static-only to shared-only. 8391893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8392893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 83934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbuild_libtool_libs=no 83944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbuild_old_libs=yes 8395893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### END LIBTOOL TAG CONFIG: disable-shared 8396893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8397893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### BEGIN LIBTOOL TAG CONFIG: disable-static 83984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 8399893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### END LIBTOOL TAG CONFIG: disable-static 8400893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8401893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# Local Variables: 8402893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# mode:shell-script 8403893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# sh-indentation:2 8404893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# End: 84054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# vi:sw=2 84064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8407