14215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 2ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# libtool (GNU libtool) 2.4.2 34215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 44215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 6ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 74215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This is free software; see the source for copying conditions. There is NO 84215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 94215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# GNU Libtool is free software; you can redistribute it and/or modify 11893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# it under the terms of the GNU General Public License as published by 12893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# the Free Software Foundation; either version 2 of the License, or 13893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# (at your option) any later version. 14893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# 154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# As a special exception to the GNU General Public License, 164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# if you distribute this file as part of a program or library that 174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is built using GNU Libtool, you may include this file under the 184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# same distribution terms that you use for the rest of that program. 194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# GNU Libtool is distributed in the hope that it will be useful, but 21893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# WITHOUT ANY WARRANTY; without even the implied warranty of 22893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# General Public License for more details. 24893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# 25893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# You should have received a copy of the GNU General Public License 264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# along with GNU Libtool; see the file COPYING. If not, a copy 274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# can be downloaded from http://www.gnu.org/licenses/gpl.html, 284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# or obtained by writing to the Free Software Foundation, Inc., 294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Usage: $progname [OPTION]... [MODE-ARG]... 324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Provide generalized library-building support services. 34893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# 35ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --config show all configuration variables 36ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --debug enable verbose shell tracing 37ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# -n, --dry-run display commands without modifying any files 38ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --features display basic configuration information and exit 39ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --mode=MODE use operation mode MODE 40ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --preserve-dup-deps don't remove duplicate dependency libraries 41ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --quiet, --silent don't print informational messages 42ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --no-quiet, --no-silent 43ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# print informational messages (default) 44ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --no-warn don't display warning messages 45ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --tag=TAG use configuration variables from tag TAG 46ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# -v, --verbose print more informational messages than default 47ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --no-verbose don't print the extra informational messages 48ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --version print version information 49ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# -h, --help, --help-all print short, long, or detailed help message 504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# MODE must be one of the following: 524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 53ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# clean remove files from the build directory 54ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# compile compile a source file into a libtool object 55ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# execute automatically set library path, then run a program 56ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# finish complete the installation of libtool libraries 57ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# install install libraries or executables 58ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# link create a library or an executable 59ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# uninstall remove libraries from an installed directory 604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 61ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# MODE-ARGS vary depending on the MODE. When passed as first option, 62ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# When reporting a bug, please describe a test case to reproduce it and 664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include the following information: 674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 68ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# host-triplet: $host 69ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# shell: $SHELL 70ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# compiler: $LTCC 71ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# compiler flags: $LTCFLAGS 72ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# linker: $LD (gnu? $with_gnu_ld) 73ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $progname: (GNU libtool) 2.4.2 74ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# automake: $automake_version 75ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# autoconf: $autoconf_version 764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Report bugs to <bug-libtool@gnu.org>. 78ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 79ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# General help using GNU software: <http://www.gnu.org/gethelp/>. 804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 81ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikPROGRAM=libtool 824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectPACKAGE=libtool 83ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikVERSION=2.4.2 845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottTIMESTAMP="" 85ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikpackage_revision=1.3337 864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Be Bourne compatible 884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project emulate sh 904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project NULLCMD=: 914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # is contrary to our usage. Disable this feature. 934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project alias -g '${1+"$@"}'='"$@"' 944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project setopt NO_GLOB_SUBST 954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelse 964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi 984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectBIN_SH=xpg4; export BIN_SH # for Tru64 994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectDUALCASE=1; export DUALCASE # for MKS sh 1004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 101ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# A function that is used when there is no print builtin or printf. 102ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_fallback_echo () 103ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 104ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval 'cat <<_LTECHO_EOF 105ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$1 106ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik_LTECHO_EOF' 107ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 108ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# NLS nuisances: We save the old values to restore during execute mode. 1104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_user_locale= 1114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_safe_locale= 1124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdo 1144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "if test \"\${$lt_var+set}\" = set; then 1154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_$lt_var=\$$lt_var 1164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $lt_var=C 1174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export $lt_var 1184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 1194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 1204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi" 1214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdone 122ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikLC_ALL=C 123ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikLANGUAGE=C 124ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikexport LANGUAGE LC_ALL 1254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$lt_unset CDPATH 1274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 129ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 130ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# is ksh but when the shell is invoked as "sh" and the current value of 131ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# the _XPG environment variable is not equal to 1 (one), the special 132ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# positional parameter $0, within a function call, is the name of the 133ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# function. 134ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikprogpath="$0" 1354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${CP="cp -f"} 139ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiktest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 1404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${MAKE="make"} 1414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${MKDIR="mkdir"} 1424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${MV="mv -f"} 1434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${RM="rm -f"} 1444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 1454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project: ${Xsed="$SED -e 1s/^X//"} 146893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Global variables: 1484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_SUCCESS=0 1494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_FAILURE=1 1504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 1514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 1524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexit_status=$EXIT_SUCCESS 1544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Make sure IFS has a sensible default 1564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_nl=' 1574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project' 1584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIFS=" $lt_nl" 1594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdirname="s,/[^/]*$,," 1614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbasename="s,^.*/,," 1624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 163ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_dirname file append nondir_replacement 164ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Compute the dirname of FILE. If nonempty, add APPEND to the result, 165ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# otherwise set result to NONDIR_REPLACEMENT. 166ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_dirname () 167ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 168ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 169ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "X$func_dirname_result" = "X${1}"; then 170ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_dirname_result="${3}" 171ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 172ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_dirname_result="$func_dirname_result${2}" 173ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 174ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_dirname may be replaced by extended shell implementation 175ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 176ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 177ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_basename file 178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_basename () 179ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 180ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_basename_result=`$ECHO "${1}" | $SED "$basename"` 181ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_basename may be replaced by extended shell implementation 182ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 183ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_dirname_and_basename file append nondir_replacement 1854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# perform func_basename and func_dirname in a single function 1864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# call: 1874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# dirname: Compute the dirname of FILE. If nonempty, 1884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# add APPEND to the result, otherwise set result 1894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# to NONDIR_REPLACEMENT. 1904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# value returned in "$func_dirname_result" 1914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# basename: Compute filename of FILE. 1924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# value retuned in "$func_basename_result" 1934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Implementation must be kept synchronized with func_dirname 1944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# and func_basename. For efficiency, we do not delegate to 1954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# those functions but instead duplicate the functionality here. 1964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_dirname_and_basename () 1974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 198ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Extract subdirectory from the argument. 199ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 200ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "X$func_dirname_result" = "X${1}"; then 201ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_dirname_result="${3}" 202ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 203ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_dirname_result="$func_dirname_result${2}" 204ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 205ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 206ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_dirname_and_basename may be replaced by extended shell implementation 207ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 208ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 209ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_stripname prefix suffix name 210ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# strip PREFIX and SUFFIX off of NAME. 211ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# PREFIX and SUFFIX must not contain globbing or regex special 212ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# characters, hashes, percent signs, but SUFFIX may contain a leading 213ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# dot (in which case that matches only a dot). 214ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_strip_suffix prefix name 215ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_stripname () 216ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 217ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case ${2} in 218ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 219ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 220ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 221ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_stripname may be replaced by extended shell implementation 222ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 223ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 224ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# These SED scripts presuppose an absolute path with a trailing slash. 225ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikpathcar='s,^/\([^/]*\).*$,\1,' 226ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikpathcdr='s,^/[^/]*,,' 227ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikremovedotparts=':dotsl 228ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s@/\./@/@g 229ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik t dotsl 230ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s,/\.$,/,' 231ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikcollapseslashes='s@/\{1,\}@/@g' 232ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfinalslash='s,/*$,/,' 233ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 234ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_normal_abspath PATH 235ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Remove doubled-up and trailing slashes, "." path components, 236ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# and cancel out any ".." path components in PATH after making 237ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# it an absolute path. 238ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# value returned in "$func_normal_abspath_result" 239ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_normal_abspath () 240ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 241ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Start from root dir and reassemble the path. 242ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_result= 243ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_tpath=$1 244ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_altnamespace= 245ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $func_normal_abspath_tpath in 246ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "") 247ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Empty path, that just means $cwd. 248ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname '' '/' "`pwd`" 249ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_result=$func_stripname_result 250ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik return 251ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 252ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # The next three entries are used to spot a run of precisely 253ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # two leading slashes without using negated character classes; 254ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # we take advantage of case's first-match behaviour. 255ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ///*) 256ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Unusual form of absolute path, do nothing. 257ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 258ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik //*) 259ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Not necessarily an ordinary path; POSIX reserves leading '//' 260ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # and for example Cygwin uses it to access remote file shares 261ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # over CIFS/SMB, so we conserve a leading double slash if found. 262ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_altnamespace=/ 263ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 264ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /*) 265ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Absolute path, do nothing. 266ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 267ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) 268ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Relative path, prepend $cwd. 269ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 270ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 271ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 272ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Cancel out all the simple stuff to save iterations. We also want 273ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # the path to end with a slash for ease of parsing, so make sure 274ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # there is one (and only one) here. 275ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 276ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 277ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik while :; do 278ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Processed it all yet? 279ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$func_normal_abspath_tpath" = / ; then 280ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # If we ascended to the root using ".." the result may be empty now. 281ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -z "$func_normal_abspath_result" ; then 282ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_result=/ 283ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 284ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik break 285ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 286ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 287ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -e "$pathcar"` 288ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 289ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -e "$pathcdr"` 290ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Figure out what to do with it 291ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $func_normal_abspath_tcomponent in 292ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "") 293ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Trailing empty path component, ignore it. 294ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 295ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ..) 296ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Parent dir; strip last assembled component from result. 297ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_dirname "$func_normal_abspath_result" 298ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_result=$func_dirname_result 299ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 300ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) 301ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Actual path component, append it. 302ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 303ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 304ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 305ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 306ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Restore leading double-slash if one was found on entry. 307ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 3084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 310ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_relative_path SRCDIR DSTDIR 311ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# generates a relative path from SRCDIR to DSTDIR, with a trailing 312ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# slash if non-empty, suitable for immediately appending a filename 313ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# without needing to append a separator. 314ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# value returned in "$func_relative_path_result" 315ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_relative_path () 316ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 317ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_result= 318ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath "$1" 319ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_tlibdir=$func_normal_abspath_result 320ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_normal_abspath "$2" 321ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_tbindir=$func_normal_abspath_result 322ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 323ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Ascend the tree starting from libdir 324ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik while :; do 325ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # check if we have found a prefix of bindir 326ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $func_relative_path_tbindir in 327ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $func_relative_path_tlibdir) 328ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # found an exact match 329ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_tcancelled= 330ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik break 331ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 332ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $func_relative_path_tlibdir*) 333ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # found a matching prefix 334ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 335ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_tcancelled=$func_stripname_result 336ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -z "$func_relative_path_result"; then 337ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_result=. 338ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 339ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik break 340ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 341ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) 342ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_dirname $func_relative_path_tlibdir 343ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_tlibdir=${func_dirname_result} 344ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "x$func_relative_path_tlibdir" = x ; then 345ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Have to descend all the way to the root! 346ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_result=../$func_relative_path_result 347ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_tcancelled=$func_relative_path_tbindir 348ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik break 349ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 350ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_result=../$func_relative_path_result 351ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 352ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 353ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 355ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Now calculate path; take care to avoid doubling-up slashes. 356ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname '' '/' "$func_relative_path_result" 357ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_result=$func_stripname_result 358ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname '/' '/' "$func_relative_path_tcancelled" 359ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "x$func_stripname_result" != x ; then 360ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 361ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 362ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 363ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Normalisation. If bindir is libdir, return empty string, 364ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # else relative path ending with a slash; either way, target 365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # file name can be directly appended. 366ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test ! -z "$func_relative_path_result"; then 367ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname './' '' "$func_relative_path_result/" 368ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path_result=$func_stripname_result 369ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 370ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 371893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 372893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# The name of this program: 3734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_dirname_and_basename "$progpath" 3744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectprogname=$func_basename_result 375893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Make sure we have an absolute path for reexecution: 3774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcase $progpath in 3784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]*|[A-Za-z]:\\*) ;; 3794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\\/]*) 3804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progdir=$func_dirname_result 3814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progdir=`cd "$progdir" && pwd` 3824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progpath="$progdir/$progname" 3834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 3844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 3854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_IFS="$IFS" 386ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik IFS=${PATH_SEPARATOR-:} 3874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for progdir in $PATH; do 3884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_IFS" 3894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -x "$progdir/$progname" && break 3904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 3914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_IFS" 3924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$progdir" || progdir=`pwd` 3934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progpath="$progdir/$progname" 3944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 3954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectesac 396893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Sed substitution that helps us do robust quoting. It backslashifies 3984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# metacharacters that are still active within double-quoted strings. 3994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectXsed="${SED}"' -e 1s/^X//' 4004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 4014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Same as above, but do not quote variable references. 4034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 4044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 405ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Sed substitution that turns a string into a regex matching for the 406ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# string literally. 407ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiksed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 408ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 409ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Sed substitution that converts a w32 file name or path 410ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# which contains forward slashes, into one that contains 411ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# (escaped) backslashes. A very naive implementation. 412ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 413ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Re-`\' parameter expansions in output of double_quote_subst that were 4154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 4164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# in input to double_quote_subst, that '$' was protected from expansion. 4174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Since each input `\' is now two `\'s, look for any number of runs of 4184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 4194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbs='\\' 4204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbs2='\\\\' 4214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbs4='\\\\\\\\' 4224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdollar='\$' 4234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectsed_double_backslash="\ 4244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/$bs4/&\\ 4254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/g 4264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^$bs2$dollar/$bs&/ 4274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 4284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\n//g" 4294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Standard options: 4314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_dry_run=false 4324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_help=false 4334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_quiet=false 4344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_verbose=false 4354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectopt_warning=: 4364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_echo arg... 4384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message, along with the current mode 4394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# name if it has been set yet. 4404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_echo () 4414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 442ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 4434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 444893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_verbose arg... 4464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message in verbose mode only. 4474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_verbose () 4484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 4494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_verbose && func_echo ${1+"$@"} 450893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A bug in bash halts the script if the last line of a function 4524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # fails when set -e is in force, so we need another command to 4534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # work around that: 4544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 4554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 456893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 457ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_echo_all arg... 458ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Invoke $ECHO with all args, space-separated. 459ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_echo_all () 460ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 461ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "$*" 462ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 463ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_error arg... 4654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error. 4664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_error () 4674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 468ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 4694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 470893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_warning arg... 4724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed warning message to standard error. 4734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_warning () 4744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 475ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 476893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # bash bug again: 4784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 4794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 480893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_fatal_error arg... 4824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error, and exit. 4834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_fatal_error () 4844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 4854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error ${1+"$@"} 4864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_FAILURE 4874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 488893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_fatal_help arg... 4904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error, followed by 4914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# a help hint, and exit. 4924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_fatal_help () 4934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 4944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error ${1+"$@"} 4954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "$help" 4964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 4974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecthelp="Try \`$progname --help' for more information." ## default 498893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 499893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_grep expression filename 5014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Check whether EXPRESSION matches any line of FILENAME, without output. 5024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_grep () 5034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 5044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP "$1" "$2" >/dev/null 2>&1 5054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 5064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mkdir_p directory-path 5094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Make sure the entire path to DIRECTORY-PATH is available. 5104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mkdir_p () 5114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 5124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_directory_path="$1" 5134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_dir_list= 5144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 5164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Protect directory names starting with `-' 5184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $my_directory_path in 5194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -*) my_directory_path="./$my_directory_path" ;; 5204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 5214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # While some portion of DIR does not yet exist... 5234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test ! -d "$my_directory_path"; do 5244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # ...make a list in topmost first order. Use a colon delimited 5254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # list incase some portion of path contains whitespace. 5264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_dir_list="$my_directory_path:$my_dir_list" 5274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the last portion added has no slash in it, the list is done 5294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $my_directory_path in */*) ;; *) break ;; esac 5304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # ...otherwise throw away the child directory and loop 532ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 5334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 534ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 5354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_mkdir_p_IFS="$IFS"; IFS=':' 5374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for my_dir in $my_dir_list; do 5384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_mkdir_p_IFS" 5394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # mkdir can fail with a `File exist' error if two processes 5404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # try to create one of the directories concurrently. Don't 5414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # stop in that case! 5424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MKDIR "$my_dir" 2>/dev/null || : 5434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 5444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_mkdir_p_IFS" 5454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Bail out if we (or some other process) failed to create a directory. 5474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -d "$my_directory_path" || \ 5484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "Failed to create \`$1'" 5494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 551893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 552893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 553893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# func_mktempdir [string] 554893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# Make a temporary directory that won't clash with other running 555893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# libtool processes, and avoids race conditions if possible. If 556893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# given, STRING is the basename for that directory. 557893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectfunc_mktempdir () 558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 559893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project my_template="${TMPDIR-/tmp}/${1-$progname}" 560893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$opt_dry_run" = ":"; then 562893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Return a directory name, but don't create it in dry-run mode 563893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project my_tmpdir="${my_template}-$$" 564893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 565893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 566893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # If mktemp works, use that first and foremost 567893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 568893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 569893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test ! -d "$my_tmpdir"; then 5704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Failing that, at least try and use $RANDOM to avoid a race 5714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_tmpdir="${my_template}-${RANDOM-0}$$" 572893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_mktempdir_umask=`umask` 5744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project umask 0077 5754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MKDIR "$my_tmpdir" 5764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project umask $save_mktempdir_umask 577893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 578893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 579893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # If we're not in dry-run mode, bomb out on failure 5804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -d "$my_tmpdir" || \ 5814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 582893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 583893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 584ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "$my_tmpdir" 585893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 586893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 587893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_quote_for_eval arg 5894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Aesthetically quote ARG to be evaled later. 5904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 5914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is double-quoted, suitable for a subsequent eval, whereas 5924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 5934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# which are still active within double quotes backslashified. 5944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_quote_for_eval () 595893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 5964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $1 in 5974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\\\`\"\$]*) 598ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 5994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 6004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval_unquoted_result="$1" ;; 6014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $func_quote_for_eval_unquoted_result in 6044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Double-quote args containing shell metacharacters to delay 6054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # word splitting, command substitution and and variable 6064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # expansion for a subsequent eval. 6074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Many Bourne shells cannot handle close brackets correctly 6084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # in scan sets, so we specify it separately. 6094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 6104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 6114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 6124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 6134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 614893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 615893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 616893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 617893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_quote_for_expand arg 6194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Aesthetically quote ARG to be evaled later; same as above, 6204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# but do not quote variable references. 6214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_quote_for_expand () 622893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 6234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $1 in 6244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\\\`\"]*) 625ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik my_arg=`$ECHO "$1" | $SED \ 6264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 627893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 6284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_arg="$1" ;; 6294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $my_arg in 6324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Double-quote args containing shell metacharacters to delay 6334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # word splitting and command substitution for a subsequent eval. 6344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Many Bourne shells cannot handle close brackets correctly 6354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # in scan sets, so we specify it separately. 6364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 6374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_arg="\"$my_arg\"" 6384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 6394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand_result="$my_arg" 642893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 643893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 644893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_show_eval cmd [fail_exp] 6464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 6474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 6484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is given, then evaluate it. 6494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_show_eval () 650893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 6514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_cmd="$1" 6524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_fail_exp="${2-:}" 653893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ${opt_silent-false} || { 6554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand "$my_cmd" 6564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "func_echo $func_quote_for_expand_result" 6574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 6584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ${opt_dry_run-false}; then :; else 6604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$my_cmd" 6614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_status=$? 6624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$my_status" -eq 0; then :; else 6634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "(exit $my_status); $my_fail_exp" 6644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 665893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 666893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 667893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_show_eval_locale cmd [fail_exp] 6704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 6714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 6724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# is given, then evaluate it. Use the saved locale for evaluation. 6734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_show_eval_locale () 674893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project{ 6754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_cmd="$1" 6764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_fail_exp="${2-:}" 677893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ${opt_silent-false} || { 6794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand "$my_cmd" 6804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "func_echo $func_quote_for_expand_result" 6814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 6824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 6834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ${opt_dry_run-false}; then :; else 6844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$lt_user_locale 6854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $my_cmd" 6864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_status=$? 6874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$lt_safe_locale" 6884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$my_status" -eq 0; then :; else 6894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "(exit $my_status); $my_fail_exp" 690893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 6914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 692893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project} 693893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_tr_sh 695ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Turn $1 into a string suitable for a shell variable name. 696ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result is stored in $func_tr_sh_result. All characters 697ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 698ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# if $1 begins with a digit, a '_' is prepended as well. 699ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_tr_sh () 700ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 701ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $1 in 702ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik [0-9]* | *[!a-zA-Z0-9_]*) 703ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 704ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 705ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik * ) 706ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_tr_sh_result=$1 707ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 708ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 709ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 7104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_version 7134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo version message to standard output and exit. 7144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_version () 7154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 716ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 717ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 718ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $SED -n '/(C)/!b go 719ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik :more 720ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /\./!{ 721ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik N 722ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s/\n# / / 723ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik b more 724ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 725ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik :go 726ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /^# '$PROGRAM' (GNU /,/# warranty; / { 7274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# // 7284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# *$// 7294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 7304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p 7314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project }' < "$progpath" 7324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $? 7334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 7344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_usage 7364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo short help message to standard output and exit. 7374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_usage () 7384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 739ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 740ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 741ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $SED -n '/^# Usage:/,/^# *.*--help/ { 7424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# // 7434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# *$// 7444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\$progname/'$progname'/ 7454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p 7464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project }' < "$progpath" 747ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 7484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "run \`$progname --help | more' for full usage" 7494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $? 7504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 7514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 752ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_help [NOEXIT] 753ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Echo long help message to standard output and exit, 754ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# unless 'noexit' is passed as argument. 7554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_help () 7564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 757ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 758ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 7594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -n '/^# Usage:/,/# Report bugs to/ { 760ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik :print 7614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# // 7624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/^# *$// 7634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$progname*'$progname'* 7644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$host*'"$host"'* 7654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$SHELL*'"$SHELL"'* 7664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$LTCC*'"$LTCC"'* 7674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$LTCFLAGS*'"$LTCFLAGS"'* 7684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s*\$LD*'"$LD"'* 7694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s/\$with_gnu_ld/'"$with_gnu_ld"'/ 770ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 771ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 7724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p 773ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik d 774ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 775ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /^# .* home page:/b print 776ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /^# General help using/b print 777ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ' < "$progpath" 778ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ret=$? 779ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -z "$1"; then 780ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik exit $ret 781ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 7824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 7834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_missing_arg argname 7854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error and set global 7864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# exit_cmd. 7874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_missing_arg () 7884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 789ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 790ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 791ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_error "missing argument for $1." 7924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit_cmd=exit 7934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 7944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 796ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_split_short_opt shortopt 797ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Set func_split_short_opt_name and func_split_short_opt_arg shell 798ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# variables after splitting SHORTOPT after the 2nd character. 799ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_split_short_opt () 800ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 801ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik my_sed_short_opt='1s/^\(..\).*$/\1/;q' 802ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 8034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 804ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 805ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 806ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_split_short_opt may be replaced by extended shell implementation 807ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 808ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 809ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_split_long_opt longopt 810ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Set func_split_long_opt_name and func_split_long_opt_arg shell 811ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# variables after splitting LONGOPT at the `=' sign. 812ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_split_long_opt () 813ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 814ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 815ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik my_sed_long_arg='1s/^--[^=]*=//' 816ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 817ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 818ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 819ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_split_long_opt may be replaced by extended shell implementation 820ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 821ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikexit_cmd=: 8224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 825893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 826893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmagic="%%%MAGIC variable%%%" 8284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmagic_exe="%%%MAGIC EXE variable%%%" 829893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Global variables. 8314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectnonopt= 8324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectpreserve_args= 8334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlo2o="s/\\.lo\$/.${objext}/" 8344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecto2lo="s/\\.${objext}\$/.lo/" 8354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectextracted_archives= 8364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectextracted_serial=0 837893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# If this variable is set in any of the actions, the command in it 8394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# will be execed at the end. This prevents here-documents from being 8404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# left over by shells. 8414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexec_cmd= 842893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 843ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_append var value 844ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Append VALUE to the end of shell variable VAR. 845ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append () 846ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 847ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval "${1}=\$${1}\${2}" 848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_append may be replaced by extended shell implementation 849ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 850ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_append_quoted var value 851ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Quote VALUE and append to the end of shell variable VAR, separated 852ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# by a space. 853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append_quoted () 854ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 855ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_quote_for_eval "${2}" 856ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 857ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_append_quoted may be replaced by extended shell implementation 858ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 859ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 860ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_arith arithmetic-term... 861ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_arith () 862ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 863ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_arith_result=`expr "${@}"` 864ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_arith may be replaced by extended shell implementation 865ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 866ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 867ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_len string 868ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# STRING may not start with a hyphen. 869ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_len () 870ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 871ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 872ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_len may be replaced by extended shell implementation 873ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 874ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 875ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_lo2o object 876ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_lo2o () 877ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 878ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 879ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_lo2o may be replaced by extended shell implementation 880ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 881ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 882ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_xform libobj-or-source 883ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_xform () 884ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 885ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 886ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} # func_xform may be replaced by extended shell implementation 887ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 888ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 8894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_fatal_configuration arg... 8904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Echo program name prefixed message to standard error, followed by 8914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# a configuration failure hint, and exit. 8924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_fatal_configuration () 8934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 8944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error ${1+"$@"} 8954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "See the $PACKAGE documentation for more information." 8964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "Fatal configuration error." 8974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 8984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 8994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 9004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_config 9014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Display the configuration for all the tags in this script. 9024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_config () 9034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 9044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project re_begincf='^# ### BEGIN LIBTOOL' 9054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project re_endcf='^# ### END LIBTOOL' 9064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 9074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Default configuration. 9084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 909893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 910893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Now print the configurations for the tags. 911893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for tagname in $taglist; do 9124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 913893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 914893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $? 9164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 917893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_features 9194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Display the features supported by this script. 9204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_features () 9214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 922ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "host: $host" 923893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$build_libtool_libs" = yes; then 924ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "enable shared libraries" 925893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 926ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "disable shared libraries" 927893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 928893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$build_old_libs" = yes; then 929ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "enable static libraries" 930893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 931ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "disable static libraries" 932893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 934893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $? 9354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 9364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 9374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_enable_tag tagname 9384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Verify that TAGNAME is valid, and either flag an error and exit, or 9394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 9404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# variable here. 9414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_enable_tag () 9424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 9434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Global variable: 9444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tagname="$1" 945893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 9474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 9484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project sed_extractcf="/$re_begincf/,/$re_endcf/p" 949893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Validate tagname. 9514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $tagname in 9524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[!-_A-Za-z0-9,/]*) 9534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "invalid tag name: $tagname" 9544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 9554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 956893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't test for the "default" C tag, as we know it's 9584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # there but not specially marked. 9594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $tagname in 9604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project CC) ;; 9614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 9624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 9634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project taglist="$taglist $tagname" 9644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 9654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Evaluate the configuration. Be careful to quote the path 9664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # and the sed script, to avoid splitting on whitespace, but 9674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # also don't use non-portable quotes within backquotes within 9684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # quotes we have to do it in 2 steps: 9694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 9704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$extractedcf" 9714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 9724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "ignoring unknown tag $tagname" 9734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 9744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 9754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 9764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 977893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 978ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_check_version_match 979ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Ensure that we are using m4 macros, and libtool script from the same 980ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# release of libtool. 981ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_check_version_match () 9824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 983ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$package_revision" != "$macro_revision"; then 984ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$VERSION" != "$macro_version"; then 985ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -z "$macro_version"; then 986ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik cat >&2 <<_LT_EOF 987ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 988ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: definition of this LT_INIT comes from an older release. 989ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 990ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: and run autoconf again. 991ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik_LT_EOF 992ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 993ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik cat >&2 <<_LT_EOF 994ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 995ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 996ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 997ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: and run autoconf again. 998ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik_LT_EOF 999ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1000ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 1001ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik cat >&2 <<_LT_EOF 1002ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1003ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: but the definition of this LT_INIT comes from revision $macro_revision. 1004ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: You should recreate aclocal.m4 with macros from revision $package_revision 1005ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik$progname: of $PACKAGE $VERSION and run autoconf again. 1006ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik_LT_EOF 1007ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1008ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1009ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik exit $EXIT_MISMATCH 1010ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1011ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1012ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1013ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1014ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Shorthand for --mode=foo, only valid as the first argument 1015ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikcase $1 in 1016ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikclean|clea|cle|cl) 1017ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift; set dummy --mode clean ${1+"$@"}; shift 1018ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1019ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikcompile|compil|compi|comp|com|co|c) 1020ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift; set dummy --mode compile ${1+"$@"}; shift 1021ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1022ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikexecute|execut|execu|exec|exe|ex|e) 1023ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift; set dummy --mode execute ${1+"$@"}; shift 1024ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1025ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfinish|finis|fini|fin|fi|f) 1026ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift; set dummy --mode finish ${1+"$@"}; shift 1027ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1028ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikinstall|instal|insta|inst|ins|in|i) 1029ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift; set dummy --mode install ${1+"$@"}; shift 1030ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1031ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklink|lin|li|l) 1032ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift; set dummy --mode link ${1+"$@"}; shift 1033ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1034ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 1035ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift; set dummy --mode uninstall ${1+"$@"}; shift 1036ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1037ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikesac 1038ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1039ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1040ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1041ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Option defaults: 1042ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_debug=: 1043ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_dry_run=false 1044ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_config=false 1045ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_preserve_dup_deps=false 1046ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_features=false 1047ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_finish=false 1048ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_help=false 1049ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_help_all=false 1050ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_silent=: 1051ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_warning=: 1052ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_verbose=: 1053ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_silent=false 1054ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_verbose=false 1055893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1056893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1057ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Parse options once, thoroughly. This comes as soon as possible in the 1058ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# script to make things like `--version' happen as quickly as we can. 1059ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1060ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # this just eases exit handling 1061ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik while test $# -gt 0; do 10624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opt="$1" 10634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 10644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $opt in 1065ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --debug|-x) opt_debug='set -x' 10664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_echo "enabling shell trace mode" 10674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 10684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1069ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --dry-run|--dryrun|-n) 1070ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_dry_run=: 10714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1072ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --config) 1073ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_config=: 1074ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_config 1075ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1076ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --dlopen|-dlopen) 1077ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik optarg="$1" 1078ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_dlopen="${opt_dlopen+$opt_dlopen 1079ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik}$optarg" 10804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 10814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 10824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project --preserve-dup-deps) 1083ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_preserve_dup_deps=: 10844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1085ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --features) 1086ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_features=: 1087ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_features 1088ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1089ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --finish) 1090ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_finish=: 1091ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikset dummy --mode finish ${1+"$@"}; shift 1092ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1093ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --help) 1094ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_help=: 1095ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1096ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --help-all) 1097ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_help_all=: 1098ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_help=': help-all' 1099ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1100ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --mode) 1101ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test $# = 0 && func_missing_arg $opt && break 1102ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik optarg="$1" 1103ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_mode="$optarg" 1104ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikcase $optarg in 1105ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Valid mode arguments: 1106ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik clean|compile|execute|finish|install|link|relink|uninstall) ;; 1107ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1108ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Catch anything else as an error 1109ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_error "invalid argument for $opt" 1110ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik exit_cmd=exit 1111ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik break 1112ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1113ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikesac 1114ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift 1115ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1116ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --no-silent|--no-quiet) 11174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opt_silent=false 1118ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt" 11194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1120ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --no-warning|--no-warn) 1121ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_warning=false 1122ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt" 1123ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1124ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --no-verbose) 1125ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_verbose=false 1126ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt" 1127ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1128ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --silent|--quiet) 1129ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_silent=: 1130ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt" 1131ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_verbose=false 1132ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1133ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --verbose|-v) 1134ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_verbose=: 1135ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt" 1136ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikopt_silent=false 1137ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1138ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --tag) 1139ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test $# = 0 && func_missing_arg $opt && break 1140ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik optarg="$1" 1141ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_tag="$optarg" 1142ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_append preserve_args " $opt $optarg" 1143ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_enable_tag "$optarg" 11444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 11454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 11464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1147ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -\?|-h) func_usage ;; 1148ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --help) func_help ;; 1149ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --version) func_version ;; 1150ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 11514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Separate optargs to long options: 1152ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --*=*) 1153ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_split_long_opt "$opt" 1154ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 11554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 11564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 11574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1158ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Separate non-argument short options: 1159ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -\?*|-h*|-n*|-v*) 1160ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_split_short_opt "$opt" 1161ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 1162ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift 11634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 1164ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1165ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --) break ;; 1166ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -*) func_fatal_help "unrecognized option \`$opt'" ;; 1167ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) set dummy "$opt" ${1+"$@"}; shift; break ;; 11684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 11694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 11704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1171ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Validate options: 1172ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1173ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # save first non-option argument 1174ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$#" -gt 0; then 1175ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik nonopt="$opt" 1176ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift 1177ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1179ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # preserve --debug 1180ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test "$opt_debug" = : || func_append preserve_args " --debug" 11814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 11824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 11835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw* | *pw32* | *cegcc*) 11844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # don't eliminate duplications in $postdeps and $predeps 11854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opt_duplicate_compiler_generated_deps=: 1186893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1187893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 1188ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 11894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 11904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 1191893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1192ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_help || { 1193ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Sanity checks first: 1194ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_check_version_match 11954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1196ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1197ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_fatal_configuration "not configured to build any kind of library" 11984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 11994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1200ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Darwin sucks 1201ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval std_shrext=\"$shrext_cmds\" 12024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1203ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Only execute mode is allowed to have -dlopen flags. 1204ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 1205ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_error "unrecognized option \`-dlopen'" 1206ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "$help" 1>&2 1207ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik exit $EXIT_FAILURE 1208ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1209893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1210ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Change the help message to a mode-specific one. 1211ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik generic_help="$help" 1212ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik help="Try \`$progname --help --mode=$opt_mode' for more information." 1213ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 12144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 12154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1216ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Bail if the options were screwed 1217ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $exit_cmd $EXIT_FAILURE 1218ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 12194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 12204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1221893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1222893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1223ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik## ----------- ## 1224ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik## Main. ## 1225ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik## ----------- ## 1226893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 12274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_lalib_p file 12284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool `.la' library or `.lo' object file. 12294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out 12304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters. 12314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_lalib_p () 12324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 12335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott test -f "$1" && 12345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott $SED -e 4q "$1" 2>/dev/null \ 12355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 12364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1237893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 12384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_lalib_unsafe_p file 12394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool `.la' library or `.lo' object file. 12404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function implements the same check as func_lalib_p without 12414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# resorting to external programs. To this end, it redirects stdin and 12424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# closes it afterwards, without saving the original file descriptor. 12434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# As a safety measure, use it only where a negative result would be 12444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# fatal anyway. Works if `file' does not exist. 12454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_lalib_unsafe_p () 12464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 12474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lalib_p=no 12485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 12494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lalib_p_l in 1 2 3 4 12504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 12514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project read lalib_p_line 12524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$lalib_p_line" in 12534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 12544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 12554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 12564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec 0<&5 5<&- 12574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 12584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$lalib_p" = yes 12594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1260893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 12614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_script_p file 12624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool wrapper script 12634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out 12644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters. 12654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_script_p () 12664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 12674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lalib_p "$1" 12684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1269893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 12704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_executable_p file 12714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool wrapper executable 12724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out 12734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters. 12744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_executable_p () 12754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 12764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_exec_suffix= 12774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $1 in 12784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.exe) ;; 12794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) func_ltwrapper_exec_suffix=.exe ;; 12804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 12814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 12824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1283893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 12844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_scriptname file 12854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Assumes file is an ltwrapper_executable 12864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# uses $file to determine the appropriate filename for a 12874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# temporary ltwrapper_script. 12884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_scriptname () 12894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 1290ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_dirname_and_basename "$1" "" "." 1291ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname '' '.exe' "$func_basename_result" 1292ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 12934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1294893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 12954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_ltwrapper_p file 12964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# True iff FILE is a libtool wrapper script or wrapper executable 12974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This function is only a basic sanity check; it will hardly flush out 12984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# determined imposters. 12994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_ltwrapper_p () 13004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 13014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 13024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 1303893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 1304893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 13054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_execute_cmds commands fail_cmd 13064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Execute tilde-delimited COMMANDS. 13074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# If FAIL_CMD is given, eval that upon failure. 13084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# FAIL_CMD may read-access the current command in variable CMD! 13094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_execute_cmds () 13104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 13114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 13124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs=$IFS; IFS='~' 13134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for cmd in $1; do 13144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS=$save_ifs 13154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmd=\"$cmd\" 13164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$cmd" "${2-:}" 13174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 13184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS=$save_ifs 13194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 13204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 13214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 13224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_source file 13234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Source FILE, adding directory component if necessary. 13244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Note that it is not necessary on cygwin/mingw to append a dot to 13254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 13264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# behavior happens only for exec(3), not for open(2)! Also, sourcing 13274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# `FILE.' does not work on cygwin managed mounts. 13284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_source () 13294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 13304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 13314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $1 in 13324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project */* | *\\*) . "$1" ;; 13334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) . "./$1" ;; 13344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 13354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 13364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 13374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1338ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_resolve_sysroot PATH 1339ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Replace a leading = in PATH with a sysroot. Store the result into 1340ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_resolve_sysroot_result 1341ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_resolve_sysroot () 1342ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1343ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot_result=$1 1344ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $func_resolve_sysroot_result in 1345ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik =*) 1346ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname '=' '' "$func_resolve_sysroot_result" 1347ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 1348ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1349ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 1350ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1351ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1352ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_replace_sysroot PATH 1353ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# If PATH begins with the sysroot, replace it with = and 1354ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# store the result into func_replace_sysroot_result. 1355ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_replace_sysroot () 1356ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1357ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case "$lt_sysroot:$1" in 1358ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ?*:"$lt_sysroot"*) 1359ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname "$lt_sysroot" '' "$1" 1360ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_replace_sysroot_result="=$func_stripname_result" 1361ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1362ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) 1363ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Including no sysroot. 1364ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_replace_sysroot_result=$1 1365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1366ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 1367ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1368ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 13694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_infer_tag arg 13704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Infer tagged configuration to use if any are available and 13714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# if one wasn't chosen via the "--tag" command line option. 13724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Only attempt this if the compiler in the base compile 13734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# command doesn't match the default compiler. 13744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# arg is usually of the form 'gcc ...' 13754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_infer_tag () 13764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 13774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 13784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$available_tags" && test -z "$tagname"; then 13794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project CC_quoted= 13804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg in $CC; do 1381ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append_quoted CC_quoted "$arg" 13824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 1383ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik CC_expanded=`func_echo_all $CC` 1384ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik CC_quoted_expanded=`func_echo_all $CC_quoted` 13854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $@ in 13864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Blanks in the command may have been stripped by the calling shell, 13874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # but not from the CC environment variable when configure was run. 1388ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1389ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 13904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Blanks at the start of $base_compile will cause this to fail 13914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # if we don't check for them as well. 13924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 13934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for z in $available_tags; do 13944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 13954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Evaluate the configuration. 13964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 13974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project CC_quoted= 13984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg in $CC; do 13994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Double-quote args containing other shell metacharacters. 1400ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append_quoted CC_quoted "$arg" 14014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 1402ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik CC_expanded=`func_echo_all $CC` 1403ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik CC_quoted_expanded=`func_echo_all $CC_quoted` 14044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$@ " in 1405ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1406ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 14074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The compiler in the base compile command matches 14084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the one in the tagged configuration. 14094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Assume this is the tagged configuration we want. 14104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tagname=$z 14114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 1412893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 1413893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 14144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 14154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 14164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If $tagname still isn't set, then no tagged configuration 14174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # was found and let the user know that the "--tag" command 14184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # line option must be used. 14194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$tagname"; then 14204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_echo "unable to infer tagged configuration" 14214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "specify a tag with \`--tag'" 14224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# else 14234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_verbose "using $tagname tagged configuration" 14244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 14254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 14264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 14274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 14284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 14294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 14304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 14314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 14324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_write_libtool_object output_name pic_name nonpic_name 14334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Create a libtool object file (analogous to a ".la" file), 14344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# but don't create it if we're doing a dry run. 14354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_write_libtool_object () 14364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 14374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project write_libobj=${1} 14384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes; then 14394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project write_lobj=\'${2}\' 14404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 14414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project write_lobj=none 14424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 14434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 14444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = yes; then 14454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project write_oldobj=\'${3}\' 14464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 14474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project write_oldobj=none 14484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 14494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 14504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 14514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat >${write_libobj}T <<EOF 14524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# $write_libobj - a libtool object file 14534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 14544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 14554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Please DO NOT delete this file! 14564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# It is necessary for linking the library. 14574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 14584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Name of the PIC object. 14594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectpic_object=$write_lobj 14604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 14614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Name of the non-PIC object 14624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectnon_pic_object=$write_oldobj 14634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 14644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 14654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV "${write_libobj}T" "${write_libobj}" 14664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 14674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 14684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1469ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1470ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik################################################## 1471ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 1472ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik################################################## 1473ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1474ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_core_file_wine_to_w32 ARG 1475ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Helper function used by file name conversion functions when $build is *nix, 1476ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# and $host is mingw, cygwin, or some other w32 environment. Relies on a 1477ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# correctly configured wine environment available, with the winepath program 1478ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in $build's $PATH. 1479ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 1480ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG is the $build file name to be converted to w32 format. 1481ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result is available in $func_convert_core_file_wine_to_w32_result, and will 1482ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# be empty on error (or when ARG is empty) 1483ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_core_file_wine_to_w32 () 1484ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1485ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1486ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_file_wine_to_w32_result="$1" 1487ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1488ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Unfortunately, winepath does not exit with a non-zero error code, so we 1489ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # are forced to check the contents of stdout. On the other hand, if the 1490ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # command is not found, the shell will set an exit code of 127 and print 1491ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # *an error message* to stdout. So we must check for both error code of 1492ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # zero AND non-empty stdout, which explains the odd construction: 1493ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 1494ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 1495ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 1496ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $SED -e "$lt_sed_naive_backslashify"` 1497ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 1498ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_file_wine_to_w32_result= 1499ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1500ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1501ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1502ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end: func_convert_core_file_wine_to_w32 1503ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1504ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1505ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_core_path_wine_to_w32 ARG 1506ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Helper function used by path conversion functions when $build is *nix, and 1507ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 1508ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# configured wine environment available, with the winepath program in $build's 1509ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $PATH. Assumes ARG has no leading or trailing path separator characters. 1510ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 1511ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG is path to be converted from $build format to win32. 1512ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result is available in $func_convert_core_path_wine_to_w32_result. 1513ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Unconvertible file (directory) names in ARG are skipped; if no directory names 1514ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# are convertible, then the result may be empty. 1515ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_core_path_wine_to_w32 () 1516ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1517ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1518ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # unfortunately, winepath doesn't convert paths, only file names 1519ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_path_wine_to_w32_result="" 1520ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1521ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik oldIFS=$IFS 1522ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik IFS=: 1523ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for func_convert_core_path_wine_to_w32_f in $1; do 1524ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik IFS=$oldIFS 1525ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 1526ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$func_convert_core_file_wine_to_w32_result" ; then 1527ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -z "$func_convert_core_path_wine_to_w32_result"; then 1528ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 1529ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 1530ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 1531ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1532ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1533ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 1534ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik IFS=$oldIFS 1535ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1536ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1537ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end: func_convert_core_path_wine_to_w32 1538ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1539ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1540ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygpath ARGS... 1541ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 1542ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 1543ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 1544ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# (2), returns the Cygwin file name or path in func_cygpath_result (input 1545ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# file name or path is assumed to be in w32 format, as previously converted 1546ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# from $build's *nix or MSYS format). In case (3), returns the w32 file name 1547ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# or path in func_cygpath_result (input file name or path is assumed to be in 1548ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Cygwin format). Returns an empty string on error. 1549ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 1550ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARGS are passed to cygpath, with the last one being the file name or path to 1551ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# be converted. 1552ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 1553ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 1554ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# environment variable; do not put it in $PATH. 1555ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygpath () 1556ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1557ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1558ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 1559ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 1560ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$?" -ne 0; then 1561ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # on failure, ensure result is empty 1562ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_cygpath_result= 1563ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1564ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 1565ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_cygpath_result= 1566ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 1567ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1568ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1569ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#end: func_cygpath 1570ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1571ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1572ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_core_msys_to_w32 ARG 1573ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name or path ARG from MSYS format to w32 format. Return 1574ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# result in func_convert_core_msys_to_w32_result. 1575ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_core_msys_to_w32 () 1576ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1577ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1578ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # awkward: cmd appends spaces to result 1579ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 1580ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 1581ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1582ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#end: func_convert_core_msys_to_w32 1583ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1584ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1585ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_check ARG1 ARG2 1586ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Verify that ARG1 (a file name in $build format) was converted to $host 1587ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# format in ARG2. Otherwise, emit an error message, but continue (resetting 1588ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result to ARG1). 1589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_check () 1590ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1591ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1592ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -z "$2" && test -n "$1" ; then 1593ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_error "Could not determine host file name corresponding to" 1594ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_error " \`$1'" 1595ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_error "Continuing, but uninstalled executables may not work." 1596ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Fallback: 1597ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$1" 1598ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1599ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1600ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_check 1601ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1602ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1603ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 1604ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Verify that FROM_PATH (a path in $build format) was converted to $host 1605ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 1606ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result to a simplistic fallback value (see below). 1607ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_check () 1608ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1609ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1610ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -z "$4" && test -n "$3"; then 1611ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_error "Could not determine the host path corresponding to" 1612ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_error " \`$3'" 1613ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_error "Continuing, but uninstalled executables may not work." 1614ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Fallback. This is a deliberately simplistic "conversion" and 1615ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # should not be "improved". See libtool.info. 1616ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "x$1" != "x$2"; then 1617ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_replace_pathsep_chars="s|$1|$2|g" 1618ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result=`echo "$3" | 1619ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $SED -e "$lt_replace_pathsep_chars"` 1620ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 1621ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$3" 1622ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1623ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1624ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1625ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_check 1626ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1627ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1628ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 1629ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 1630ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# and appending REPL if ORIG matches BACKPAT. 1631ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_front_back_pathsep () 1632ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1633ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1634ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $4 in 1635ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $1 ) func_to_host_path_result="$3$func_to_host_path_result" 1636ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1637ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 1638ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $4 in 1639ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $2 ) func_append func_to_host_path_result "$3" 1640ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1641ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 1642ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1643ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_front_back_pathsep 1644ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1645ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1646ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik################################################## 1647ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $build to $host FILE NAME CONVERSION FUNCTIONS # 1648ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik################################################## 1649ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# invoked via `$to_host_file_cmd ARG' 1650ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 1651ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# In each case, ARG is the path to be converted from $build to $host format. 1652ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result will be available in $func_to_host_file_result. 1653ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1654ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1655ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file ARG 1656ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Converts the file name ARG from $build format to $host format. Return result 1657ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in func_to_host_file_result. 1658ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_to_host_file () 1659ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1660ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1661ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $to_host_file_cmd "$1" 1662ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1663ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_to_host_file 1664ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1665ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1666ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_tool_file ARG LAZY 1667ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# converts the file name ARG from $build format to toolchain format. Return 1668ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# result in func_to_tool_file_result. If the conversion in use is listed 1669ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in (the comma separated) LAZY, no conversion takes place. 1670ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_to_tool_file () 1671ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1672ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1673ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case ,$2, in 1674ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *,"$to_tool_file_cmd",*) 1675ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file_result=$1 1676ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1677ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) 1678ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $to_tool_file_cmd "$1" 1679ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file_result=$func_to_host_file_result 1680ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 1681ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 1682ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1683ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_to_tool_file 1684ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1685ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1686ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_noop ARG 1687ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Copy ARG to func_to_host_file_result. 1688ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_noop () 1689ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1690ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$1" 1691ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1692ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_noop 1693ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1695ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_msys_to_w32 ARG 1696ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 1697ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# conversion to w32 is not available inside the cwrapper. Returns result in 1698ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result. 1699ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_msys_to_w32 () 1700ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1701ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1702ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$1" 1703ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1704ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_msys_to_w32 "$1" 1705ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$func_convert_core_msys_to_w32_result" 1706ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1707ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_file_check "$1" "$func_to_host_file_result" 1708ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1709ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_msys_to_w32 1710ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1711ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1712ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_cygwin_to_w32 ARG 1713ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name ARG from Cygwin to w32 format. Returns result in 1714ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result. 1715ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_cygwin_to_w32 () 1716ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1717ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1718ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$1" 1719ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1720ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 1721ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # LT_CYGPATH in this case. 1722ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result=`cygpath -m "$1"` 1723ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1724ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_file_check "$1" "$func_to_host_file_result" 1725ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1726ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_cygwin_to_w32 1727ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1728ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1729ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_nix_to_w32 ARG 1730ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name ARG from *nix to w32 format. Requires a wine environment 1731ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# and a working winepath. Returns result in func_to_host_file_result. 1732ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_nix_to_w32 () 1733ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1734ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1735ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$1" 1736ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1737ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_file_wine_to_w32 "$1" 1738ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 1739ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1740ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_file_check "$1" "$func_to_host_file_result" 1741ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1742ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_nix_to_w32 1743ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1744ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1745ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_msys_to_cygwin ARG 1746ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1747ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Returns result in func_to_host_file_result. 1748ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_msys_to_cygwin () 1749ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1750ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1751ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$1" 1752ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1753ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_msys_to_w32 "$1" 1754ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_cygpath -u "$func_convert_core_msys_to_w32_result" 1755ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$func_cygpath_result" 1756ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1757ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_file_check "$1" "$func_to_host_file_result" 1758ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1759ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_msys_to_cygwin 1760ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1761ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1762ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_file_nix_to_cygwin ARG 1763ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 1764ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 1765ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in func_to_host_file_result. 1766ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_file_nix_to_cygwin () 1767ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1768ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1769ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$1" 1770ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1771ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 1772ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_file_wine_to_w32 "$1" 1773ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 1774ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_file_result="$func_cygpath_result" 1775ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1776ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_file_check "$1" "$func_to_host_file_result" 1777ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1778ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_file_nix_to_cygwin 1779ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1780ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1781ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik############################################# 1782ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $build to $host PATH CONVERSION FUNCTIONS # 1783ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik############################################# 1784ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# invoked via `$to_host_path_cmd ARG' 1785ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 1786ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# In each case, ARG is the path to be converted from $build to $host format. 1787ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# The result will be available in $func_to_host_path_result. 1788ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 1789ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Path separators are also converted from $build format to $host format. If 1790ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG begins or ends with a path separator character, it is preserved (but 1791ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# converted to $host format) on output. 1792ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 1793ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# All path conversion functions are named using the following convention: 1794ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# file name conversion function : func_convert_file_X_to_Y () 1795ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# path conversion function : func_convert_path_X_to_Y () 1796ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# where, for any given $build/$host combination the 'X_to_Y' value is the 1797ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# same. If conversion functions are added for new $build/$host combinations, 1798ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# the two new functions must follow this pattern, or func_init_to_host_path_cmd 1799ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# will break. 1800ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1801ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1802ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_init_to_host_path_cmd 1803ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Ensures that function "pointer" variable $to_host_path_cmd is set to the 1804ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# appropriate value, based on the value of $to_host_file_cmd. 1805ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikto_host_path_cmd= 1806ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_init_to_host_path_cmd () 1807ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1808ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1809ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -z "$to_host_path_cmd"; then 1810ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 1811ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik to_host_path_cmd="func_convert_path_${func_stripname_result}" 1812ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1813ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1814ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1815ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1816ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_path ARG 1817ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Converts the path ARG from $build format to $host format. Return result 1818ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# in func_to_host_path_result. 1819ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_to_host_path () 1820ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1821ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1822ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_init_to_host_path_cmd 1823ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $to_host_path_cmd "$1" 1824ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1825ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_to_host_path 1826ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1827ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1828ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_noop ARG 1829ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Copy ARG to func_to_host_path_result. 1830ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_noop () 1831ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1832ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$1" 1833ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1834ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_noop 1835ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1836ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1837ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_msys_to_w32 ARG 1838ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 1839ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# conversion to w32 is not available inside the cwrapper. Returns result in 1840ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_path_result. 1841ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_msys_to_w32 () 1842ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1843ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1844ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$1" 1845ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1846ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Remove leading and trailing path separator characters from ARG. MSYS 1847ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 1848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # and winepath ignores them completely. 1849ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname : : "$1" 1850ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_tmp1=$func_stripname_result 1851ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1852ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$func_convert_core_msys_to_w32_result" 1853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_path_check : ";" \ 1854ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "$func_to_host_path_tmp1" "$func_to_host_path_result" 1855ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1856ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1857ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1858ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_msys_to_w32 1859ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1860ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1861ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_cygwin_to_w32 ARG 1862ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert path ARG from Cygwin to w32 format. Returns result in 1863ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result. 1864ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_cygwin_to_w32 () 1865ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1866ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1867ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$1" 1868ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1869ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # See func_convert_path_msys_to_w32: 1870ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname : : "$1" 1871ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_tmp1=$func_stripname_result 1872ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 1873ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_path_check : ";" \ 1874ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "$func_to_host_path_tmp1" "$func_to_host_path_result" 1875ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1876ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1877ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1878ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_cygwin_to_w32 1879ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1880ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1881ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_nix_to_w32 ARG 1882ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert path ARG from *nix to w32 format. Requires a wine environment and 1883ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# a working winepath. Returns result in func_to_host_file_result. 1884ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_nix_to_w32 () 1885ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1886ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1887ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$1" 1888ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1889ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # See func_convert_path_msys_to_w32: 1890ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname : : "$1" 1891ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_tmp1=$func_stripname_result 1892ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1893ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 1894ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_path_check : ";" \ 1895ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "$func_to_host_path_tmp1" "$func_to_host_path_result" 1896ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1897ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1898ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1899ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_nix_to_w32 1900ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1901ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1902ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_msys_to_cygwin ARG 1903ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1904ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Returns result in func_to_host_file_result. 1905ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_msys_to_cygwin () 1906ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1907ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1908ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$1" 1909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1910ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # See func_convert_path_msys_to_w32: 1911ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname : : "$1" 1912ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_tmp1=$func_stripname_result 1913ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1914ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 1915ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$func_cygpath_result" 1916ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_path_check : : \ 1917ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "$func_to_host_path_tmp1" "$func_to_host_path_result" 1918ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1919ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1920ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1921ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_msys_to_cygwin 1922ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1923ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1924ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_convert_path_nix_to_cygwin ARG 1925ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 1926ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 1927ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_to_host_file_result. 1928ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_convert_path_nix_to_cygwin () 1929ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 1930ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 1931ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$1" 1932ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$1"; then 1933ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Remove leading and trailing path separator characters from 1934ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # ARG. msys behavior is inconsistent here, cygpath turns them 1935ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # into '.;' and ';.', and winepath ignores them completely. 1936ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname : : "$1" 1937ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_tmp1=$func_stripname_result 1938ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1939ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 1940ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path_result="$func_cygpath_result" 1941ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_path_check : : \ 1942ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "$func_to_host_path_tmp1" "$func_to_host_path_result" 1943ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1944ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 1945ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 1946ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# end func_convert_path_nix_to_cygwin 1947ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 1948ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 19494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_compile arg... 19504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_compile () 19514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 19524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 19534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Get the compilation command and the source file. 19544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project base_compile= 19554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project srcfile="$nonopt" # always keep a non-empty value in "srcfile" 19564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project suppress_opt=yes 19574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project suppress_output= 19584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg_mode=normal 19594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj= 19604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project later= 19614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pie_flag= 19624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 19634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg 19644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 19654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg_mode in 19664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg ) 19674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # do not "continue". Instead, add this to base_compile 19684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lastarg="$arg" 19694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg_mode=normal 19704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 19714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 19724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project target ) 19734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj="$arg" 19744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg_mode=normal 19754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 19764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 19774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 19784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project normal ) 19794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Accept any command-line options. 19804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 19814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -o) 19824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$libobj" && \ 19834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "you cannot specify \`-o' more than once" 19844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg_mode=target 19854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 19864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 19874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 19884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -pie | -fpie | -fPIE) 1989ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append pie_flag " $arg" 19904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 19914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 19924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 19934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared | -static | -prefer-pic | -prefer-non-pic) 1994ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append later " $arg" 19954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 19964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 19974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 19984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-suppress) 19994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project suppress_opt=no 20004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 20014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 20024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 20034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Xcompiler) 20044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg_mode=arg # the next one goes into the "base_compile" arg list 20054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue # The current "srcfile" will either be retained or 20064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; # replaced later. I would guess that would be a bug. 20074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 20084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Wc,*) 20094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-Wc,' '' "$arg" 20104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project args=$func_stripname_result 20114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lastarg= 20124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS=',' 20134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg in $args; do 20144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 2015ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append_quoted lastarg "$arg" 2016893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 2017893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project IFS="$save_ifs" 20184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname ' ' '' "$lastarg" 20194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lastarg=$func_stripname_result 2020893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2021893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Add the arguments to base_compile. 2022ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append base_compile " $lastarg" 2023893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 2024893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2025893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 20264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 2027893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Accept the current argument as the source file. 2028893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # The previous "srcfile" becomes the current argument. 2029893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # 2030893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project lastarg="$srcfile" 2031893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project srcfile="$arg" 2032893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2033893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac # case $arg 2034893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2035893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac # case $arg_mode 2036893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2037893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Aesthetically quote the previous argument. 2038ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append_quoted base_compile "$lastarg" 2039893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done # for arg 2040893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2041893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $arg_mode in 2042893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project arg) 20434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "you must specify an argument for -Xcompile" 2044893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2045893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project target) 20464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "you must specify a target with \`-o'" 2047893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2048893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 2049893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Get the name of the library object. 20504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libobj" && { 20514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$srcfile" 20524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj="$func_basename_result" 20534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 2054893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2055893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 2056893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2057893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Recognize several different file suffixes. 2058893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # If the user specifies -o file.o, it is replaced with file.lo 2059893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $libobj in 20604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.[cCFSifmso] | \ 20614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.ada | *.adb | *.ads | *.asm | \ 20624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 2063ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 20644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_xform "$libobj" 20654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj=$func_xform_result 20664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2067893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 2068893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2069893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $libobj in 20704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 2071893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 20724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot determine name of library object from \`$libobj'" 2073893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2074893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 2075893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2076893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project func_infer_tag $base_compile 2077893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2078893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for arg in $later; do 2079893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $arg in 20804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared) 20814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_libtool_libs" != yes && \ 20824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_configuration "can not build a shared library" 20834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=no 20844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 20854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 20864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 2087893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project -static) 20884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 2089893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project build_old_libs=yes 2090893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 2091893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2092893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2093893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project -prefer-pic) 2094893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project pic_mode=yes 2095893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 2096893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2097893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2098893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project -prefer-non-pic) 2099893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project pic_mode=no 2100893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 2101893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2102893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 2103893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 2104893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 21054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$libobj" 21064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobj" != "X$func_quote_for_eval_result" \ 21074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 21084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && func_warning "libobj name \`$libobj' may not contain shell special characters." 21094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname_and_basename "$obj" "/" "" 21104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objname="$func_basename_result" 21114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xdir="$func_dirname_result" 2112893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project lobj=${xdir}$objdir/$objname 2113893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 21144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$base_compile" && \ 21154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify a compilation command" 2116893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2117893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Delete any leftover library objects. 2118893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$build_old_libs" = yes; then 2119893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project removelist="$obj $lobj $libobj ${libobj}T" 2120893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 2121893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project removelist="$lobj $libobj ${libobj}T" 2122893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2123893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2124893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # On Cygwin there's no "real" PIC flag so we must build both object types 2125893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $host_os in 21265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cygwin* | mingw* | pw32* | os2* | cegcc*) 2127893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project pic_mode=default 2128893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2129893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 2130893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 2131893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # non-PIC code in shared libraries is not supported 2132893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project pic_mode=default 2133893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2134893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2135893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Calculate the filename of the output object if compiler does 2136893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # not support -o with -c 2137893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$compiler_c_o" = no; then 2138ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 2139893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project lockfile="$output_obj.lock" 2140893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 2141893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project output_obj= 2142893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project need_locks=no 2143893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project lockfile= 2144893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2145893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2146893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Lock this critical section if it is needed 2147893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # We use this script file to make the link, it avoids creating a new file 2148893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$need_locks" = yes; then 21494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 21504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_echo "Waiting for $lockfile to be removed" 2151893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project sleep 2 2152893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 2153893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project elif test "$need_locks" = warn; then 2154893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -f "$lockfile"; then 21554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 2156893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project*** ERROR, $lockfile exists and contains: 2157893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project`cat $lockfile 2>/dev/null` 2158893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2159893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectThis indicates that another process is trying to use the same 2160893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttemporary object file, and libtool could not work around it because 2161893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectyour compiler does not support \`-c' and \`-o' together. If you 2162893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectrepeat this compilation, it may succeed, by chance, but you had better 2163893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectavoid parallel builds (make -j) in this platform, or get a better 2164893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectcompiler." 2165893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 21664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $removelist 2167893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_FAILURE 2168893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2169ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append removelist " $output_obj" 21704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$srcfile" > "$lockfile" 2171893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2172893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 21734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $removelist 2174ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append removelist " $lockfile" 21754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 21764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 2177ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 2178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik srcfile=$func_to_tool_file_result 21794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$srcfile" 21804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project qsrcfile=$func_quote_for_eval_result 2181893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2182893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Only build a PIC object if we are building libtool libraries. 2183893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$build_libtool_libs" = yes; then 2184893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Without this assignment, base_compile gets emptied. 2185893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fbsd_hideous_sh_bug=$base_compile 2186893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2187893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$pic_mode" != no; then 2188893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project command="$base_compile $qsrcfile $pic_flag" 2189893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 2190893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Don't build PIC code 2191893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project command="$base_compile $qsrcfile" 2192893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2193893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 21944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mkdir_p "$xdir$objdir" 2195893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2196893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -z "$output_obj"; then 2197893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Place PIC objects in $objdir 2198ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append command " -o $lobj" 2199893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2200893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval_locale "$command" \ 22024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 2203893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2204893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$need_locks" = warn && 2205893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 22064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 2207893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project*** ERROR, $lockfile contains: 2208893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project`cat $lockfile 2>/dev/null` 2209893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2210893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectbut it should contain: 2211893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project$srcfile 2212893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2213893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectThis indicates that another process is trying to use the same 2214893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttemporary object file, and libtool could not work around it because 2215893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectyour compiler does not support \`-c' and \`-o' together. If you 2216893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectrepeat this compilation, it may succeed, by chance, but you had better 2217893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectavoid parallel builds (make -j) in this platform, or get a better 2218893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectcompiler." 2219893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $removelist 2221893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_FAILURE 2222893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2223893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2224893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Just move the object if needed, then go on to compile the next one 2225893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 22264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$MV "$output_obj" "$lobj"' \ 22274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2228893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2229893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2230893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Allow error messages only from the first compilation. 2231893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$suppress_opt" = yes; then 22324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project suppress_output=' >/dev/null 2>&1' 2233893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2234893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2235893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2236893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Only build a position-dependent object if we build old libraries. 2237893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$build_old_libs" = yes; then 2238893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$pic_mode" != yes; then 2239893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Don't build PIC code 22404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project command="$base_compile $qsrcfile$pie_flag" 2241893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 2242893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project command="$base_compile $qsrcfile $pic_flag" 2243893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2244893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$compiler_c_o" = yes; then 2245ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append command " -o $obj" 2246893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2247893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2248893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Suppress compiler output if we already did a PIC compilation. 2249ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append command "$suppress_output" 22504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval_locale "$command" \ 22514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 2252893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2253893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$need_locks" = warn && 2254893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 22554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 2256893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project*** ERROR, $lockfile contains: 2257893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project`cat $lockfile 2>/dev/null` 2258893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2259893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectbut it should contain: 2260893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project$srcfile 2261893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2262893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectThis indicates that another process is trying to use the same 2263893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projecttemporary object file, and libtool could not work around it because 2264893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectyour compiler does not support \`-c' and \`-o' together. If you 2265893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectrepeat this compilation, it may succeed, by chance, but you had better 2266893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectavoid parallel builds (make -j) in this platform, or get a better 2267893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectcompiler." 2268893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $removelist 2270893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_FAILURE 2271893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2272893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2273893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Just move the object if needed 2274893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 22754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$MV "$output_obj" "$obj"' \ 22764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2277893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2278893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2279893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 22814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 2282893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Unlock the critical section if it was locked 22844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$need_locks" != no; then 22854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project removelist=$lockfile 22864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM "$lockfile" 22874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 22884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 2289893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2290893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_SUCCESS 22914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2292893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project$opt_help || { 2294ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 22954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2296893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 22974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_help () 22984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 22994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need to display help for each of the modes. 2300ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $opt_mode in 23014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project "") 23024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Generic help is extracted from the usage comments 23034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # at the start of this file. 23044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_help 23054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2306893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project clean) 23084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 23094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 2310893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRemove files from the build directory. 2312893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRM is the name of the program to use to delete files associated with each FILE 23144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 23154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectto RM. 2316893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf FILE is a libtool library, object or program, all the files associated 23184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectwith it are deleted. Otherwise, only FILE itself is deleted using RM." 23194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2320893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile) 23224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 23234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2324893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectCompile a source file into a libtool library object. 2326893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThis mode accepts the following additional options: 2328893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -o OUTPUT-FILE set the output file name to OUTPUT-FILE 23304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-suppress do not suppress compiler output for multiple passes 2331ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -prefer-pic try to build PIC objects only 2332ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -prefer-non-pic try to build non-PIC objects only 23334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared do not build a \`.o' file suitable for static linking 23344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static only build a \`.o' file suitable for static linking 2335ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -Wc,FLAG pass FLAG directly to the compiler 2336893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 23384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfrom the given SOURCEFILE. 2339893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe output file name is determined by removing the directory component from 23414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectSOURCEFILE, then substituting the C source code suffix \`.c' with the 23424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlibrary object suffix, \`.lo'." 23434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2344893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project execute) 23464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 23474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 2348893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectAutomatically set library path, then run a program. 2350893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThis mode accepts the following additional options: 2352893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlopen FILE add the directory containing FILE to the library path 2354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThis mode sets the library path environment variable according to \`-dlopen' 23564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectflags. 2357893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf any of the ARGS are libtool executable wrappers, then they are translated 23594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectinto their corresponding uninstalled binary, and any of their required library 23604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdirectories are added to the library path. 2361893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThen, COMMAND is executed, with ARGS as arguments." 23634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2364893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finish) 23664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 23674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 2368893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectComplete the installation of libtool libraries. 2370893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEach LIBDIR is a directory that contains libtool libraries. 2372893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe commands that this mode executes may require superuser privileges. Use 23744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectthe \`--dry-run' option if you just want to see what would be executed." 23754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2376893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install) 23784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 23794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 2380893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectInstall executables or libraries. 2382893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectINSTALL-COMMAND is the installation command. The first component should be 23844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecteither the \`install' or \`cp' program. 2385893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe following components of INSTALL-COMMAND are treated specially: 2387893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2388ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 2389893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe rest of the components are interpreted as arguments to that command (only 23914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectBSD-compatible install options are recognized)." 23924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2393893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link) 23954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 23964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 2397893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 23984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectLink object files or libraries together to form another library, or to 23994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcreate an executable program. 2400893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectLINK-COMMAND is a command using the C compiler that you would use to create 24024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecta program from several object files. 2403893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectThe following components of LINK-COMMAND are treated specially: 2405893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -all-static do not do any dynamic linking at all 24074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -avoid-version do not add a version suffix if possible 2408ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -bindir BINDIR specify path to binaries directory (for systems where 2409ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libraries must be found in the PATH setting at runtime) 24104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 24114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 24124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 24134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -export-symbols SYMFILE 24144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project try to export only the symbols listed in SYMFILE 24154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -export-symbols-regex REGEX 24164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project try to export only the symbols matching REGEX 24174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -LLIBDIR search LIBDIR for required installed libraries 24184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -lNAME OUTPUT-FILE requires the installed library libNAME 24194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -module build a library that can dlopened 24204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-fast-install disable the fast-install mode 24214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-install link a not-installable executable 24224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-undefined declare that a library does not refer to external symbols 24234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 24244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -objectlist FILE Use a list of object files found in FILE to specify objects 24254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -precious-files-regex REGEX 24264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project don't remove output files matching REGEX 24274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -release RELEASE specify package release information 24284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -rpath LIBDIR the created library will eventually be installed in LIBDIR 24294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 24304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared only do dynamic linking of libtool libraries 24314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shrext SUFFIX override the standard shared library file extension 24324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static do not do any dynamic linking of uninstalled libtool libraries 24334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static-libtool-libs 24344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do not do any dynamic linking of libtool libraries 24354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -version-info CURRENT[:REVISION[:AGE]] 24364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project specify library version info [each variable defaults to 0] 24374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -weak LIBNAME declare that the target provides the LIBNAME interface 2438ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -Wc,FLAG 2439ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 2440ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -Wl,FLAG 2441ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -Xlinker FLAG pass linker-specific FLAG directly to the linker 2442ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 2443893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectAll other options (arguments beginning with \`-') are ignored. 2445893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEvery other argument is treated as a filename. Files ending in \`.la' are 24474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttreated as uninstalled libtool libraries, other files are standard or library 24484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectobject files. 2449893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 24514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectonly library objects (\`.lo' files) may be specified, and \`-rpath' is 24524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrequired, except when creating a convenience library. 2453893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 24554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectusing \`ar' and \`ranlib', or on Windows using \`lib'. 2456893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 24584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectis created, otherwise an executable program is created." 2459893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2460893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project uninstall) 24624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \ 24634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 2464893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRemove libraries from an installation directory. 2466893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectRM is the name of the program to use to delete files associated with each FILE 24684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 24694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectto RM. 2470893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectIf FILE is a libtool library, all the files associated with it are deleted. 24724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectOtherwise, only FILE itself is deleted using RM." 24734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 2474893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 24754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 2476ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_fatal_help "invalid operation mode \`$opt_mode'" 24774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 24784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 2479893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2480ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 24814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "Try \`$progname --help' for more information about other modes." 24824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2483893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2484ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Now that we've collected a possible --mode arg, show help if necessary 2485ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikif $opt_help; then 2486ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$opt_help" = :; then 2487ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_mode_help 2488ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 2489ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 2490ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_help noexit 2491ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for opt_mode in compile link execute install finish uninstall clean; do 2492ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_mode_help 2493ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 2494ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } | sed -n '1p; 2,$s/^Usage:/ or: /p' 2495ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 2496ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_help noexit 2497ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for opt_mode in compile link execute install finish uninstall clean; do 2498ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 2499ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_mode_help 2500ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 2501ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } | 2502ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik sed '1d 2503ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /^When reporting/,/^Report/{ 2504ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik H 2505ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik d 2506ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 2507ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $x 2508ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /information about other modes/d 2509ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /more detailed .*MODE/d 2510ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 2511ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2512ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik exit $? 2513ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfi 2514893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2515893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_execute arg... 25174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_execute () 25184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 25194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 25204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The first argument is the command name. 25214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmd="$nonopt" 25224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$cmd" && \ 25234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify a COMMAND" 2524893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Handle -dlopen flags immediately. 2526ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for file in $opt_dlopen; do 25274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -f "$file" \ 25284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project || func_fatal_help "\`$file' is not a file" 2529893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir= 25314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 25324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 2533ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$file" 2534ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik file=$func_resolve_sysroot_result 2535ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 25364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that this really is a libtool archive. 25374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lalib_unsafe_p "$file" \ 25384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project || func_fatal_help "\`$lib' is not a valid libtool archive" 2539893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Read the libtool library. 25414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlname= 25424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project library_names= 25434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$file" 2544893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Skip this library if it cannot be dlopened. 25464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$dlname"; then 25474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Warn if it was a shared library. 25484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$library_names" && \ 25494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`$file' was not linked with \`-export-dynamic'" 25504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 25514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2552893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$file" "" "." 25544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$func_dirname_result" 2555893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$dir/$objdir/$dlname"; then 2557ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dir "/$objdir" 25584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 25594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -f "$dir/$dlname"; then 25604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 25614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 25624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2563893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2564893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) 25664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Just add the directory containing the .lo file. 25674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$file" "" "." 25684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$func_dirname_result" 2569893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2570893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 25724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 2573893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 2574893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 25754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 2576893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Get the absolute pathname. 25784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir=`cd "$dir" && pwd` 25794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$absdir" && dir="$absdir" 2580893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now add the directory to shlibpath_var. 25824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval "test -z \"\$$shlibpath_var\""; then 25834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$shlibpath_var=\"\$dir\"" 25844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 25854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 25864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 25874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2588893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This variable tells wrapper scripts just to set shlibpath_var 25904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # rather than running their programs. 25914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libtool_execute_magic="$magic" 2592893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 25934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check if any of the arguments is a wrapper script. 25944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project args= 25954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file 25964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 25974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 2598ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -* | *.la | *.lo ) ;; 25994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 26004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do a test to see if this is really a libtool program. 26014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_script_p "$file"; then 26024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$file" 26034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform arg to wrapped name. 26044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file="$progdir/$program" 26054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif func_ltwrapper_executable_p "$file"; then 26064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_scriptname "$file" 26074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$func_ltwrapper_scriptname_result" 26084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform arg to wrapped name. 26094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file="$progdir/$program" 26104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 26114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 26124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 26134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Quote arguments (to preserve shell metacharacters). 2614ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append_quoted args "$file" 26154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2616893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 26174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$opt_dry_run" = Xfalse; then 26184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath_var"; then 26194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Export the shlibpath_var. 26204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "export $shlibpath_var" 26214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2622893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 26234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restore saved environment variables 26244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 26254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 26264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "if test \"\${save_$lt_var+set}\" = set; then 26274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $lt_var=\$save_$lt_var; export $lt_var 26284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 26294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $lt_unset $lt_var 26304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi" 26314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2632893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 26334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now prepare to actually exec the command. 26344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec_cmd="\$cmd$args" 26354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 26364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Display what would be done. 26374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath_var"; then 26384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 2639ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "export $shlibpath_var" 26404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 26414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$cmd$args" 26424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 26434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 26444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2645893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2646ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiktest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 2647893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2648893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 26494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_finish arg... 26504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_finish () 26514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 26524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 2653ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libs= 2654ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libdirs= 26554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project admincmds= 2656893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2657ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for opt in "$nonopt" ${1+"$@"} 2658ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik do 2659ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -d "$opt"; then 2660ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append libdirs " $opt" 2661ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 2662ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik elif test -f "$opt"; then 2663ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if func_lalib_unsafe_p "$opt"; then 2664ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append libs " $opt" 2665ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 2666ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_warning "\`$opt' is not a valid libtool archive" 2667ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2668ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 2669ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 2670ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_fatal_error "invalid argument \`$opt'" 2671ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2672ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 2673ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 2674ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$libs"; then 2675ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$lt_sysroot"; then 2676ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 2677ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 2678ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 2679ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik sysroot_cmd= 2680ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2681ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 2682ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Remove sysroot references 2683ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if $opt_dry_run; then 2684ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for lib in $libs; do 2685ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 2686ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 2687ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 2688ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tmpdir=`func_mktempdir` 2689ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for lib in $libs; do 2690ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 2691ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik > $tmpdir/tmp-la 2692ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik mv -f $tmpdir/tmp-la $lib 2693ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 2694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ${RM}r "$tmpdir" 2695ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2696ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2697893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2698ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 26994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $libdirs; do 27004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$finish_cmds"; then 27014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each command in the finish commands. 27024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 27034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project'"$cmd"'"' 27044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 27054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$finish_eval"; then 27064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do the single finish_eval. 27074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmds=\"$finish_eval\" 2708ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_dry_run || eval "$cmds" || func_append admincmds " 27094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $cmds" 27104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 27114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 27124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2713893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Exit here if they wanted silent mode. 27154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_silent && exit $EXIT_SUCCESS 2716893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2717ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2718ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "----------------------------------------------------------------------" 2719ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "Libraries have been installed in:" 2720ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for libdir in $libdirs; do 2721ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO " $libdir" 2722ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 2723ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 2724ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "If you ever happen to want to link against installed libraries" 2725ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "in a given directory, LIBDIR, you must either use libtool, and" 2726ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 2727ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "flag during linking and do at least one of the following:" 2728ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$shlibpath_var"; then 2729ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2730ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo " during execution" 2731ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2732ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$runpath_var"; then 2733ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo " - add LIBDIR to the \`$runpath_var' environment variable" 2734ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo " during linking" 2735ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2736ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$hardcode_libdir_flag_spec"; then 2737ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libdir=LIBDIR 2738ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval flag=\"$hardcode_libdir_flag_spec\" 2739893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2740ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO " - use the \`$flag' linker flag" 2741ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2742ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$admincmds"; then 2743ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO " - have your system administrator run these commands:$admincmds" 2744ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2745ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -f /etc/ld.so.conf; then 2746ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2747ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2748ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 2749893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2750ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "See any operating system documentation about shared libraries for" 2751ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $host in 2752ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik solaris2.[6789]|solaris2.1[0-9]) 2753ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 2754ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "pages." 2755ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 2756ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) 2757ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "more information, such as the ld(1) and ld.so(8) manual pages." 2758ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 2759ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 2760ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "----------------------------------------------------------------------" 2761ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 27624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 27634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 2764893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2765ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiktest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 2766893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 2767893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 27684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_install arg... 27694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_install () 27704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 27714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 27724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # There may be an optional sh(1) argument at the beginning of 27734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # install_prog (especially on Windows NT). 27744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 27754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Allow the use of GNU shtool's install command. 2776ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $nonopt in *shtool*) :;; *) false;; esac; then 27774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Aesthetically quote it. 27784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$nonopt" 27794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install_prog="$func_quote_for_eval_result " 27804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$1 27814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 27824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 27834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install_prog= 27844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$nonopt 27854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 27864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 27874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The real first argument should be the name of the installation program. 27884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Aesthetically quote it. 27894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 2790ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append install_prog "$func_quote_for_eval_result" 2791ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik install_shared_prog=$install_prog 2792ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case " $install_prog " in 2793ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *[\\\ /]cp\ *) install_cp=: ;; 2794ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) install_cp=false ;; 2795ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 27964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 27974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need to accept at least all the BSD install flags. 27984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dest= 27994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project files= 28004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project opts= 28014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 28024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install_type= 28034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project isdir=no 28044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project stripme= 2805ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik no_mode=: 28064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg 28074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 2808ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik arg2= 28094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dest"; then 2810ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append files " $dest" 28114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dest=$arg 2812893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 28134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2814893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 28164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -d) isdir=yes ;; 28174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -f) 2818ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if $install_cp; then :; else 2819ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik prev=$arg 2820ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2821893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 28224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -g | -m | -o) 28234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=$arg 28244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 28254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -s) 28264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project stripme=" -s" 28274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 28284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 28294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -*) 28304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 28314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 28324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the previous option needed an argument, then skip it. 28334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$prev"; then 2834ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "x$prev" = x-m && test -n "$install_override_mode"; then 2835ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik arg2=$install_override_mode 2836ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik no_mode=false 2837ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 28384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 28394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 28404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dest=$arg 28414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 28424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 28434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 28444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 2845893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Aesthetically quote the argument. 28474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 2848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append install_prog " $func_quote_for_eval_result" 2849ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$arg2"; then 2850ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_quote_for_eval "$arg2" 2851ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2852ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append install_shared_prog " $func_quote_for_eval_result" 28534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2854893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$install_prog" && \ 28564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify an install program" 2857893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$prev" && \ 28594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "the \`$prev' option requires an argument" 28604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 2861ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$install_override_mode" && $no_mode; then 2862ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if $install_cp; then :; else 2863ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_quote_for_eval "$install_override_mode" 2864ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append install_shared_prog " -m $func_quote_for_eval_result" 2865ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2866ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 2867ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 28684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$files"; then 28694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$dest"; then 28704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "no file or destination specified" 28714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 28724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify a destination" 28734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2874893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 2875893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Strip any trailing slash from the destination. 28774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '/' "$dest" 28784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dest=$func_stripname_result 2879893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that the destination is a directory. 28814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -d "$dest" && isdir=yes 28824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$isdir" = yes; then 28834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destdir="$dest" 28844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destname= 2885893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 28864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname_and_basename "$dest" "" "." 28874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destdir="$func_dirname_result" 28884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destname="$func_basename_result" 2889893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 28904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Not a directory, so check to see that there is only one file specified. 28914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $files; shift 28924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$#" -gt 1 && \ 28934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "\`$dest' is not a directory" 2894893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 28954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $destdir in 28964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) ;; 2897893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 28984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file in $files; do 28994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 29004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) ;; 29014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 29024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "\`$destdir' must be an absolute directory name" 29034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 29044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 29054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 2906893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 2907893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 2908893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 29094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This variable tells wrapper scripts just to set variables rather 29104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # than running their programs. 29114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libtool_install_magic="$magic" 2912893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 29134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project staticlibs= 29144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project future_libdirs= 29154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project current_libdirs= 29164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file in $files; do 2917893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 29184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each installation. 29194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 29204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$libext) 29214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do the static libraries later. 2922ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append staticlibs " $file" 29234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 29244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 2926ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$file" 2927ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik file=$func_resolve_sysroot_result 2928ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 29294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that this really is a libtool archive. 29304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lalib_unsafe_p "$file" \ 29314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project || func_fatal_help "\`$file' is not a valid libtool archive" 29324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project library_names= 29344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_library= 29354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 29364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$file" 29374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add the libdir to current_libdirs if it is the destination. 29394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$destdir" = "X$libdir"; then 29404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$current_libdirs " in 29414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 2942ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append current_libdirs " $libdir" ;; 2943893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 29444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 29454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Note the libdir as a future libdir. 29464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$future_libdirs " in 29474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 2948ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append future_libdirs " $libdir" ;; 29494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 29504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 2951893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 29524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$file" "/" "" 29534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$func_dirname_result" 2954ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dir "$objdir" 29554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$relink_command"; then 29574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Determine the prefix the user has applied to our future dir. 2958ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 29594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't allow the user to place us outside of our expected 29614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # location b/c this prevents finding dependent libraries that 29624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # are installed to the same prefix. 29634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # At present, this check doesn't affect windows .dll's that 29644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # are installed into $libdir/../bin (currently, that works fine) 29654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # but it's something to keep an eye on. 29664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$inst_prefix_dir" = "$destdir" && \ 29674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 29684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$inst_prefix_dir"; then 29704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Stick the inst_prefix_dir data into the link command. 2971ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 29724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 2973ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 29744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 29754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "relinking \`$file'" 29774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$relink_command" \ 29784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 29794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 29804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # See the names of the shared library. 29824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $library_names; shift 29834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$1"; then 29844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project realname="$1" 29854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 29864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project srcname="$realname" 29884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$relink_command" && srcname="$realname"T 29894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 29904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install the shared library and build the symlinks. 2991ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 29924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 'exit $?' 29934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tstripme="$stripme" 29944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host_os in 29955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cygwin* | mingw* | pw32* | cegcc*) 29964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $realname in 29974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.dll.a) 29984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tstripme="" 29994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 30004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 3001893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 3002893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 30034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$tstripme" && test -n "$striplib"; then 30044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$striplib $destdir/$realname" 'exit $?' 3005893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 30064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 30074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$#" -gt 0; then 30084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Delete the old symlinks, and create new ones. 30094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Try `ln -sf' first, because the `ln' binary might depend on 30104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the symlink we replace! Solaris /bin/ln does not understand -f, 30114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # so we also need to try rm && ln -s. 30124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for linkname 30134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 30144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$linkname" != "$realname" \ 30154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 3016893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 3017893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 3018893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 30194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each command in the postinstall commands. 30204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib="$destdir/$realname" 30214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$postinstall_cmds" 'exit $?' 3022893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 3023893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 30244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install the pseudo-library for information purposes. 30254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file" 30264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 30274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project instname="$dir/$name"i 30284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 3029893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 30304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Maybe install the static library, too. 3031ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test -n "$old_library" && func_append staticlibs " $dir/$old_library" 30324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 3033893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 30344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) 30354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install (i.e. copy) a libtool object. 3036893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 30374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Figure out destination file name, if it wasn't already specified. 30384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$destname"; then 30394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$destdir/$destname" 30404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 30414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file" 30424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$func_basename_result" 30434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$destdir/$destfile" 30444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 30454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 30464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Deduce the name of the destination old-style object file. 30474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $destfile in 30484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) 30494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lo2o "$destfile" 30504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project staticdest=$func_lo2o_result 30514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 30524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$objext) 30534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project staticdest="$destfile" 30544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile= 30554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 30564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 30574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "cannot copy a libtool object to \`$destfile'" 30584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 3059893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 3060893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 30614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install the libtool object if requested. 30624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$destfile" && \ 30634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog $file $destfile" 'exit $?' 30644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 30654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install the old object if enabled. 30664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = yes; then 30674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Deduce the name of the old-style object file. 30684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lo2o "$file" 30694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project staticobj=$func_lo2o_result 30704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 3071893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 30724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 30734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 3074893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 30754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 30764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Figure out destination file name, if it wasn't already specified. 30774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$destname"; then 30784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$destdir/$destname" 30794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 30804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file" 30814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$func_basename_result" 30824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile="$destdir/$destfile" 30834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 30844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 30854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the file is missing, and there is a .exe on the end, strip it 30864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # because it is most likely a libtool script we actually want to 30874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # install 30884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project stripped_ext="" 30894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 30904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.exe) 30914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -f "$file"; then 30924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$file" 30934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=$func_stripname_result 30944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project stripped_ext=".exe" 3095893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 30964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 30974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 3098893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 30994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do a test to see if this is really a libtool program. 31004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 31015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw*) 31024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_executable_p "$file"; then 31034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_scriptname "$file" 31044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrapper=$func_ltwrapper_scriptname_result 31054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 31064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$file" 31074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrapper=$func_stripname_result 31084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 31094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 31104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 31114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrapper=$file 31124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 31134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 31144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_script_p "$wrapper"; then 31154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_deplibs= 31164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 3117893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 31184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$wrapper" 3119893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 31204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check the variables that should have been set. 31214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$generated_by_libtool_version" && \ 31224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "invalid libtool wrapper script \`$wrapper'" 31234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 31244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize=yes 31254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $notinst_deplibs; do 31264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that each library is installed. 31274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir= 31284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$lib"; then 31294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$lib" 31304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 3131ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 31324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$libdir" && test ! -f "$libfile"; then 31334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`$lib' has not been installed in \`$libdir'" 31344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize=no 31354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 31364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 31374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 31384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 31394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$wrapper" 31404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 31414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project outputname= 31424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$fast_install" = no && test -n "$relink_command"; then 31434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 31444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$finalize" = yes; then 31454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmpdir=`func_mktempdir` 31464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file$stripped_ext" 31474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file="$func_basename_result" 31484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project outputname="$tmpdir/$file" 31494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Replace the output file specification. 3150ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 31514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 31524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_silent || { 31534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand "$relink_command" 31544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "func_echo $func_quote_for_expand_result" 31554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 31564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval "$relink_command"; then : 31574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 31584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "error: relink \`$file' with the above command before installing it" 31594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || ${RM}r "$tmpdir" 31604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 31614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 31624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file="$outputname" 31634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 31644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "cannot relink \`$file'" 31654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 31664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 3167893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 31684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Install the binary that we compiled earlier. 3169ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 3170893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 31714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 3172893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 31734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # remove .exe since cygwin /usr/bin/install will append another 31744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # one anyway 31754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $install_prog,$host in 31764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project */usr/bin/install*,*cygwin*) 31774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file:$destfile in 31784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.exe:*.exe) 31794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # this is ok 31804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 31814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.exe:*) 31824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile=$destfile.exe 31834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 31844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *:*.exe) 31854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$destfile" 31864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project destfile=$func_stripname_result 31874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 31884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 3189893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 3190893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 31914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 31924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || if test -n "$outputname"; then 31934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ${RM}r "$tmpdir" 31944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 31954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 31964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 31974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 3198893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 31994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file in $staticlibs; do 32004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file" 32014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 3202893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 32034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Set up the ranlib parameters. 32044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlib="$destdir/$name" 3205ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 3206ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tool_oldlib=$func_to_tool_file_result 3207893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 32084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 3209893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 32104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$stripme" && test -n "$old_striplib"; then 3211ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 32124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 3213893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 32144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each command in the postinstall commands. 32154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$old_postinstall_cmds" 'exit $?' 32164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 3217893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 32184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$future_libdirs" && \ 32194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "remember to run \`$progname --finish$future_libdirs'" 3220893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 32214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$current_libdirs"; then 32224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Maybe just do a dry run. 32234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run && current_libdirs=" -n$current_libdirs" 32244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 32254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 32264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 32274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 32284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3229893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3230ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiktest "$opt_mode" = install && func_mode_install ${1+"$@"} 3231893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3232893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 32334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_generate_dlsyms outputname originator pic_p 32344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Extract symbols from dlprefiles and create ${outputname}S.o with 32354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# a dlpreopen symbol table. 32364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_generate_dlsyms () 32374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 32384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 32394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_outputname="$1" 32404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_originator="$2" 32414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_pic_p="${3-no}" 32424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 32434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_dlsyms= 32444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 32464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$NM" && test -n "$global_symbol_pipe"; then 32474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_dlsyms="${my_outputname}S.c" 32484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 32494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "not configured to extract global symbols from dlpreopened files" 32504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 32514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 3252893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 32534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$my_dlsyms"; then 32544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $my_dlsyms in 32554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project "") ;; 32564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.c) 32574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Discover the nlist of each of the dlfiles. 32584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project nlist="$output_objdir/${my_outputname}.nm" 32594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 32614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Parse the name list into a source file. 32634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating $output_objdir/$my_dlsyms" 32644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 32664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 32674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 32684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef __cplusplus 32704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectextern \"C\" { 32714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 32724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3273ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 3274ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 3275ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#endif 3276ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3277ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 3278ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 3279ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* DATA imports from DLLs on WIN32 con't be const, because runtime 3280ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik relocations are performed -- see ld's documentation on pseudo-relocs. */ 3281ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define LT_DLSYM_CONST 3282ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#elif defined(__osf__) 3283ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* This system does not cope well with relocations in const data. */ 3284ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define LT_DLSYM_CONST 3285ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#else 3286ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define LT_DLSYM_CONST const 3287ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#endif 3288ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 32894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* External symbol declarations for the compiler. */\ 32904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 32914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$dlself" = yes; then 32934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "generating symbol list for \`$output'" 32944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 32964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 32974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add our own program objects to the symbol list. 3298ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 32994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for progfile in $progfiles; do 3300ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$progfile" func_convert_file_msys_to_w32 3301ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 3302ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 33034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 33044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 33054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$exclude_expsyms"; then 33064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 33074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 33084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$MV "$nlist"T "$nlist"' 33094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 3310893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 3311893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 33124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols_regex"; then 33134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 33144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 33154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$MV "$nlist"T "$nlist"' 33164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 3317893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 33184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 33194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepare the list of exported symbols 33204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$export_symbols"; then 33214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols="$output_objdir/$outputname.exp" 33224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 33234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM $export_symbols 33244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 33254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 33265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw* | *cegcc* ) 33274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 33284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 33294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 3330893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 33314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 33324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 33334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 33344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 33354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 33364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval '$MV "$nlist"T "$nlist"' 33374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 3338ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *cygwin* | *mingw* | *cegcc* ) 33394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 33404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 33414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 3342893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 33434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 3344893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 33454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 3346893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 33474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dlprefile in $dlprefiles; do 33484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "extracting global C symbols from \`$dlprefile'" 33494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$dlprefile" 33504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 3351ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $host in 3352ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *cygwin* | *mingw* | *cegcc* ) 3353ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # if an import library, we need to obtain dlname 3354ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if func_win32_import_lib_p "$dlprefile"; then 3355ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_tr_sh "$dlprefile" 3356ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval "curr_lafile=\$libfile_$func_tr_sh_result" 3357ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik dlprefile_dlbasename="" 3358ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 3359ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Use subshell, to avoid clobbering current variable values 3360ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 3361ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$dlprefile_dlname" ; then 3362ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_basename "$dlprefile_dlname" 3363ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik dlprefile_dlbasename="$func_basename_result" 3364ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 3365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # no lafile. user explicitly requested -dlpreopen <import library>. 3366ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $sharedlib_from_linklib_cmd "$dlprefile" 3367ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik dlprefile_dlbasename=$sharedlib_from_linklib_result 3368ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 3369ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 3370ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_dry_run || { 3371ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$dlprefile_dlbasename" ; then 3372ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 3373ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 3374ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_warning "Could not compute DLL name from $name" 3375ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval '$ECHO ": $name " >> "$nlist"' 3376ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 3377ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3378ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 3379ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 3380ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 3381ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else # not an import lib 3382ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_dry_run || { 3383ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval '$ECHO ": $name " >> "$nlist"' 3384ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3385ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3386ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 3387ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 3388ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 3389ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) 3390ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_dry_run || { 3391ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval '$ECHO ": $name " >> "$nlist"' 3392ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3393ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3394ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 3395ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 3396ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 33974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 3398893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 33994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 34004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure we have at least an empty file. 34014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -f "$nlist" || : > "$nlist" 3402893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$exclude_expsyms"; then 34044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 34054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV "$nlist"T "$nlist" 3406893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 3407893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Try sorting and uniquifying the output. 34094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $GREP -v "^: " < "$nlist" | 34104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if sort -k 3 </dev/null >/dev/null 2>&1; then 34114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project sort -k 3 3412893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 34134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project sort +2 34144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi | 34154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project uniq > "$nlist"S; then 34164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 3417893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 34184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP -v "^: " < "$nlist" > "$nlist"S 3419893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 3420893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$nlist"S; then 34224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 3423893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 3424ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 3425893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 3426893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3427ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo >> "$output_objdir/$my_dlsyms" "\ 3428893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* The mapping between symbol names and symbols. */ 34304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttypedef struct { 34314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *name; 34324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project void *address; 34334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} lt_dlsymlist; 3434ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikextern LT_DLSYM_CONST lt_dlsymlist 34354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_${my_prefix}_LTX_preloaded_symbols[]; 3436ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikLT_DLSYM_CONST lt_dlsymlist 34374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlt_${my_prefix}_LTX_preloaded_symbols[] = 34384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{\ 34394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { \"$my_originator\", (void *) 0 }," 3440893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $need_lib_prefix in 34424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project no) 34434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 34444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 34454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 34464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 34474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 34484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 3449ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo >> "$output_objdir/$my_dlsyms" "\ 34504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project {0, (void *) 0} 34514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project}; 3452893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* This works around a problem in FreeBSD linker */ 34544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef FREEBSD_WORKAROUND 34554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectstatic const void *lt_preloaded_setup() { 34564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return lt_${my_prefix}_LTX_preloaded_symbols; 34574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 34584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 3459893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef __cplusplus 34614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 34624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif\ 34634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 34644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } # !$opt_dry_run 3465893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_flag_for_symtable= 34674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$compile_command " in 34684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -static "*) ;; 34694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 34704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 34714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # compiling the symbol table file with pic_flag works around 34724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # a FreeBSD bug that causes programs to crash when -lm is 34734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # linked before any other PIC object. But we must not use 34744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # pic_flag when linking with -static. The problem exists in 34754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 3476ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 34774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 34784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-hpux*) 34794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_flag_for_symtable=" $pic_flag" ;; 34804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 34814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$my_pic_p" != Xno; then 34824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_flag_for_symtable=" $pic_flag" 34834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 34844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 34854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 34864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 34874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 34884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project symtab_cflags= 34894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg in $LTCFLAGS; do 34904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 34914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -pie | -fpie | -fPIE) ;; 3492ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append symtab_cflags " $arg" ;; 34934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 34944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 3495893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now compile the dynamic symbol file. 34974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 3498893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 34994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Clean up the generated files. 35004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 3501893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 35024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform the symbol file into the correct name. 35034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project symfileobj="$output_objdir/${my_outputname}S.$objext" 35044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 35055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw* | *cegcc* ) 35064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$output_objdir/$my_outputname.def"; then 3507ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3508ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 35094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 3510ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3511ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 35124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 35134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 35144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 3515ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3516ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 35174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 35184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 3519893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 3520893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 35214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "unknown suffix for \`$my_dlsyms'" 3522893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 3523893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 35244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 35254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We keep going just in case the user didn't refer to 35264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 35274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # really was required. 3528893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 35294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Nullify the symbol file. 3530ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 3531ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 35324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 35334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3534893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 35354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_win32_libid arg 35364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# return the library type of file 'arg' 35374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 35384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Need a lot of goo to handle *both* DLLs and import libs 35394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Has to be a shell function in order to 'eat' the argument 35404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# that is supplied when $file_magic_command is called. 3541ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Despite the name, also deal with 64 bit binaries. 35424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_win32_libid () 35434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 35444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 35454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_libid_type="unknown" 35464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_fileres=`file -L $1 2>/dev/null` 35474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $win32_fileres in 35484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *ar\ archive\ import\ library*) # definitely import 35494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_libid_type="x86 archive import" 35504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 35514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *ar\ archive*) # could be an import, or static 3552ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 35534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 3554ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 3555ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$1" func_convert_file_msys_to_w32 3556ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 35574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -n -e ' 35584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 1,100{ 35594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project / I /{ 35604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project s,.*,import, 35614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p 35624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project q 35634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 35644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project }'` 35654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $win32_nmres in 35664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project import*) win32_libid_type="x86 archive import";; 35674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) win32_libid_type="x86 archive static";; 35684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 35694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 35704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 35714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *DLL*) 35724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_libid_type="x86 DLL" 35734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 35744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *executable*) # but shell scripts are "executable" too... 35754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $win32_fileres in 35764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *MS\ Windows\ PE\ Intel*) 35774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project win32_libid_type="x86 DLL" 35784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 35794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 35804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 35814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 35824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$win32_libid_type" 35834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3584893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3585ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygming_dll_for_implib ARG 3586ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 3587ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Platform-specific function to extract the 3588ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# name of the DLL associated with the specified 3589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# import library ARG. 3590ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Invoked by eval'ing the libtool variable 3591ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $sharedlib_from_linklib_cmd 3592ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result is available in the variable 3593ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $sharedlib_from_linklib_result 3594ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygming_dll_for_implib () 3595ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 3596ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 3597ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 3598ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 3599ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3600ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 3601ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 3602ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# The is the core of a fallback implementation of a 3603ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# platform-specific function to extract the name of the 3604ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# DLL associated with the specified import library LIBNAME. 3605ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 3606ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# SECTION_NAME is either .idata$6 or .idata$7, depending 3607ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# on the platform and compiler that created the implib. 3608ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 3609ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Echos the name of the DLL associated with the 3610ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# specified import library. 3611ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygming_dll_for_implib_fallback_core () 3612ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 3613ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 3614ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 3615ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 3616ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $SED '/^Contents of section '"$match_literal"':/{ 3617ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Place marker at beginning of archive member dllname section 3618ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s/.*/====MARK====/ 3619ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik p 3620ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik d 3621ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 3622ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # These lines can sometimes be longer than 43 characters, but 3623ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # are always uninteresting 3624ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /:[ ]*file format pe[i]\{,1\}-/d 3625ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /^In archive [^:]*:/d 3626ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Ensure marker is printed 3627ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /^====MARK====/p 3628ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Remove all lines with less than 43 characters 3629ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /^.\{43\}/!d 3630ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # From remaining lines, remove first 43 characters 3631ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s/^.\{43\}//' | 3632ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $SED -n ' 3633ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Join marker and all lines until next marker into a single line 3634ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /^====MARK====/ b para 3635ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik H 3636ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ b para 3637ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik b 3638ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik :para 3639ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik x 3640ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s/\n//g 3641ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Remove the marker 3642ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s/^====MARK====// 3643ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Remove trailing dots and whitespace 3644ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik s/[\. \t]*$// 3645ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Print 3646ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /./p' | 3647ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # we now have a list, one entry per line, of the stringified 3648ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # contents of the appropriate section of all members of the 3649ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # archive which possess that section. Heuristic: eliminate 3650ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # all those which have a first or second character that is 3651ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # a '.' (that is, objdump's representation of an unprintable 3652ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # character.) This should work for all archives with less than 3653ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # 0x302f exports -- but will fail for DLLs whose name actually 3654ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # begins with a literal '.' or a single character followed by 3655ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # a '.'. 3656ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # 3657ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Of those that remain, print the first one. 3658ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $SED -e '/^\./d;/^.\./d;q' 3659ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 3660ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3661ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygming_gnu_implib_p ARG 3662ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# This predicate returns with zero status (TRUE) if 3663ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG is a GNU/binutils-style import library. Returns 3664ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# with nonzero status (FALSE) otherwise. 3665ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygming_gnu_implib_p () 3666ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 3667ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 3668ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$1" func_convert_file_msys_to_w32 3669ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` 3670ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test -n "$func_cygming_gnu_implib_tmp" 3671ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 3672ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3673ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygming_ms_implib_p ARG 3674ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# This predicate returns with zero status (TRUE) if 3675ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG is an MS-style import library. Returns 3676ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# with nonzero status (FALSE) otherwise. 3677ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygming_ms_implib_p () 3678ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 3679ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 3680ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$1" func_convert_file_msys_to_w32 3681ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 3682ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test -n "$func_cygming_ms_implib_tmp" 3683ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 3684ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3685ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_cygming_dll_for_implib_fallback ARG 3686ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Platform-specific function to extract the 3687ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# name of the DLL associated with the specified 3688ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# import library ARG. 3689ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 3690ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# This fallback implementation is for use when $DLLTOOL 3691ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# does not support the --identify-strict option. 3692ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Invoked by eval'ing the libtool variable 3693ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $sharedlib_from_linklib_cmd 3694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Result is available in the variable 3695ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# $sharedlib_from_linklib_result 3696ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_cygming_dll_for_implib_fallback () 3697ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 3698ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 3699ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if func_cygming_gnu_implib_p "$1" ; then 3700ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # binutils import library 3701ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 3702ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik elif func_cygming_ms_implib_p "$1" ; then 3703ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # ms-generated import library 3704ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 3705ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 3706ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # unknown 3707ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik sharedlib_from_linklib_result="" 3708ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 3709ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 3710893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3711893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 37124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_extract_an_archive dir oldlib 37134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_extract_an_archive () 37144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 37154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 37164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project f_ex_an_ar_dir="$1"; shift 37174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project f_ex_an_ar_oldlib="$1" 3718ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$lock_old_archive_extraction" = yes; then 3719ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lockfile=$f_ex_an_ar_oldlib.lock 3720ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 3721ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_echo "Waiting for $lockfile to be removed" 3722ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik sleep 2 3723ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 3724ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 3725ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 3726ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 'stat=$?; rm -f "$lockfile"; exit $stat' 3727ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$lock_old_archive_extraction" = yes; then 3728ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_dry_run || rm -f "$lockfile" 3729ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 37304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 37314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 37324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 37334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 37344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 37354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3736893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 3737893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 37384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_extract_archives gentop oldlib ... 37394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_extract_archives () 37404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 37414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 37424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_gentop="$1"; shift 37434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_oldlibs=${1+"$@"} 37444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_oldobjs="" 37454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xlib="" 37464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xabs="" 37474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xdir="" 3748893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 37494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for my_xlib in $my_oldlibs; do 37504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract the objects. 37514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $my_xlib in 37524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 37534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) my_xabs=`pwd`"/$my_xlib" ;; 37544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 37554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$my_xlib" 37564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xlib="$func_basename_result" 37574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xlib_u=$my_xlib 37584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while :; do 37594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $extracted_archives " in 37604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $my_xlib_u "*) 37614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $extracted_serial + 1 37624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project extracted_serial=$func_arith_result 37634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xlib_u=lt$extracted_serial-$my_xlib ;; 37644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) break ;; 3765893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 37664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 37674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project extracted_archives="$extracted_archives $my_xlib_u" 37684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project my_xdir="$my_gentop/$my_xlib_u" 3769893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 37704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mkdir_p "$my_xdir" 3771893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 37724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 37734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-darwin*) 37744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "Extracting $my_xabs" 37754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do not bother doing anything if just a dry run 37764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 37774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_orig_dir=`pwd` 37784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cd $my_xdir || exit $? 37794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_archive=$my_xabs 37804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_curdir=`pwd` 37814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_base_archive=`basename "$darwin_archive"` 37824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 37834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$darwin_arches"; then 37844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 37854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_arch= 37864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 37874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for darwin_arch in $darwin_arches ; do 37884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 37894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 37904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 37914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_an_archive "`pwd`" "${darwin_base_archive}" 37924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cd "$darwin_curdir" 37934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 37944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # $darwin_arches 37954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ## Okay now we've a bunch of thin objects, gotta fatten them up :) 37964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 37974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_file= 37984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin_files= 37994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for darwin_file in $darwin_filelist; do 3800ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 38014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $LIPO -create -output "$darwin_file" $darwin_files 38024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # $darwin_filelist 38034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM -rf unfat-$$ 38044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cd "$darwin_orig_dir" 38054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 38064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cd $darwin_orig_dir 38074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_an_archive "$my_xdir" "$my_xabs" 38084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $darwin_arches 38094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } # !$opt_dry_run 38104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 38114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 38124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_an_archive "$my_xdir" "$my_xabs" 38134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 38144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 3815ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 38164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 3817893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives_result="$my_oldobjs" 38194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 3820893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 3822ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_emit_wrapper [arg=no] 3823ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 3824ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Emit a libtool wrapper script on stdout. 3825ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Don't directly open a file because we may want to 3826ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# incorporate the script contents within a cygwin/mingw 3827ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# wrapper executable. Must ONLY be called from within 3828ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_mode_link because it depends on a number of variables 3829ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# set therein. 38304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 3831ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 3832ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# variable will take. If 'yes', then the emitted script 3833ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# will assume that the directory in which it is stored is 3834ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# the $objdir directory. This is a cygwin/mingw-specific 3835ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# behavior. 3836ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_emit_wrapper () 38374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 3838ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_emit_wrapper_arg1=${1-no} 3839893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 38414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#! $SHELL 3842893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# $output - temporary wrapper script for $objdir/$outputname 38444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 38454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 38464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The $output program cannot be directly executed until all the libtool 38474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# libraries that it depends on are installed. 38484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 38494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This wrapper script should never be moved out of the build directory. 38504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# If it is, it will not operate correctly. 3851893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Sed substitution that helps us do robust quoting. It backslashifies 38534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# metacharacters that are still active within double-quoted strings. 38544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectsed_quote_subst='$sed_quote_subst' 3855893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Be Bourne compatible 38574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 38584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project emulate sh 38594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project NULLCMD=: 38604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 38614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # is contrary to our usage. Disable this feature. 38624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project alias -g '\${1+\"\$@\"}'='\"\$@\"' 38634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project setopt NO_GLOB_SUBST 38644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelse 38654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 38664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi 38674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectBIN_SH=xpg4; export BIN_SH # for Tru64 38684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectDUALCASE=1; export DUALCASE # for MKS sh 3869893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The HP-UX ksh and POSIX shell print the target directory to stdout 38714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# if CDPATH is set. 38724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3873893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrelink_command=\"$relink_command\" 3875893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 38764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# This environment variable determines our operation mode. 38774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectif test \"\$libtool_install_magic\" = \"$magic\"; then 38784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # install mode needs the following variables: 38794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project generated_by_libtool_version='$macro_version' 38804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_deplibs='$notinst_deplibs' 38814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectelse 38824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # When we are sourced in execute mode, \$file and \$ECHO are already set. 38834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"\$libtool_execute_magic\" != \"$magic\"; then 3884ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik file=\"\$0\"" 3885ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3886ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 3887ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "\ 3888ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3889ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# A function that is used when there is no print builtin or printf. 3890ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_fallback_echo () 3891ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 3892ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval 'cat <<_LTECHO_EOF 3893ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik\$1 3894ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik_LTECHO_EOF' 3895ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 3896ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ECHO=\"$qECHO\" 3897ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 3898ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3899ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Very basic option parsing. These options are (a) specific to 3900ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# the libtool wrapper, (b) are identical between the wrapper 3901ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# /script/ and the wrapper /executable/ which is used only on 3902ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# windows platforms, and (c) all begin with the string "--lt-" 3903ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# (application programs are unlikely to have options which match 3904ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# this pattern). 3905ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 3906ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# There are only two supported options: --lt-debug and 3907ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# --lt-dump-script. There is, deliberately, no --lt-help. 3908ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# 3909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# The first argument to this parsing function should be the 3910ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# script's $0 value, followed by "$@". 3911ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklt_option_debug= 3912ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_parse_lt_options () 3913ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 3914ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_script_arg0=\$0 3915ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift 3916ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for lt_opt 3917ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik do 3918ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case \"\$lt_opt\" in 3919ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --lt-debug) lt_option_debug=1 ;; 3920ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --lt-dump-script) 3921ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 3922ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 3923ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 3924ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik cat \"\$lt_dump_D/\$lt_dump_F\" 3925ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik exit 0 3926ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 3927ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --lt-*) 3928ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 3929ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik exit 1 3930ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 3931ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 3932ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 3933ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3934ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Print the debug banner immediately: 3935ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n \"\$lt_option_debug\"; then 3936ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 3937ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 3938ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 3939ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3940ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Used when --lt-debug. Prints its arguments to stdout 3941ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# (redirection is the responsibility of the caller) 3942ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_lt_dump_args () 3943ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 3944ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_dump_args_N=1; 3945ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for lt_arg 3946ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik do 3947ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 3948ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 3949ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 3950ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 3951ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3952ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Core function for launching the target application 3953ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_exec_program_core () 3954ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 39554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 3956ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $host in 3957ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Backslashes separate directories on plain windows 3958ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *-*-mingw | *-*-os2* | *-cegcc*) 3959ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "\ 3960ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n \"\$lt_option_debug\"; then 3961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 3962ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_lt_dump_args \${1+\"\$@\"} 1>&2 3963ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 3964ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 3965ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik" 3966ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 3967ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3968ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) 3969ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "\ 3970ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n \"\$lt_option_debug\"; then 3971ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 3972ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_lt_dump_args \${1+\"\$@\"} 1>&2 3973ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 3974ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik exec \"\$progdir/\$program\" \${1+\"\$@\"} 3975ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik" 3976ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 3977ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 3978ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "\ 3979ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 3980ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik exit 1 3981ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 3982ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 3983ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# A function to encapsulate launching the target application 3984ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# Strips options in the --lt-* namespace from \$@ and 3985ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# launches target application with the remaining arguments. 3986ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_exec_program () 3987ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 3988ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case \" \$* \" in 3989ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *\\ --lt-*) 3990ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for lt_wr_arg 3991ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik do 3992ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case \$lt_wr_arg in 3993ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik --lt-*) ;; 3994ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 3995ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 3996ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shift 3997ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done ;; 3998ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 3999ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_exec_program_core \${1+\"\$@\"} 4000ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 4001ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4002ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Parse options 4003ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_parse_lt_options \"\$0\" \${1+\"\$@\"} 4004893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Find the directory that this script lives in. 4006ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 40074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test \"x\$thisdir\" = \"x\$file\" && thisdir=. 4008893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Follow symbolic links until we get to the real thisdir. 4010ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 40114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test -n \"\$file\"; do 4012ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 4013893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If there was a directory component, then change thisdir. 40154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"x\$destdir\" != \"x\$file\"; then 40164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case \"\$destdir\" in 40174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 40184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) thisdir=\"\$thisdir/\$destdir\" ;; 40194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 40204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4021893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4022ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 4023ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 40244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 4025893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Usually 'no', except on cygwin/mingw when embedded into 40274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the cwrapper. 4028ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 40294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 40304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # special case for '.' 40314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"\$thisdir\" = \".\"; then 40324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project thisdir=\`pwd\` 40334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 40344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # remove .libs from thisdir 40354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case \"\$thisdir\" in 4036ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 40374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $objdir ) thisdir=. ;; 40384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 40394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4040893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Try to get the absolute directory name. 40424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir=\`cd \"\$thisdir\" && pwd\` 40434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n \"\$absdir\" && thisdir=\"\$absdir\" 40444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 4045893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$fast_install" = yes; then 40474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 40484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project program=lt-'$outputname'$exeext 40494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progdir=\"\$thisdir/$objdir\" 4050893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -f \"\$progdir/\$program\" || 40524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 40534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test \"X\$file\" != \"X\$progdir/\$program\"; }; then 4054893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=\"\$\$-\$program\" 4056893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -d \"\$progdir\"; then 40584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MKDIR \"\$progdir\" 40594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 40604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM \"\$progdir/\$file\" 40614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi" 4062893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 40644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 40654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # relink executable if necessary 40664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n \"\$relink_command\"; then 40674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if relink_command_output=\`eval \$relink_command 2>&1\`; then : 40684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 40694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO \"\$relink_command_output\" >&2 40704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM \"\$progdir/\$file\" 40714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit 1 4072893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 40734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 4074893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 40764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { $RM \"\$progdir/\$program\"; 40774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 40784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM \"\$progdir/\$file\" 40794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi" 40804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 40814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 40824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project program='$outputname' 40834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project progdir=\"\$thisdir/$objdir\" 40844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 4085893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 4086893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 4088893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 40894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f \"\$progdir/\$program\"; then" 4090893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4091ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # fixup the dll searchpath if we need to. 4092ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # 4093ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Fix the DLL searchpath if we need to. Do this before prepending 4094ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # to shlibpath, because on Windows, both are PATH and uninstalled 4095ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # libraries must come first. 4096ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$dllsearchpath"; then 4097ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "\ 4098ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Add the dll search path components to the executable PATH 4099ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik PATH=$dllsearchpath:\$PATH 4100ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik" 4101ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 4102ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 41034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Export our shlibpath_var if we have one. 41044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 41054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 41064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add our own library path to $shlibpath_var 41074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 4108893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 41094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Some systems cannot cope with colon-terminated $shlibpath_var 41104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The second colon is a workaround for a bug in BeOS R4 sed 4111ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 41124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 41134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export $shlibpath_var 41144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 4115893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 4116893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 41174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "\ 41184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test \"\$libtool_execute_magic\" != \"$magic\"; then 41194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Run the actual program with our arguments. 4120ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_exec_program \${1+\"\$@\"} 41214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 41224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 41234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The program doesn't exist. 41244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 41254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 4126ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 41274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit 1 41284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 41294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfi\ 41304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project" 41314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 41325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 4133893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 41344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_emit_cwrapperexe_src 41354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# emit the source code for a wrapper executable on stdout 41364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Must ONLY be called from within func_mode_link because 41374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# it depends on a number of variable set therein. 41384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_emit_cwrapperexe_src () 41394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 41404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<EOF 4141893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 41424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 41434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 41444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 41454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project The $output program cannot be directly executed until all the libtool 41464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libraries that it depends on are installed. 41474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 41484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project This wrapper executable should never be moved out of the build directory. 41494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project If it is, it will not operate correctly. 41504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project*/ 4151893912bfc2683463dc3e2c445336752d012563d3The Android Open Source ProjectEOF 41524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<"EOF" 4153ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#ifdef _MSC_VER 4154ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define _CRT_SECURE_NO_DEPRECATE 1 4155ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#endif 41564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <stdio.h> 41574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <stdlib.h> 41584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifdef _MSC_VER 41594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <direct.h> 41604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <process.h> 41614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <io.h> 41624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else 41634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <unistd.h> 41644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <stdint.h> 41654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# ifdef __CYGWIN__ 41664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# include <io.h> 41674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# endif 41684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 41694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <malloc.h> 41704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <stdarg.h> 41714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <assert.h> 41724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <string.h> 41734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <ctype.h> 41744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <errno.h> 41754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <fcntl.h> 41764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#include <sys/stat.h> 41774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* declarations of non-ANSI functions */ 4179ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#if defined(__MINGW32__) 4180ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ifdef __STRICT_ANSI__ 4181ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikint _putenv (const char *); 4182ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# endif 4183ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#elif defined(__CYGWIN__) 4184ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ifdef __STRICT_ANSI__ 4185ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikchar *realpath (const char *, char *); 4186ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikint putenv (char *); 4187ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikint setenv (const char *, const char *, int); 4188ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# endif 4189ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* #elif defined (other platforms) ... */ 4190ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#endif 4191ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4192ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* portability defines, excluding path handling macros */ 4193ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#if defined(_MSC_VER) 4194ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define setmode _setmode 4195ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define stat _stat 4196ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define chmod _chmod 4197ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define getcwd _getcwd 4198ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define putenv _putenv 4199ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define S_IXUSR _S_IEXEC 4200ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# ifndef _INTPTR_T_DEFINED 4201ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define _INTPTR_T_DEFINED 4202ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define intptr_t int 4203ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# endif 4204ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#elif defined(__MINGW32__) 4205ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define setmode _setmode 4206ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define stat _stat 4207ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define chmod _chmod 4208ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define getcwd _getcwd 4209ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define putenv _putenv 4210ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#elif defined(__CYGWIN__) 4211ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define HAVE_SETENV 4212ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# define FOPEN_WB "wb" 4213ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* #elif defined (other platforms) ... */ 4214ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#endif 4215ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 42164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined(PATH_MAX) 42174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LT_PATHMAX PATH_MAX 42184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#elif defined(MAXPATHLEN) 42194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LT_PATHMAX MAXPATHLEN 42204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else 42214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define LT_PATHMAX 1024 42224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 42234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 42244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef S_IXOTH 42254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define S_IXOTH 0 42264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 42274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef S_IXGRP 42284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define S_IXGRP 0 42294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 42304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4231ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* path handling portability macros */ 42324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef DIR_SEPARATOR 42334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define DIR_SEPARATOR '/' 42344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define PATH_SEPARATOR ':' 42354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 42364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 42374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 42384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project defined (__OS2__) 42394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define HAVE_DOS_BASED_FILE_SYSTEM 42404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define FOPEN_WB "wb" 42414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# ifndef DIR_SEPARATOR_2 42424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define DIR_SEPARATOR_2 '\\' 42434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# endif 42444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# ifndef PATH_SEPARATOR_2 42454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define PATH_SEPARATOR_2 ';' 42464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# endif 42474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 42484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 42494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef DIR_SEPARATOR_2 42504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 42514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else /* DIR_SEPARATOR_2 */ 42524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_DIR_SEPARATOR(ch) \ 42534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 42544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif /* DIR_SEPARATOR_2 */ 42554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 42564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef PATH_SEPARATOR_2 42574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 42584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else /* PATH_SEPARATOR_2 */ 42594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 42604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif /* PATH_SEPARATOR_2 */ 42614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 42624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef FOPEN_WB 42634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define FOPEN_WB "w" 42644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 42654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef _O_BINARY 42664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# define _O_BINARY 0 42674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 42684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 42694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 42704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#define XFREE(stale) do { \ 42714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (stale) { free ((void *) stale); stale = 0; } \ 42724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} while (0) 42734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4274ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#if defined(LT_DEBUGWRAPPER) 4275ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic int lt_debug = 1; 42764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else 4277ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic int lt_debug = 0; 42784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 42794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4280ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 42814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 42824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectvoid *xmalloc (size_t num); 42834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *xstrdup (const char *string); 42844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectconst char *base_name (const char *name); 42854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *find_executable (const char *wrapper); 42864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *chase_symlinks (const char *pathspec); 42874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint make_executable (const char *path); 42884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint check_executable (const char *path); 42894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar *strendzap (char *str, const char *pat); 4290ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 4291ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvoid lt_fatal (const char *file, int line, const char *message, ...); 4292ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic const char *nonnull (const char *s); 4293ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic const char *nonempty (const char *s); 42945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_setenv (const char *name, const char *value); 42955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 42965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_update_exe_path (const char *name, const char *value); 42975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid lt_update_lib_path (const char *name, const char *value); 4298ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikchar **prepare_spawn (char **argv); 4299ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvoid lt_dump_script (FILE *f); 43005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 43014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 43024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<EOF 4303ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvolatile const char * MAGIC_EXE = "$magic_exe"; 43045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 43055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 43065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 43075f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4308ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path "$temp_rpath" 43095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<EOF 4310ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 43115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 43125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 43135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 43145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * LIB_PATH_VALUE = ""; 43155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 43165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 43175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 43185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test -n "$dllsearchpath"; then 4319ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_host_path "$dllsearchpath:" 43205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<EOF 43215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * EXE_PATH_VARNAME = "PATH"; 4322ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 43235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 43245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 43255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 43265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * EXE_PATH_VARNAME = ""; 43275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * EXE_PATH_VALUE = ""; 43285f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 43295f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 43305f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 43315f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test "$fast_install" = yes; then 43325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<EOF 43335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 43345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 43355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 43365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<EOF 43375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 43385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 43395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 43405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 43415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 43425f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 43435f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 43445f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#define LTWRAPPER_OPTION_PREFIX "--lt-" 43455f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 43465f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 43475f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 4348ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 43494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 43504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint 43514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmain (int argc, char *argv[]) 43524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 43534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char **newargz; 43545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int newargc; 43554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *tmp_pathspec; 43564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *actual_cwrapper_path; 43575f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *actual_cwrapper_name; 43585f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *target_name; 43595f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *lt_argv_zero; 43604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project intptr_t rval = 127; 43614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 43624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int i; 43634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 43644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project program_name = (char *) xstrdup (base_name (argv[0])); 4365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik newargz = XMALLOC (char *, argc + 1); 43664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4367ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /* very simple arg parsing; don't want to rely on getopt 4368ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik * also, copy all non cwrapper options to newargz, except 4369ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik * argz[0], which is handled differently 4370ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik */ 4371ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik newargc=0; 43724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (i = 1; i < argc; i++) 43734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 43744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (strcmp (argv[i], dumpscript_opt) == 0) 43754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 43764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 43774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$host" in 43784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *mingw* | *cygwin* ) 43794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # make stdout use "unix" line endings 43804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project echo " setmode(1,_O_BINARY);" 43814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 43824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 43834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 43845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 4385ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_dump_script (stdout); 43864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 0; 43874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 4388ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (strcmp (argv[i], debug_opt) == 0) 4389ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 4390ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debug = 1; 4391ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik continue; 4392ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 4393ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 4394ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 4395ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 4396ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik namespace, but it is not one of the ones we know about and 4397ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik have already dealt with, above (inluding dump-script), then 4398ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik report an error. Otherwise, targets might begin to believe 4399ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 4400ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik namespace. The first time any user complains about this, we'll 4401ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik need to make LTWRAPPER_OPTION_PREFIX a configure-time option 4402ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik or a configure.ac-settable value. 4403ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik */ 4404ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_fatal (__FILE__, __LINE__, 4405ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "unrecognized %s option: '%s'", 4406ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ltwrapper_option_prefix, argv[i]); 4407ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 4408ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /* otherwise ... */ 4409ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik newargz[++newargc] = xstrdup (argv[i]); 44104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 4411ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik newargz[++newargc] = NULL; 4412ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4413ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikEOF 4414ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik cat <<EOF 4415ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /* The GNU banner must be the first non-error debug message */ 4416ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 4417ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikEOF 4418ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik cat <<"EOF" 4419ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 4420ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 44214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 44224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_pathspec = find_executable (argv[0]); 44234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (tmp_pathspec == NULL) 4424ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 4425ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, 4426ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "(main) found exe (before symlink chase) at: %s\n", 4427ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tmp_pathspec); 44284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 44294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project actual_cwrapper_path = chase_symlinks (tmp_pathspec); 4430ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, 4431ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "(main) found exe (after symlink chase) at: %s\n", 4432ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik actual_cwrapper_path); 44334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (tmp_pathspec); 44344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 4435ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 44365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strendzap (actual_cwrapper_path, actual_cwrapper_name); 44375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 44385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* wrapper name transforms */ 44395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strendzap (actual_cwrapper_name, ".exe"); 44405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 44415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (actual_cwrapper_name); 44425f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott actual_cwrapper_name = tmp_pathspec; 44434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_pathspec = 0; 44445f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 44455f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* target_name transforms -- use actual target program name; might have lt- prefix */ 44465f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 44475f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strendzap (target_name, ".exe"); 44485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 44495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (target_name); 44505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott target_name = tmp_pathspec; 44515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott tmp_pathspec = 0; 44525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 4453ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, 4454ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "(main) libtool target name: %s\n", 4455ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik target_name); 44564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 4457893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 44584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<EOF 44595f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott newargz[0] = 44604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XMALLOC (char, (strlen (actual_cwrapper_path) + 44615f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 44625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcpy (newargz[0], actual_cwrapper_path); 44635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcat (newargz[0], "$objdir"); 44645f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcat (newargz[0], "/"); 44654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 4466893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 44675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 44685f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* stop here, and copy so we don't have to do this twice */ 44695f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott tmp_pathspec = xstrdup (newargz[0]); 44705f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 44715f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 44725f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcat (newargz[0], actual_cwrapper_name); 44735f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 44745f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* DO want the lt- prefix here if it exists, so use target_name */ 44755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 44765f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (tmp_pathspec); 44775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott tmp_pathspec = NULL; 44785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick ScottEOF 4479893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 44804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host_os in 44814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project mingw*) 44824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<"EOF" 44834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 44844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char* p; 44855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott while ((p = strchr (newargz[0], '\\')) != NULL) 44865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 44875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *p = '/'; 44885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 44895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott while ((p = strchr (lt_argv_zero, '\\')) != NULL) 44904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 44914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *p = '/'; 44924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 44934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 44944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 44954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 44964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 4497893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 44984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<"EOF" 44995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (target_name); 45004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (actual_cwrapper_path); 45015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (actual_cwrapper_name); 4502893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 45045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 4505ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 4506ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 4507ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik because on Windows, both *_VARNAMEs are PATH but uninstalled 4508ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libraries must come first. */ 45095f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 4510ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 4511893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4512ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 4513ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik nonnull (lt_argv_zero)); 45145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott for (i = 0; i < newargc; i++) 45154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 4516ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 4517ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik i, nonnull (newargz[i])); 45184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 4519893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 4521893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host_os in 45234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project mingw*) 45245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 45254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* execv doesn't actually work on mingw as expected on unix */ 4526ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik newargz = prepare_spawn (newargz); 45275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 45284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (rval == -1) 45294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 45304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* failed to start process */ 4531ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, 4532ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "(main) failed to launch target \"%s\": %s\n", 4533ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_argv_zero, nonnull (strerror (errno))); 45344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 127; 45354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 45364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return rval; 45374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 45384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 45394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 45405f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cat <<"EOF" 45415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott execv (lt_argv_zero, newargz); 45424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return rval; /* =127, but avoids unused variable warning */ 45434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 45444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 45454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 4546893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat <<"EOF" 45485f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 4549893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectvoid * 45514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectxmalloc (size_t num) 45524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 45534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project void *p = (void *) malloc (num); 45544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (!p) 4555ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_fatal (__FILE__, __LINE__, "memory exhausted"); 4556893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return p; 45584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 4559893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar * 45614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectxstrdup (const char *string) 45624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 45634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 45644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project string) : NULL; 45654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 4566893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectconst char * 45684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbase_name (const char *name) 45694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 45704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *base; 4571893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 45734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* Skip over the disk name in MSDOS pathnames. */ 45744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (isalpha ((unsigned char) name[0]) && name[1] == ':') 45754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name += 2; 45764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 4577893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (base = name; *name; name++) 45794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (IS_DIR_SEPARATOR (*name)) 45804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project base = name + 1; 45814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return base; 45824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 4583893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint 45854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcheck_executable (const char *path) 45864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 45874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project struct stat st; 4588893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 4590ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik nonempty (path)); 45914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ((!path) || (!*path)) 45924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 0; 4593893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 45944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ((stat (path, &st) >= 0) 45954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 45964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 1; 45974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 45984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 0; 45994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 4600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectint 46024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectmake_executable (const char *path) 46034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 46044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int rval = 0; 46054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project struct stat st; 4606893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4607ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 4608ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik nonempty (path)); 46094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ((!path) || (!*path)) 46104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return 0; 4611893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (stat (path, &st) >= 0) 46134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 46144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 46154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 46164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return rval; 46174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 4618893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project/* Searches for the full path of the wrapper. Returns 46204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newly allocated full path name if found, NULL otherwise 46214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project Does not chase symlinks, even on platforms that support them. 46224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project*/ 46234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar * 46244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfind_executable (const char *wrapper) 46254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 46264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int has_slash = 0; 46274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *p; 46284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *p_next; 46294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* static buffer for getcwd */ 46304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char tmp[LT_PATHMAX + 1]; 46314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int tmp_len; 46324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *concat_name; 4633893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4634ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 4635ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik nonempty (wrapper)); 4636893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ((wrapper == NULL) || (*wrapper == '\0')) 46384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return NULL; 4639893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* Absolute path? */ 46414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 46424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 46434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 46444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name = xstrdup (wrapper); 46454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (check_executable (concat_name)) 46464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return concat_name; 46474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (concat_name); 46484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 46494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 46504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 46514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 46524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (IS_DIR_SEPARATOR (wrapper[0])) 46534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 46544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name = xstrdup (wrapper); 46554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (check_executable (concat_name)) 46564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return concat_name; 46574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (concat_name); 46584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 46594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 46604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 46614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 4662893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 46634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (p = wrapper; *p; p++) 46644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (*p == '/') 46654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 46664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project has_slash = 1; 46674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break; 46684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 46694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (!has_slash) 46704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 46714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* no slashes; search PATH */ 46724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *path = getenv ("PATH"); 46734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (path != NULL) 46744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 46754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (p = path; *p; p = p_next) 46764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 46774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *q; 46784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project size_t p_len; 46794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for (q = p; *q; q++) 46804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (IS_PATH_SEPARATOR (*q)) 46814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break; 46824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p_len = q - p; 46834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p_next = (*q == '\0' ? q : q + 1); 46844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (p_len == 0) 46854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 46864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* empty path: current directory */ 46874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (getcwd (tmp, LT_PATHMAX) == NULL) 4688ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4689ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik nonnull (strerror (errno))); 46904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_len = strlen (tmp); 46914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name = 46924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 46934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project memcpy (concat_name, tmp, tmp_len); 46944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name[tmp_len] = '/'; 46954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project strcpy (concat_name + tmp_len + 1, wrapper); 46964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 46974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 46984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 46994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name = 47004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 47014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project memcpy (concat_name, p, p_len); 47024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name[p_len] = '/'; 47034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project strcpy (concat_name + p_len + 1, wrapper); 47044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 47054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (check_executable (concat_name)) 47064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return concat_name; 47074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (concat_name); 47084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 47094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 47104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* not found in PATH; assume curdir */ 47114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 47124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* Relative path | not found in path: prepend cwd */ 47134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (getcwd (tmp, LT_PATHMAX) == NULL) 4714ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4715ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik nonnull (strerror (errno))); 47164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_len = strlen (tmp); 47174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 47184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project memcpy (concat_name, tmp, tmp_len); 47194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_name[tmp_len] = '/'; 47204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project strcpy (concat_name + tmp_len + 1, wrapper); 4721893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (check_executable (concat_name)) 47234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return concat_name; 47244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (concat_name); 47254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return NULL; 47264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 4727893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar * 47294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchase_symlinks (const char *pathspec) 47304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 47314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#ifndef S_ISLNK 47324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return xstrdup (pathspec); 47334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#else 47344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char buf[LT_PATHMAX]; 47354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project struct stat s; 47364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *tmp_pathspec = xstrdup (pathspec); 47374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project char *p; 47384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int has_symlinks = 0; 47394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while (strlen (tmp_pathspec) && !has_symlinks) 47404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 4741ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, 4742ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "checking path component for symlinks: %s\n", 4743ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tmp_pathspec); 47444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (lstat (tmp_pathspec, &s) == 0) 47454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 47464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (S_ISLNK (s.st_mode) != 0) 47474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 47484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project has_symlinks = 1; 47494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break; 47504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 4751893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* search backwards for last DIR_SEPARATOR */ 47534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p = tmp_pathspec + strlen (tmp_pathspec) - 1; 47544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 47554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project p--; 47564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 47574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 47584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project /* no more DIR_SEPARATORS left */ 47594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break; 47604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 47614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *p = '\0'; 47624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 47634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 47644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 4765ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_fatal (__FILE__, __LINE__, 4766ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "error accessing file \"%s\": %s", 4767ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tmp_pathspec, nonnull (strerror (errno))); 47684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 47694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 47704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project XFREE (tmp_pathspec); 4771893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (!has_symlinks) 47734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 47744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return xstrdup (pathspec); 47754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 4776893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_pathspec = realpath (pathspec, buf); 47784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (tmp_pathspec == 0) 47794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 4780ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_fatal (__FILE__, __LINE__, 4781ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "could not follow symlinks for %s", pathspec); 47824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 47834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return xstrdup (tmp_pathspec); 47844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project#endif 47854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 4786893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectchar * 47884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectstrendzap (char *str, const char *pat) 47894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 47904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project size_t len, patlen; 4791893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project assert (str != NULL); 47934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project assert (pat != NULL); 4794893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len = strlen (str); 47964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project patlen = strlen (pat); 4797893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 47984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (patlen <= len) 47994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { 48004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project str += len - patlen; 48014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (strcmp (str, pat) == 0) 48024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *str = '\0'; 48034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 48044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project return str; 48054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 4806893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 4807ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvoid 4808ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklt_debugprintf (const char *file, int line, const char *fmt, ...) 4809ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 4810ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik va_list args; 4811ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (lt_debug) 4812ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 4813ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 4814ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik va_start (args, fmt); 4815ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik (void) vfprintf (stderr, fmt, args); 4816ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik va_end (args); 4817ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 4818ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 4819ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 48204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectstatic void 4821ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklt_error_core (int exit_status, const char *file, 4822ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik int line, const char *mode, 48234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project const char *message, va_list ap) 48244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 4825ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 48264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vfprintf (stderr, message, ap); 48274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fprintf (stderr, ".\n"); 4828893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (exit_status >= 0) 48304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit (exit_status); 48314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 4832893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 48334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectvoid 4834ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiklt_fatal (const char *file, int line, const char *message, ...) 48354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 48364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project va_list ap; 48374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project va_start (ap, message); 4838ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 48394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project va_end (ap); 48404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 48415f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 4842ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic const char * 4843ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiknonnull (const char *s) 4844ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 4845ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik return s ? s : "(null)"; 4846ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 4847ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikstatic const char * 4849ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiknonempty (const char *s) 4850ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 4851ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik return (s && !*s) ? "(empty)" : nonnull (s); 4852ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 4853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 48545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid 48555f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_setenv (const char *name, const char *value) 48565f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 4857ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, 4858ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "(lt_setenv) setting '%s' to '%s'\n", 4859ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik nonnull (name), nonnull (value)); 48605f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 48615f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#ifdef HAVE_SETENV 48625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* always make a copy, for consistency with !HAVE_SETENV */ 48635f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *str = xstrdup (value); 48645f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott setenv (name, str, 1); 48655f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#else 48665f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int len = strlen (name) + 1 + strlen (value) + 1; 48675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *str = XMALLOC (char, len); 48685f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott sprintf (str, "%s=%s", name, value); 48695f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (putenv (str) != EXIT_SUCCESS) 48705f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 48715f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (str); 48725f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 48735f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott#endif 48745f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 48755f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 48765f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 48775f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottchar * 48785f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_extend_str (const char *orig_value, const char *add, int to_end) 48795f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 48805f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *new_value; 48815f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (orig_value && *orig_value) 48825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 48835f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int orig_value_len = strlen (orig_value); 48845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int add_len = strlen (add); 48855f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott new_value = XMALLOC (char, add_len + orig_value_len + 1); 48865f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (to_end) 48875f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 48885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcpy (new_value, orig_value); 48895f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcpy (new_value + orig_value_len, add); 48905f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 48915f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 48925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 48935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcpy (new_value, add); 48945f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott strcpy (new_value + add_len, orig_value); 48955f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 48965f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 48975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 48985f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 48995f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott new_value = xstrdup (add); 49005f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 49015f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott return new_value; 49025f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 49035f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 49045f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid 49055f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_update_exe_path (const char *name, const char *value) 49065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 4907ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, 4908ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 4909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik nonnull (name), nonnull (value)); 49105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 49115f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (name && *name && value && *value) 49125f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 49135f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *new_value = lt_extend_str (getenv (name), value, 0); 49145f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott /* some systems can't cope with a ':'-terminated path #' */ 49155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott int len = strlen (new_value); 49165f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 49175f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 49185f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott new_value[len-1] = '\0'; 49195f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 49205f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv (name, new_value); 49215f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (new_value); 49225f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 49235f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 49245f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 49255f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottvoid 49265f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scottlt_update_lib_path (const char *name, const char *value) 49275f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott{ 4928ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lt_debugprintf (__FILE__, __LINE__, 4929ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4930ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik nonnull (name), nonnull (value)); 49315f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 49325f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if (name && *name && value && *value) 49335f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott { 49345f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott char *new_value = lt_extend_str (getenv (name), value, 0); 49355f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott lt_setenv (name, new_value); 49365f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott XFREE (new_value); 49375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott } 49385f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott} 49395f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 4940ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikEOF 4941ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $host_os in 4942ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik mingw*) 4943ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik cat <<"EOF" 4944ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4945ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik/* Prepares an argument vector before calling spawn(). 4946ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik Note that spawn() does not by itself call the command interpreter 4947ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 4948ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 4949ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik GetVersionEx(&v); 4950ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik v.dwPlatformId == VER_PLATFORM_WIN32_NT; 4951ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik }) ? "cmd.exe" : "command.com"). 4952ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik Instead it simply concatenates the arguments, separated by ' ', and calls 4953ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik CreateProcess(). We must quote the arguments since Win32 CreateProcess() 4954ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 4955ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik special way: 4956ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik - Space and tab are interpreted as delimiters. They are not treated as 4957ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik delimiters if they are surrounded by double quotes: "...". 4958ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik - Unescaped double quotes are removed from the input. Their only effect is 4959ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik that within double quotes, space and tab are treated like normal 4960ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik characters. 4961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik - Backslashes not followed by double quotes are not special. 4962ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik - But 2*n+1 backslashes followed by a double quote become 4963ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik n backslashes followed by a double quote (n >= 0): 4964ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik \" -> " 4965ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik \\\" -> \" 4966ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik \\\\\" -> \\" 4967ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik */ 4968ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 4969ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 4970ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikchar ** 4971ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikprepare_spawn (char **argv) 4972ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 4973ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik size_t argc; 4974ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik char **new_argv; 4975ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik size_t i; 4976ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4977ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /* Count number of arguments. */ 4978ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for (argc = 0; argv[argc] != NULL; argc++) 4979ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ; 4980ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4981ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /* Allocate new argument vector. */ 4982ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik new_argv = XMALLOC (char *, argc + 1); 4983ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4984ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik /* Put quoted arguments into the new argument vector. */ 4985ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for (i = 0; i < argc; i++) 4986ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 4987ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik const char *string = argv[i]; 4988ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 4989ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (string[0] == '\0') 4990ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik new_argv[i] = xstrdup ("\"\""); 4991ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 4992ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 4993ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 4994ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik size_t length; 4995ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik unsigned int backslashes; 4996ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik const char *s; 4997ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik char *quoted_string; 4998ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik char *p; 4999ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 5000ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik length = 0; 5001ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik backslashes = 0; 5002ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (quote_around) 5003ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik length++; 5004ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for (s = string; *s != '\0'; s++) 5005ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 5006ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik char c = *s; 5007ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (c == '"') 5008ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik length += backslashes + 1; 5009ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik length++; 5010ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (c == '\\') 5011ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik backslashes++; 5012ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 5013ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik backslashes = 0; 5014ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 5015ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (quote_around) 5016ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik length += backslashes + 1; 5017ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 5018ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik quoted_string = XMALLOC (char, length + 1); 5019ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 5020ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik p = quoted_string; 5021ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik backslashes = 0; 5022ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (quote_around) 5023ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *p++ = '"'; 5024ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for (s = string; *s != '\0'; s++) 5025ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 5026ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik char c = *s; 5027ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (c == '"') 5028ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 5029ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik unsigned int j; 5030ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for (j = backslashes + 1; j > 0; j--) 5031ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *p++ = '\\'; 5032ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 5033ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *p++ = c; 5034ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (c == '\\') 5035ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik backslashes++; 5036ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 5037ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik backslashes = 0; 5038ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 5039ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if (quote_around) 5040ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { 5041ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik unsigned int j; 5042ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for (j = backslashes; j > 0; j--) 5043ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *p++ = '\\'; 5044ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *p++ = '"'; 5045ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 5046ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *p = '\0'; 5047ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 5048ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik new_argv[i] = quoted_string; 5049ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 5050ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 5051ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik new_argv[i] = (char *) string; 5052ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik } 5053ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik new_argv[argc] = NULL; 5054ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 5055ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik return new_argv; 5056ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 5057ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikEOF 5058ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 5059ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 50605f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott 5061ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik cat <<"EOF" 5062ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikvoid lt_dump_script (FILE* f) 5063ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 5064ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikEOF 5065ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_emit_wrapper yes | 5066ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $SED -n -e ' 5067ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiks/^\(.\{79\}\)\(..*\)/\1\ 5068ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik\2/ 5069ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikh 5070ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiks/\([\\"]\)/\\\1/g 5071ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiks/$/\\n/ 5072ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiks/\([^\n]*\).*/ fputs ("\1", f);/p 5073ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikg 5074ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris CraikD' 5075ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik cat <<"EOF" 5076ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 50774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 50784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 50794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# end: func_emit_cwrapperexe_src 5080893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5081ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_win32_import_lib_p ARG 5082ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# True if ARG is an import lib, as indicated by $file_magic_cmd 5083ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craikfunc_win32_import_lib_p () 5084ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ 5085ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_debug 5086ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 5087ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *import*) : ;; 5088ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) false ;; 5089ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 5090ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik} 5091ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 50924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_link arg... 50934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_link () 50944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 50954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 50964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 50975f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 50984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # It is impossible to link a dll without this setting, and 50994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # we shouldn't force the makefile maintainer to figure out 51004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # which system we are compiling for in order to pass an extra 51014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # flag for every libtool invocation. 51024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # allow_undefined=no 5103893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 51044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FIXME: Unfortunately, there are problems with the above when trying 51054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # to make a dll which has undefined symbols, in which case not 51064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # even a static library is built. For now, we need to specify 51074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -no-undefined on the libtool link line when we can be certain 51084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # that all symbols are satisfied, otherwise we get a static library. 51094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project allow_undefined=yes 51104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 51114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 51124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project allow_undefined=yes 51134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 51144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 51154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libtool_args=$nonopt 51164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project base_compile="$nonopt $@" 51174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command=$nonopt 51184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command=$nonopt 5119893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 51204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_rpath= 51214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_rpath= 51224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_shlibpath= 51234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_shlibpath= 51244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project convenience= 51254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_convenience= 51264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs= 51274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_deplibs= 51284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compiler_flags= 51294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linker_flags= 51304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dllsearchpath= 51314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_search_path=`pwd` 51324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project inst_prefix_dir= 51334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_inherited_linker_flags= 5134893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 51354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project avoid_version=no 5136ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik bindir= 51374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles= 51384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles= 51394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlself=no 51404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_dynamic=no 51414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols= 51424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols_regex= 51434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project generated= 51444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs= 51454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ltlibs= 51464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project module=no 51474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project no_install=no 51484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objs= 51494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_objects= 51504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project precious_files_regex= 51514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prefer_static_libs=no 51524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project preload=no 51534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 51544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prevarg= 51554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release= 51564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 51574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xrpath= 51584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project perm_rpath= 51594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project temp_rpath= 51604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project thread_safe=no 51614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vinfo= 51624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vinfo_number=no 51634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project weak_libs= 51644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project single_module="${wl}-single_module" 51654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_infer_tag $base_compile 5166893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 51674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need to know -static, to get the right output filenames. 51684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for arg 51694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 51704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 51714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared) 51724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_libtool_libs" != yes && \ 51734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_configuration "can not build a shared library" 51744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=no 51754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 51764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 51774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -all-static | -static | -static-libtool-libs) 51784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 51794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -all-static) 51804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 51814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "complete static linking is impossible in this configuration" 51824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$link_static_flag"; then 51844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopen_self=$dlopen_self_static 51854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prefer_static_libs=yes 51874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 51884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static) 51894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_flag" && test -n "$link_static_flag"; then 51904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopen_self=$dlopen_self_static 51914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prefer_static_libs=built 51934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 51944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static-libtool-libs) 51954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_flag" && test -n "$link_static_flag"; then 51964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopen_self=$dlopen_self_static 51974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 51984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prefer_static_libs=yes 51994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 52014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 52024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 52034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 52044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 52064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 5207893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 52084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # See if our shared archives depend on static archives. 52094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$old_archive_from_new_cmds" && build_old_libs=yes 5210893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 52114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Go through the arguments, transforming them on the way. 52124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test "$#" -gt 0; do 52134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$1" 52144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 52154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 52164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project qarg=$func_quote_for_eval_unquoted_result 52174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append libtool_args " $func_quote_for_eval_result" 5218893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 52194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the previous option needs an argument, assign it. 52204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$prev"; then 52214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $prev in 52224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output) 52234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " @OUTPUT@" 52244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " @OUTPUT@" 52254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 5227893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 52284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $prev in 5229ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik bindir) 5230ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik bindir="$arg" 5231ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik prev= 5232ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik continue 5233ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 52344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles|dlprefiles) 52354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$preload" = no; then 52364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add the symbol object into the linking commands. 52374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " @SYMFILE@" 52384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " @SYMFILE@" 52394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project preload=yes 52404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 52424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la | *.lo) ;; # We handle these cases below. 52434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project force) 52444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$dlself" = no; then 52454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlself=needless 52464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_dynamic=yes 52474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 52494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project self) 52524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlprefiles; then 52534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlself=yes 52544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 52554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlself=yes 52564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 52574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlself=needless 52584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_dynamic=yes 52594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 52614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 52644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlfiles; then 5265ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlfiles " $arg" 52664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 5267ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlprefiles " $arg" 52684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 52694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 52704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 52734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project expsyms) 52754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols="$arg" 52764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -f "$arg" \ 52774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project || func_fatal_error "symbol file \`$arg' does not exist" 52784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 52794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project expsyms_regex) 52824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols_regex="$arg" 52834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 52844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project framework) 52874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 52884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-darwin*) 52894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$deplibs " in 52904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $qarg.ltframework "*) ;; 5291ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append deplibs " $qarg.ltframework" # this is fixed later 52924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 52944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 52964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 52974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 52984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 52994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project inst_prefix) 53004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project inst_prefix_dir="$arg" 53014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 53024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 53034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 53044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objectlist) 53054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$arg"; then 53064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_arg=$arg 53074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project moreargs= 53084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for fil in `cat "$save_arg"` 53094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 5310ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik# func_append moreargs " $fil" 53114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$fil 53124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A libtool-controlled object. 5313893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that this really is a libtool object. 53154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_lalib_unsafe_p "$arg"; then 53164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object= 53174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object= 5318893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Read the .lo file 53204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$arg" 5321893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_object" || 53234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$non_pic_object" || 53244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$pic_object" = none && 53254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$non_pic_object" = none; then 53264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find name of object for \`$arg'" 53274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5328893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract subdirectory from the argument. 53304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$arg" "/" "" 53314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xdir="$func_dirname_result" 5332893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pic_object" != none; then 53344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepend the subdirectory the object is found in. 53354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object="$xdir$pic_object" 5336893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlfiles; then 53384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5339ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlfiles " $pic_object" 53404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 53414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 53424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 53434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If libtool objects are unsupported, then we need to preload. 53444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=dlprefiles 53454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5347893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # CHECK ME: I think I busted this. -Ossama 53494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlprefiles; then 53504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Preload the old-style object. 5351ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlprefiles " $pic_object" 53524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 53534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5354893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A PIC object. 53564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append libobjs " $pic_object" 53574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$pic_object" 53584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5359893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Non-PIC object. 53614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$non_pic_object" != none; then 53624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepend the subdirectory the object is found in. 53634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object="$xdir$non_pic_object" 5364893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 53654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A standard non-PIC object 53664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 53674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_object" || test "$pic_object" = none ; then 53684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$non_pic_object" 53694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 53714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the PIC object exists, use it instead. 53724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # $xdir was prepended to $pic_object above. 53734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object="$pic_object" 53744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 53754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 53774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only an error if not doing a dry-run. 53784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $opt_dry_run; then 53794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract subdirectory from the argument. 53804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$arg" "/" "" 53814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xdir="$func_dirname_result" 53824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 53834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lo2o "$arg" 53844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object=$xdir$objdir/$func_lo2o_result 53854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object=$xdir$func_lo2o_result 53864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append libobjs " $pic_object" 53874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 53884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 53894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$arg' is not a valid libtool object" 53904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 53934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 53944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "link input file \`$arg' does not exist" 53954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 53964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$save_arg 53974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 53984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 5399893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 54004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project precious_regex) 54014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project precious_files_regex="$arg" 54024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 54034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release) 54064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release="-$arg" 54074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 54084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath | xrpath) 54114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need an absolute path. 54124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 54134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) ;; 54144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 54154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "only absolute run-paths are allowed" 54164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5417893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 54184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = rpath; then 54194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$rpath " in 54204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $arg "*) ;; 5421ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append rpath " $arg" ;; 54224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 54234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 54244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$xrpath " in 54254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $arg "*) ;; 5426ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append xrpath " $arg" ;; 54274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 54284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 54294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 54304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shrext) 54334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shrext_cmds="$arg" 54344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 54354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project weak) 5438ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append weak_libs " $arg" 54394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 54404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xcclinker) 5443ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append linker_flags " $qarg" 5444ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compiler_flags " $qarg" 54454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 54464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $qarg" 54474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $qarg" 54484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xcompiler) 5451ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compiler_flags " $qarg" 54524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 54534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $qarg" 54544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $qarg" 54554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xlinker) 5458ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append linker_flags " $qarg" 5459ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compiler_flags " $wl$qarg" 54604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 54614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $wl$qarg" 54624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $wl$qarg" 54634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 54664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$prev=\"\$arg\"" 54674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 54684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 5469893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 5470893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 54714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # test -n "$prev" 5472893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prevarg="$arg" 5474893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $arg in 54764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -all-static) 54774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$link_static_flag"; then 54784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # See comment for -static flag below, for more details. 54794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $link_static_flag" 54804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $link_static_flag" 54814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 54824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5484893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -allow-undefined) 54864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FIXME: remove this flag sometime in the future. 54874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`-allow-undefined' must not be used because it is the default" 54884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5489893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 54904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -avoid-version) 54914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project avoid_version=yes 54924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 54934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 54944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 5495ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -bindir) 5496ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik prev=bindir 5497ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik continue 5498ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 5499ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 55004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlopen) 55014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=dlfiles 55024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 55034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 55054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -dlpreopen) 55064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=dlprefiles 55074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 55084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 55104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -export-dynamic) 55114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_dynamic=yes 55124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 55134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 55154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -export-symbols | -export-symbols-regex) 55164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 55174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "more than one -exported-symbols argument is not allowed" 55184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 55194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$arg" = "X-export-symbols"; then 55204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=expsyms 55214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 55224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=expsyms_regex 5523893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 55244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 55254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 55274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -framework) 55284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=framework 55294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 55304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 55324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -inst-prefix-dir) 55334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=inst_prefix 55344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 55354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 55374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 55384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # so, if we see these flags be careful not to treat them like -L 55394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L[A-Z][A-Z]*:*) 55404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $with_gcc/$host in 55414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project no/*-*-irix* | /*-*-irix*) 55424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 55434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 55444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 55464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 55474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 55494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) 5550ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname "-L" '' "$arg" 5551ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -z "$func_stripname_result"; then 55525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott if test "$#" -gt 0; then 55535f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_fatal_error "require no space between \`-L' and \`$1'" 55545f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott else 55555f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott func_fatal_error "need path for \`-L' option" 55565f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 55575f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott fi 5558ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$func_stripname_result" 5559ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik dir=$func_resolve_sysroot_result 55604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need an absolute path. 55614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $dir in 55624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) ;; 55634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 55644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir=`cd "$dir" && pwd` 55654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$absdir" && \ 55664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot determine absolute directory name of \`$dir'" 55674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$absdir" 55684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 55704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$deplibs " in 5571ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *" -L$dir "* | *" $arg "*) 5572ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Will only happen for absolute or sysroot arguments 5573ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 55744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 5575ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Preserve sysroot, but never include relative directories 5576ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $dir in 5577ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 5578ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append deplibs " -L$dir" ;; 5579ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 5580ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append lib_search_path " $dir" 55814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 55824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 5583893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $host in 55845f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5585ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 5586893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case :$dllsearchpath: in 55874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$dir:"*) ;; 55885f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ::) dllsearchpath=$dir;; 5589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append dllsearchpath ":$dir";; 5590893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 5591893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case :$dllsearchpath: in 5592893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *":$testbindir:"*) ;; 55935f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ::) dllsearchpath=$testbindir;; 5594ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append dllsearchpath ":$testbindir";; 5595893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 5596893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 5597893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 55984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 55994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 56024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 56034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 5604ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 56054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # These systems don't actually have a C or math library (as such) 56064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 56084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-os2*) 56094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # These systems don't actually have a C library (as such) 56104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$arg" = "X-lc" && continue 56114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 56124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 56134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do not include libc due to us having libc/libc_r. 56144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$arg" = "X-lc" && continue 56154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 56164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-rhapsody* | *-*-darwin1.[012]) 56174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Rhapsody C and math libraries are in the System framework 5618ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append deplibs " System.ltframework" 56194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 56214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sco3.2v5* | *-*-sco5v6*) 56224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Causes problems with __ctype 56234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$arg" = "X-lc" && continue 56244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 56254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 56264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Compiler inserts libc in the correct place for threads to work 56274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$arg" = "X-lc" && continue 56284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5629893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 56304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "X$arg" = "X-lc_r"; then 56314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 56324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 56334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do not include libc_r directly, use -pthread flag. 56344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 56364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 5637893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 5638ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append deplibs " $arg" 56394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5641893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -module) 56434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project module=yes 56444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5646893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Tru64 UNIX uses -model [arg] to determine the layout of C++ 56484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # classes, name mangling, and exception handling. 56494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Darwin uses the -arch flag to determine output architecture. 5650ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -model|-arch|-isysroot|--sysroot) 5651ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compiler_flags " $arg" 56524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 56534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 56544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=xcompiler 56554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5657893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5658ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 5659ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 5660ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compiler_flags " $arg" 56614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 56624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 56634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$new_inherited_linker_flags " in 56644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $arg "*) ;; 5665ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik * ) func_append new_inherited_linker_flags " $arg" ;; 56664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 56674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5669893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -multi_module) 56714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project single_module="${wl}-multi_module" 56724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5674893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-fast-install) 56764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fast_install=no 56774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5679893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-install) 56814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 56825f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 56834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The PATH hackery in wrapper scripts is required on Windows 56844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # and Darwin in order for the loader to find any dlls it needs. 56854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-no-install' is ignored for $host" 56864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "assuming \`-no-fast-install' instead" 56874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fast_install=no 56884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 56894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) no_install=yes ;; 56904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 56914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5693893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -no-undefined) 56954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project allow_undefined=no 56964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 56974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5698893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 56994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -objectlist) 57004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=objectlist 57014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5703893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -o) prev=output ;; 5705893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -precious-files-regex) 57074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=precious_regex 57084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5710893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -release) 57124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=release 57134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5715893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -rpath) 57174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=rpath 57184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5720893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R) 57224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=xrpath 57234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5725893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R*) 57274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-R' '' "$arg" 57284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir=$func_stripname_result 57294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need an absolute path. 57304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $dir in 57314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) ;; 5732ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik =*) 5733ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname '=' '' "$dir" 5734ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik dir=$lt_sysroot$func_stripname_result 5735ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 57364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 57374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "only absolute run-paths are allowed" 57384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 57394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 57404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$xrpath " in 57414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $dir "*) ;; 5742ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append xrpath " $dir" ;; 57434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 57444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5746893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shared) 57484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The effects of -shared are defined in a previous loop. 57494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5751893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -shrext) 57534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=shrext 57544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5756893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -static | -static-libtool-libs) 57584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The effects of -static are defined in a previous loop. 57594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We used to do the same as -all-static on platforms that 57604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # didn't have a PIC flag, but the assumption that the effects 57614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # would be equivalent was wrong. It would break on at least 57624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Digital Unix and AIX. 57634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5765893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -thread-safe) 57674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project thread_safe=yes 57684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5770893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -version-info) 57724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=vinfo 57734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5775893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -version-number) 57774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=vinfo 57784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vinfo_number=yes 57794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5781893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -weak) 57834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=weak 57844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 57854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5786893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 57874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Wc,*) 57884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-Wc,' '' "$arg" 57894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project args=$func_stripname_result 57904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg= 57914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS=',' 57924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for flag in $args; do 57934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 57944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$flag" 5795ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append arg " $func_quote_for_eval_result" 5796ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compiler_flags " $func_quote_for_eval_result" 57974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 57984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 57994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname ' ' '' "$arg" 58004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$func_stripname_result 58014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5802893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Wl,*) 58044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-Wl,' '' "$arg" 58054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project args=$func_stripname_result 58064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg= 58074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS=',' 58084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for flag in $args; do 58094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 58104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$flag" 5811ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append arg " $wl$func_quote_for_eval_result" 5812ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compiler_flags " $wl$func_quote_for_eval_result" 5813ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append linker_flags " $func_quote_for_eval_result" 58144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 58154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 58164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname ' ' '' "$arg" 58174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg=$func_stripname_result 58184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5819893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Xcompiler) 58214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=xcompiler 58224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 58234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5824893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -Xlinker) 58264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=xlinker 58274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 58284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5829893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -XCClinker) 58314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=xcclinker 58324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 58334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5834893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -msg_* for osf cc 58364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -msg_*) 58374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 58384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$func_quote_for_eval_result" 58394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5840893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5841ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Flags to be passed through unchanged, with rationale: 5842ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 5843ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # -r[0-9][0-9]* specify processor for the SGI compiler 5844ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 5845ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # +DA*, +DD* enable 64-bit mode for the HP compiler 5846ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # -q* compiler args for the IBM compiler 5847ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 5848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # -F/path path to uninstalled frameworks, gcc on darwin 5849ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 5850ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # @file GCC response files 5851ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # -tp=* Portland pgcc target processor selection 5852ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # --sysroot=* for sysroot support 5853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 58544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 5855ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 5856ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 58574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 58584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$func_quote_for_eval_result" 58594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 58604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 5861ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compiler_flags " $arg" 58624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 58634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5864893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Some other compiler flag. 58664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -* | +*) 58674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 58684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$func_quote_for_eval_result" 58694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5870893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$objext) 58724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A standard object. 5873ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append objs " $arg" 58744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5875893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) 58774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A libtool-controlled object. 5878893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that this really is a libtool object. 58804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_lalib_unsafe_p "$arg"; then 58814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object= 58824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object= 5883893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Read the .lo file 58854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$arg" 5886893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_object" || 58884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$non_pic_object" || 58894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$pic_object" = none && 58904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$non_pic_object" = none; then 58914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find name of object for \`$arg'" 58924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5893893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract subdirectory from the argument. 58954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$arg" "/" "" 58964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xdir="$func_dirname_result" 5897893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 58984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pic_object" != none; then 58994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepend the subdirectory the object is found in. 59004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object="$xdir$pic_object" 5901893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 59024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlfiles; then 59034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5904ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlfiles " $pic_object" 59054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 59064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 59074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 59084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If libtool objects are unsupported, then we need to preload. 59094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev=dlprefiles 59104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5912893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 59134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # CHECK ME: I think I busted this. -Ossama 59144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlprefiles; then 59154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Preload the old-style object. 5916ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlprefiles " $pic_object" 59174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 59184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5919893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 59204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A PIC object. 59214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append libobjs " $pic_object" 59224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$pic_object" 59234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5924893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 59254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Non-PIC object. 59264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$non_pic_object" != none; then 59274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepend the subdirectory the object is found in. 59284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object="$xdir$non_pic_object" 5929893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 59304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A standard non-PIC object 59314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 59324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$pic_object" || test "$pic_object" = none ; then 59334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$non_pic_object" 59344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5935893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 59364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the PIC object exists, use it instead. 59374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # $xdir was prepended to $pic_object above. 59384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object="$pic_object" 59394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 5940893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 5941893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 59424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only an error if not doing a dry-run. 59434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $opt_dry_run; then 59444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract subdirectory from the argument. 59454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$arg" "/" "" 59464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xdir="$func_dirname_result" 59474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 59484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lo2o "$arg" 59494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pic_object=$xdir$objdir/$func_lo2o_result 59504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project non_pic_object=$xdir$func_lo2o_result 59514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append libobjs " $pic_object" 59524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append non_pic_objects " $non_pic_object" 59534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 59544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$arg' is not a valid libtool object" 59554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 5956893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 59574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5958893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 59594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$libext) 59604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # An archive. 5961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append deplibs " $arg" 5962ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append old_deplibs " $arg" 59634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 59644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5965893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 59664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 59674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # A libtool-controlled library. 5968893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 5969ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$arg" 59704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$prev" = dlfiles; then 59714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This library was specified with -dlopen. 5972ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlfiles " $func_resolve_sysroot_result" 59734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 59744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$prev" = dlprefiles; then 59754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The library was specified with -dlpreopen. 5976ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlprefiles " $func_resolve_sysroot_result" 59774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prev= 59784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 5979ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append deplibs " $func_resolve_sysroot_result" 59804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 59814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 59824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 5983893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 59844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Some other compiler argument. 59854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 59864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Unknown arguments in both finalize_command and compile_command need 59874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # to be aesthetically quoted because they are evaled later. 59884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$arg" 59894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project arg="$func_quote_for_eval_result" 59904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 59914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac # arg 5992893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 59934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now actually substitute the argument into the commands. 59944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$arg"; then 59954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 59964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 5997893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 59984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # argument parsing loop 5999893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$prev" && \ 60014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "the \`$prevarg' option requires an argument" 6002893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 60044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval arg=\"$export_dynamic_flag_spec\" 60054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append compile_command " $arg" 60064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append finalize_command " $arg" 60074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6008893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs= 60104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # calculate the name of the file, without its directory 60114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$output" 60124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project outputname="$func_basename_result" 60134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs_save="$libobjs" 6014893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath_var"; then 60164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # get the directories listed in $shlibpath_var 6017ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 60184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 60194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shlib_search_path= 60204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 60214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 60224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 6023893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$output" "/" "" 60254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output_objdir="$func_dirname_result$objdir" 6026ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$output_objdir/" 6027ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tool_output_objdir=$func_to_tool_file_result 60284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Create the object directory. 60294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mkdir_p "$output_objdir" 6030893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Determine the type of output 60324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $output in 60334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project "") 60344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify an output file" 60354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 60364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$libext) linkmode=oldlib ;; 60374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo | *.$objext) linkmode=obj ;; 60384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) linkmode=lib ;; 60394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) linkmode=prog ;; # Anything else should be a program. 60404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6041893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project specialdeplibs= 6043893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libs= 60454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Find all interdependent deplibs by searching for libraries 60464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # that are linked more than once (e.g. -la -lb -la) 60474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $deplibs; do 6048ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if $opt_preserve_dup_deps ; then 60494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$libs " in 6050ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *" $deplib "*) func_append specialdeplibs " $deplib" ;; 60514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 60524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6053ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append libs " $deplib" 60544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 6055893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib; then 60574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libs="$predeps $libs $compiler_lib_search_path $postdeps" 6058893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Compute libraries that are listed more than once in $predeps 60604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # $postdeps and mark them as special (i.e., whose duplicates are 60614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # not to be eliminated). 60624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pre_post_deps= 60634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $opt_duplicate_compiler_generated_deps; then 60644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for pre_post_dep in $predeps $postdeps; do 60654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$pre_post_deps " in 6066ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 60674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6068ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append pre_post_deps " $pre_post_dep" 60694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 60704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 60714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pre_post_deps= 60724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6073893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs= 60754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs= 60764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib_search_path= 60774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project need_relink=no # whether we're linking any uninstalled libtool libraries 60784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_deplibs= # not-installed libtool libraries 60794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project notinst_path= # paths that contain not-installed libtool libraries 6080893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 60814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $linkmode in 60824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib) 60834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project passes="conv dlpreopen link" 60844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for file in $dlfiles $dlprefiles; do 60854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $file in 60864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) ;; 60874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 60884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 60894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 60904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 60914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 60924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 60934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prog) 60944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs= 60954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs= 60964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project alldeplibs=no 60974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlfiles= 60984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles= 60994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project passes="conv scan dlopen dlpreopen link" 61004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 61014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) passes="conv" 61024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 61034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6104893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 61054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for pass in $passes; do 61064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The preopen pass in lib mode reverses $deplibs; put it back here 61074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # so that -L comes before libs that need it for instance... 61084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "lib,link"; then 61094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ## FIXME: Find the place where the list is rebuilt in the wrong 61104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ## order, and fix it there properly 61114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_deplibs= 61124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $deplibs; do 61134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_deplibs="$deplib $tmp_deplibs" 61144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 61154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$tmp_deplibs" 61164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6117893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 61184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "lib,link" || 61194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$linkmode,$pass" = "prog,scan"; then 61204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libs="$deplibs" 61214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs= 61224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog; then 61244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $pass in 61254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopen) libs="$dlfiles" ;; 61264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlpreopen) libs="$dlprefiles" ;; 61274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 61284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 61294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "lib,dlpreopen"; then 61314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Collect and forward deplibs of preopened libtool libs 61324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $dlprefiles; do 61334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Ignore non-libtool-libs 61344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs= 6135ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$lib" 61364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $lib in 6137ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *.la) func_source "$func_resolve_sysroot_result" ;; 61384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6139893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 61404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Collect preopened libtool deplibs, except any this library 61414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # has declared as weak libs 61424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 6143ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_basename "$deplib" 6144ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik deplib_base=$func_basename_result 61454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $weak_libs " in 61464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib_base "*) ;; 6147ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append deplibs " $deplib" ;; 61484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 61494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 61504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 61514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libs="$dlprefiles" 61524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = dlopen; then 61544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Collect dlpreopened libraries 61554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_deplibs="$deplibs" 61564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs= 61574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6158893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 61594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $libs; do 61604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib= 61614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project found=no 61624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 6163ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 6164ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 61654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "prog,link"; then 61664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 61674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 61684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 6169ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compiler_flags " $deplib" 61704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib ; then 61714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$new_inherited_linker_flags " in 61724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 6173ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik * ) func_append new_inherited_linker_flags " $deplib" ;; 61744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 61754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 61784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 61794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 61804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" != lib && test "$linkmode" != prog; then 61814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-l' is ignored for archives/objects" 61824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 61834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-l' '' "$deplib" 61854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 61864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib; then 61874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 61884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 61894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 61904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 61914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for searchdir in $searchdirs; do 61924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for search_ext in .la $std_shrext .so .a; do 61934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Search the libtool library 61944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib="$searchdir/lib${name}${search_ext}" 61954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$lib"; then 61964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$search_ext" = ".la"; then 61974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project found=yes 61984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 61994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project found=no 62004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 2 62024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 62044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 62054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$found" != yes; then 62064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # deplib doesn't seem to be a libtool library 62074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "prog,link"; then 62084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 62094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 62104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 62114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 62124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 62134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 62154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else # deplib is a libtool library 62164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 62174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need to do some special things here, and not later. 62184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 62194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps " in 62204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) 62214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_lalib_p "$lib"; then 62224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project library_names= 62234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_library= 62244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$lib" 62254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for l in $old_library $library_names; do 62264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ll="$l" 62274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 62284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$ll" = "X$old_library" ; then # only static version available 62294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project found=no 62304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$lib" "" "." 62314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ladir="$func_dirname_result" 62324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib=$ladir/$old_library 62334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "prog,link"; then 62344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 62354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 62364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 62374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 62384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 62394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 62414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) ;; 62454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 62464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; # -l 62494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.ltframework) 62504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "prog,link"; then 62514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 62524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 62534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 62544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 62554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib ; then 62564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$new_inherited_linker_flags " in 62574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 6258ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik * ) func_append new_inherited_linker_flags " $deplib" ;; 62594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 62604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 62634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) 62654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $linkmode in 62664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib) 62674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 62684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$pass" = conv && continue 62694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs="$deplib $newdependency_libs" 62704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-L' '' "$deplib" 6271ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$func_stripname_result" 6272ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newlib_search_path " $func_resolve_sysroot_result" 62734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prog) 62754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = conv; then 62764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 62774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 62784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = scan; then 62804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 62814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 62824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 62834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 62844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 62854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-L' '' "$deplib" 6286ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$func_stripname_result" 6287ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newlib_search_path " $func_resolve_sysroot_result" 62884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 62904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-L' is ignored for archives/objects" 62914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 62924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac # linkmode 62934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 62944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; # -L 62954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R*) 62964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = link; then 62974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '-R' '' "$deplib" 6298ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$func_stripname_result" 6299ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik dir=$func_resolve_sysroot_result 63004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure the xrpath contains only unique directories. 63014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$xrpath " in 63024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $dir "*) ;; 6303ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append xrpath " $dir" ;; 63044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 63054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 63074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 63084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 6309ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *.la) 6310ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$deplib" 6311ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik lib=$func_resolve_sysroot_result 6312ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 63134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.$libext) 63144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = conv; then 63154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 63164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 63174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $linkmode in 63194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib) 63204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Linking convenience modules into shared libraries is allowed, 63214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # but linking other static libraries is non-portable. 63224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $dlpreconveniencelibs " in 63234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 63244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 63254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project valid_a_lib=no 63264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplibs_check_method in 63274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project match_pattern*) 63284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $deplibs_check_method; shift 63294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6330ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 63314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project | $EGREP "$match_pattern_regex" > /dev/null; then 63324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project valid_a_lib=yes 63334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pass_all) 63364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project valid_a_lib=yes 63374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 63394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$valid_a_lib" != yes; then 6340ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 63414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: Trying to link with static lib archive $deplib." 6342ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** I have the capability to make that library automatically link in when" 6343ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** you link to this library. But I can only do this if you have a" 6344ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** shared version of the library, which you do not appear to have" 6345ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** because the file extensions .$libext of this argument makes me believe" 6346ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** that it is just a static archive that I should not use here." 63474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 6348ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 63494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: Linking the shared library $output against the" 63504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** static library $deplib is not portable!" 63514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 63524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 63554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 63564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prog) 63584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" != link; then 63594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 63604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 63614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 63624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 63634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 63654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac # linkmode 63674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; # *.$libext 63684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo | *.$objext) 63694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = conv; then 63704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 63714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$linkmode" = prog; then 63724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 63734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If there is no dlopen support or we're linking statically, 63744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # we need to preload. 6375ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlprefiles " $deplib" 63764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$deplib $compile_deplibs" 63774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$deplib $finalize_deplibs" 63784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 6379ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlfiles " $deplib" 63804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 63824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 63834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project %DEPLIBS%) 63854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project alldeplibs=yes 63864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 63874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 63884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac # case $deplib 6389893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 63904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$found" = yes || test -f "$lib"; then : 63914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 63924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 63934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6394893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 63954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see that this really is a libtool archive. 63964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lalib_unsafe_p "$lib" \ 63974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project || func_fatal_error "\`$lib' is not a valid libtool archive" 6398893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 63994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$lib" "" "." 64004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ladir="$func_dirname_result" 6401893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 64024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlname= 64034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopen= 64044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlpreopen= 64054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir= 64064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project library_names= 64074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_library= 64084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project inherited_linker_flags= 64094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the library was installed with an old release of libtool, 64104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # it will not redefine variables installed, or shouldnotlink 64114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project installed=yes 64124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shouldnotlink=no 64134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project avoidtemprpath= 6414893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6415893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 64164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Read the .la file 64174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source "$lib" 64184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 64194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Convert "-framework foo" to "foo.ltframework" 64204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$inherited_linker_flags"; then 6421ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 64224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 64234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_inherited_linker_flags " in 64244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $tmp_inherited_linker_flag "*) ;; 6425ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 64264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 64274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 64284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6429ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 64304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "lib,link" || 64314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$linkmode,$pass" = "prog,scan" || 64324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test "$linkmode" != prog && test "$linkmode" != lib; }; then 6433ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test -n "$dlopen" && func_append dlfiles " $dlopen" 6434ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 64354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6436893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 64374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = conv; then 64384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only check for convenience libraries 64394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$lib $deplibs" 64404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$libdir"; then 64414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$old_library"; then 64424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find name of link library for \`$lib'" 64434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 64444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # It is a libtool convenience library, so add in its objects. 6445ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append convenience " $ladir/$objdir/$old_library" 6446ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append old_convenience " $ladir/$objdir/$old_library" 64474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$linkmode" != prog && test "$linkmode" != lib; then 64484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$lib' is not a convenience library" 64494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 64504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs= 64514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 64524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 6453ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if $opt_preserve_dup_deps ; then 64544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$tmp_libs " in 6455ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *" $deplib "*) func_append specialdeplibs " $deplib" ;; 64564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 64574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6458ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append tmp_libs " $deplib" 64594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 64604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 64614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $pass = conv 6462893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6463893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 64644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Get the name of the library we link against. 64654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linklib= 6466ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$old_library" && 6467ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik { test "$prefer_static_libs" = yes || 6468ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test "$prefer_static_libs,$installed" = "built,no"; }; then 6469ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik linklib=$old_library 6470ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 6471ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for l in $old_library $library_names; do 6472ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik linklib="$l" 6473ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done 6474ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 64754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$linklib"; then 64764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot find name of link library for \`$lib'" 64774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6478893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 64794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This library was specified with -dlopen. 64804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = dlopen; then 64814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$libdir"; then 64824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 64834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 64844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$dlname" || 64854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$dlopen_support" != yes || 64864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_libtool_libs" = no; then 64874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If there is no dlname, no dlopen support or we're linking 64884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # statically, we need to preload. We also need to preload any 64894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # dependent libraries so libltdl's deplib preloader doesn't 64904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # bomb out in the load deplibs phase. 6491ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlprefiles " $lib $dependency_libs" 64924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 6493ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlfiles " $lib" 64944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 64954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 64964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $pass = dlopen 6497893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 64984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need an absolute path. 64994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $ladir in 65004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 65014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 65024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project abs_ladir=`cd "$ladir" && pwd` 65034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$abs_ladir"; then 65044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "cannot determine absolute directory name of \`$ladir'" 65054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "passing it literally to the linker, although it might fail" 65064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project abs_ladir="$ladir" 65074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 65084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 65094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 65104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$lib" 65114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project laname="$func_basename_result" 6512893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 65134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Find the relevant object directory and library name. 65144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$installed" = Xyes; then 6515ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 65164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "library \`$lib' was moved." 65174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$ladir" 65184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir="$abs_ladir" 65194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir="$abs_ladir" 65204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 6521ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik dir="$lt_sysroot$libdir" 6522ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik absdir="$lt_sysroot$libdir" 65234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 65244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 65254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 65264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 65274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$ladir" 65284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir="$abs_ladir" 65294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Remove this search path later 6530ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append notinst_path " $abs_ladir" 65314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 65324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$ladir/$objdir" 65334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir="$abs_ladir/$objdir" 65344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Remove this search path later 6535ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append notinst_path " $abs_ladir" 65364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 65374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $installed = yes 65384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname 'lib' '.la' "$laname" 65394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 6540893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 65414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This library was specified with -dlpreopen. 65424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = dlpreopen; then 65434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$libdir" && test "$linkmode" = prog; then 65444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 65454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6546ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case "$host" in 6547ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # special handling for platforms with PE-DLLs. 6548ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *cygwin* | *mingw* | *cegcc* ) 6549ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Linker will automatically link against shared library if both 6550ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # static and shared are present. Therefore, ensure we extract 6551ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # symbols from the import library if a shared library is present 6552ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # (otherwise, the dlopen module name will be incorrect). We do 6553ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # this by putting the import library name into $newdlprefiles. 6554ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # We recover the dlopen module name by 'saving' the la file 6555ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # name in a special purpose variable, and (later) extracting the 6556ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # dlname from the la file. 6557ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$dlname"; then 6558ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_tr_sh "$dir/$linklib" 6559ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 6560ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlprefiles " $dir/$linklib" 6561ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 6562ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlprefiles " $dir/$old_library" 6563ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Keep a list of preopened convenience libraries to check 6564ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # that they are being used correctly in the link pass. 6565ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test -z "$libdir" && \ 6566ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlpreconveniencelibs " $dir/$old_library" 6567ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 6568ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 6569ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik * ) 6570ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Prefer using a static library (so that no silly _DYNAMIC symbols 6571ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # are required to link). 6572ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$old_library"; then 6573ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlprefiles " $dir/$old_library" 6574ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Keep a list of preopened convenience libraries to check 6575ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # that they are being used correctly in the link pass. 6576ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test -z "$libdir" && \ 6577ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dlpreconveniencelibs " $dir/$old_library" 6578ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Otherwise, use the dlname, so that lt_dlopen finds it. 6579ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik elif test -n "$dlname"; then 6580ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlprefiles " $dir/$dlname" 6581ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 6582ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlprefiles " $dir/$linklib" 6583ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 6584ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 6585ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 65864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $pass = dlpreopen 6587893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 65884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$libdir"; then 65894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Link the convenience library 65904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib; then 65914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$dir/$old_library $deplibs" 65924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$linkmode,$pass" = "prog,link"; then 65934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$dir/$old_library $compile_deplibs" 65944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$dir/$old_library $finalize_deplibs" 65954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 65964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$lib $deplibs" # used for prog,scan pass 65974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 65984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 65994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6601893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 66024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog && test "$pass" != link; then 6603ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newlib_search_path " $ladir" 66044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$lib $deplibs" 6605893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 66064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linkalldeplibs=no 66074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$link_all_deplibs" != no || test -z "$library_names" || 66084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_libtool_libs" = no; then 66094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linkalldeplibs=yes 66104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6611893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 66124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs= 66134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 66144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 66154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) func_stripname '-L' '' "$deplib" 6616ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$func_stripname_result" 6617ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newlib_search_path " $func_resolve_sysroot_result" 66184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 66194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 66204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Need to link against all dependency_libs? 66214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkalldeplibs" = yes; then 66224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 66234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 66244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Need to hardcode shared library paths 66254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # or/and link against static libraries 66264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs="$deplib $newdependency_libs" 66274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6628ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if $opt_preserve_dup_deps ; then 66294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$tmp_libs " in 6630ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *" $deplib "*) func_append specialdeplibs " $deplib" ;; 66314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 66324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6633ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append tmp_libs " $deplib" 66344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # for deplib 66354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 66364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $linkmode = prog... 6637893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 66384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" = "prog,link"; then 66394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$library_names" && 66404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { { test "$prefer_static_libs" = no || 66414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$prefer_static_libs,$installed" = "built,yes"; } || 66424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$old_library"; }; then 66434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need to hardcode the library path 66444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 66454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure the rpath contains only unique directories. 66464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$temp_rpath:" in 66474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *"$absdir:"*) ;; 6648ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append temp_rpath "$absdir:" ;; 66494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 66504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6651893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 66524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Hardcode the library path. 66534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Skip directories that are in the system default run-time 66544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # search path. 66554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $sys_lib_dlsearch_path " in 66564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $absdir "*) ;; 66574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 66584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$compile_rpath " in 66594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $absdir "*) ;; 6660ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append compile_rpath " $absdir" ;; 66614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 66624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 66634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 66644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $sys_lib_dlsearch_path " in 66654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 66664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 66674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$finalize_rpath " in 66684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 6669ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append finalize_rpath " $libdir" ;; 66704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 66714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 66724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 66734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # $linkmode,$pass = prog,link... 6674893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 66754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$alldeplibs" = yes && 66764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test "$deplibs_check_method" = pass_all || 66774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test "$build_libtool_libs" = yes && 66784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$library_names"; }; }; then 66794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We only need to search for static libraries 66804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 66814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6683893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 66844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_static=no # Whether the deplib will be linked statically 66854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project use_static_libs=$prefer_static_libs 66864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$use_static_libs" = built && test "$installed" = yes; then 66874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project use_static_libs=no 66884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 66894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$library_names" && 66904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test "$use_static_libs" = no || test -z "$old_library"; }; then 66914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 66925f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | *mingw* | *cegcc*) 66934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # No point in relinking DLLs because paths are not encoded 6694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append notinst_deplibs " $lib" 66954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project need_relink=no 66964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 66974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 66984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$installed" = no; then 6699ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append notinst_deplibs " $lib" 67004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project need_relink=yes 67014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This is a shared library 6705893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 67064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Warn about portability, can't link against -module's on some 67074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # systems (darwin). Don't bleat about dlopened modules though! 67084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopenmodule="" 67094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dlpremoduletest in $dlprefiles; do 67104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$dlpremoduletest" = "X$lib"; then 67114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlopenmodule="$dlpremoduletest" 67124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 67134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 67154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 6716ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 67174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog; then 67184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: Linking the executable $output against the loadable module" 67194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 67204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: Linking the shared library $output against the loadable module" 67214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** $linklib is not portable!" 67234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib && 67254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$hardcode_into_libs" = yes; then 67264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Hardcode the library path. 67274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Skip directories that are in the system default run-time 67284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # search path. 67294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $sys_lib_dlsearch_path " in 67304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $absdir "*) ;; 67314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 67324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$compile_rpath " in 67334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $absdir "*) ;; 6734ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append compile_rpath " $absdir" ;; 67354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $sys_lib_dlsearch_path " in 67394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 67404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 67414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$finalize_rpath " in 67424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 6743ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append finalize_rpath " $libdir" ;; 67444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6748893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 67494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$old_archive_from_expsyms_cmds"; then 67504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # figure out the soname 67514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $library_names 67524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 67534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project realname="$1" 67544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 67554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=`eval "\\$ECHO \"$libname_spec\""` 67564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # use dlname if we got it. it's perfectly good, no? 67574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlname"; then 67584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project soname="$dlname" 67594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$soname_spec"; then 67604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # bleh windows 67614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 67625f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *cygwin* | mingw* | *cegcc*) 67634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 67644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=$func_arith_result 67654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="-$major" 67664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 67674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 67684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval soname=\"$soname_spec\" 67694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 67704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project soname="$realname" 67714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6772893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 67734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make a new name for the extract_expsyms_cmds to use 67744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project soroot="$soname" 67754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$soroot" 67764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project soname="$func_basename_result" 67774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname 'lib' '.dll' "$soname" 67784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib=libimp-$func_stripname_result.a 6779893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 67804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the library has no export list, then create one now 67814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$output_objdir/$soname-def"; then : 67824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 67834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "extracting exported symbol list from \`$soname'" 67844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 67854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6786893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 67874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Create $newlib 67884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$output_objdir/$newlib"; then :; else 67894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "generating import library for \`$soname'" 67904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 67914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 67924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # make sure the library variables are pointing to the new library 67934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir=$output_objdir 67944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linklib=$newlib 67954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # test -n "$old_archive_from_expsyms_cmds" 6796893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6797ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$linkmode" = prog || test "$opt_mode" != relink; then 67984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_shlibpath= 67994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir= 68004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add= 68014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_linked=yes 68024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $hardcode_action in 68034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project immediate | unsupported) 68044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_direct" = no; then 68054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$dir/$linklib" 68064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 68074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 68084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sysv4*uw2*) add_dir="-L$dir" ;; 68094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 68104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-unixware7*) add_dir="-L$dir" ;; 68114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-darwin* ) 68124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # if the lib is a (non-dlopened) module then we can not 68134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # link against it, someone is ignoring the earlier warnings 68144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if /usr/bin/file -L $add 2> /dev/null | 68154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP ": [^:]* bundle" >/dev/null ; then 68164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$dlopenmodule" != "X$lib"; then 68174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: lib $linklib is a module, not a shared library" 68184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$old_library" ; then 6819ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 6820ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** And there doesn't seem to be a static archive available" 6821ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** The link will probably fail, sorry" 68224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 68234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$dir/$old_library" 68244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$old_library"; then 68264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$dir/$old_library" 68274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 68304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_minus_L" = no; then 68314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 68324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sunos*) add_shlibpath="$dir" ;; 68334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 68344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir="-L$dir" 68354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 68364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_shlibpath_var" = no; then 68374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_shlibpath="$dir" 68384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 68394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 68404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_linked=no 68414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 68434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink) 68444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_direct" = yes && 68454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$hardcode_direct_absolute" = no; then 68464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$dir/$linklib" 68474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_minus_L" = yes; then 6848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik add_dir="-L$absdir" 68494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Try looking first in the location we're being installed to. 68504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$inst_prefix_dir"; then 68514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $libdir in 68524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]*) 6853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append add_dir " -L$inst_prefix_dir$libdir" 68544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 68554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 68564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 68584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_shlibpath_var" = yes; then 68594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_shlibpath="$dir" 68604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 68614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 68624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_linked=no 68634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 68654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) lib_linked=no ;; 68664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 6867893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 68684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$lib_linked" != yes; then 68694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_configuration "unsupported hardcode properties" 68704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6871893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 68724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$add_shlibpath"; then 68734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case :$compile_shlibpath: in 68744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$add_shlibpath:"*) ;; 6875ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append compile_shlibpath "$add_shlibpath:" ;; 68764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 68774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog; then 68794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 68804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add" && compile_deplibs="$add $compile_deplibs" 68814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 68824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add_dir" && deplibs="$add_dir $deplibs" 68834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add" && deplibs="$add $deplibs" 68844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_direct" != yes && 68854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$hardcode_minus_L" != yes && 68864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$hardcode_shlibpath_var" = yes; then 68874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case :$finalize_shlibpath: in 68884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$libdir:"*) ;; 6889ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append finalize_shlibpath "$libdir:" ;; 68904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 68914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 68934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6894893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 6895ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$linkmode" = prog || test "$opt_mode" = relink; then 68964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_shlibpath= 68974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir= 68984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add= 68994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Finalize command for both is simple: just hardcode it. 69004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_direct" = yes && 69014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$hardcode_direct_absolute" = no; then 69024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$libdir/$linklib" 69034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_minus_L" = yes; then 69044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir="-L$libdir" 69054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 69064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_shlibpath_var" = yes; then 69074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case :$finalize_shlibpath: in 69084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$libdir:"*) ;; 6909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append finalize_shlibpath "$libdir:" ;; 69104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 69114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 69124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$hardcode_automatic" = yes; then 69134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$inst_prefix_dir" && 69144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -f "$inst_prefix_dir$libdir/$linklib" ; then 69154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$inst_prefix_dir$libdir/$linklib" 69164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 69174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="$libdir/$linklib" 69184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 69204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We cannot seem to hardcode it, guess we'll fake it. 69214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add_dir="-L$libdir" 69224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Try looking first in the location we're being installed to. 69234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$inst_prefix_dir"; then 69244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $libdir in 69254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]*) 6926ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append add_dir " -L$inst_prefix_dir$libdir" 69274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 69284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 69294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project add="-l$name" 69314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 6932893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 69334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog; then 69344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 69354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 69364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 69374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add_dir" && deplibs="$add_dir $deplibs" 69384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$add" && deplibs="$add $deplibs" 69394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$linkmode" = prog; then 69424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Here we assume that one of hardcode_direct or hardcode_minus_L 69434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # is not unsupported. This is valid on all known static and 69444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # shared platforms. 69454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_direct" != unsupported; then 69464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$old_library" && linklib="$old_library" 69474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$dir/$linklib $compile_deplibs" 69484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$dir/$linklib $finalize_deplibs" 69494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 69504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="-l$name -L$dir $compile_deplibs" 69514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="-l$name -L$dir $finalize_deplibs" 69524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test "$build_libtool_libs" = yes; then 69544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Not a shared library 69554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$deplibs_check_method" != pass_all; then 69564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We're trying link a shared library against a static one 69574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # but the system doesn't support it. 6958893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 69594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Just print a warning and add the library to dependency_libs so 69604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # that the program can be linked against the static library. 6961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 69624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: This system can not link to static lib archive $lib." 6963ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** I have the capability to make that library automatically link in when" 6964ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** you link to this library. But I can only do this if you have a" 6965ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** shared version of the library, which you do not appear to have." 69664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$module" = yes; then 6967ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** But as you try to build a module library, libtool will still create " 6968ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** a static module, that should work as long as the dlopening application" 6969ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 69704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$global_symbol_pipe"; then 6971ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 6972ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** However, this would only work if libtool was able to extract symbol" 6973ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 6974ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** not find such a program. So, this module is probably useless." 6975ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** \`nm' from GNU binutils and a full rebuild may help." 69764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = no; then 69784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=module 69794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 69804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 69814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 69824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 69854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$dir/$old_library $deplibs" 69864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_static=yes 69874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 69884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # link shared/static library? 6989893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 69904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = lib; then 69914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dependency_libs" && 69924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test "$hardcode_into_libs" != yes || 69934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_old_libs" = yes || 69944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$link_static" = yes; }; then 69954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Extract -R from dependency_libs 69964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project temp_deplibs= 69974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $dependency_libs; do 69984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $libdir in 69994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R*) func_stripname '-R' '' "$libdir" 70004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project temp_xrpath=$func_stripname_result 70014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $xrpath " in 70024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $temp_xrpath "*) ;; 7003ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append xrpath " $temp_xrpath";; 70044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac;; 7005ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append temp_deplibs " $libdir";; 70064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 70074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 70084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs="$temp_deplibs" 70094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 70104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7011ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newlib_search_path " $absdir" 70124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Link against this library 70134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 70144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # ... and its dependency_libs 70154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs= 70164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 70174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs="$deplib $newdependency_libs" 7018ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $deplib in 7019ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -L*) func_stripname '-L' '' "$deplib" 7020ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$func_stripname_result";; 7021ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_resolve_sysroot "$deplib" ;; 7022ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 7023ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if $opt_preserve_dup_deps ; then 70244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$tmp_libs " in 7025ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *" $func_resolve_sysroot_result "*) 7026ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append specialdeplibs " $func_resolve_sysroot_result" ;; 70274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 70284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7029ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append tmp_libs " $func_resolve_sysroot_result" 70304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 70314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 70324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$link_all_deplibs" != no; then 70334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add the search paths of all dependency libraries 70344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 7035ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik path= 70364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 70374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) path="$deplib" ;; 70384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 7039ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$deplib" 7040ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik deplib=$func_resolve_sysroot_result 70414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$deplib" "" "." 7042ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik dir=$func_dirname_result 70434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We need an absolute path. 70444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $dir in 70454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 70464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 70474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir=`cd "$dir" && pwd` 70484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$absdir"; then 70494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "cannot determine absolute directory name of \`$dir'" 70504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project absdir="$dir" 70514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 70524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 70534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 70544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $GREP "^installed=no" $deplib > /dev/null; then 70554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 70564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-darwin*) 70574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project depdepl= 70584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 70594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$deplibrary_names" ; then 70604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for tmp in $deplibrary_names ; do 70614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project depdepl=$tmp 70624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 70634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$absdir/$objdir/$depdepl" ; then 70644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project depdepl="$absdir/$objdir/$depdepl" 70655f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 70664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$darwin_install_name"; then 70675f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 70684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7069ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 7070ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 70714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project path= 70724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 70734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 70744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 70754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 70764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project path="-L$absdir/$objdir" 70774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 70784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 70794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 70804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 70814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libdir" && \ 70824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$deplib' is not a valid libtool archive" 70834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$absdir" != "$libdir" && \ 70844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`$deplib' seems to be moved" 70854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 70864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project path="-L$absdir" 70874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 70884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 70894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 70904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $deplibs " in 70914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $path "*) ;; 70924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) deplibs="$path $deplibs" ;; 70934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 70944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 70954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # link_all_deplibs != no 70964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi # linkmode = lib 70974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # for deplib in $libs 70984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = link; then 70994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = "prog"; then 71004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 71014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 71024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 7103ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 71044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 71054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 71064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs="$newdependency_libs" 71074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" = dlpreopen; then 71084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Link the dlpreopened libraries before other libraries 71094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $save_deplibs; do 71104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$deplib $deplibs" 71114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 71124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 71134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" != dlopen; then 71144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$pass" != conv; then 71154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure lib_search_path contains only unique directories. 71164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib_search_path= 71174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dir in $newlib_search_path; do 71184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$lib_search_path " in 71194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $dir "*) ;; 7120ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append lib_search_path " $dir" ;; 71214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 71224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 71234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newlib_search_path= 71244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 71254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 71264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode,$pass" != "prog,link"; then 71274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vars="deplibs" 71284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 71294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project vars="compile_deplibs finalize_deplibs" 71304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 71314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for var in $vars dependency_libs; do 71324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add libraries to $var in reverse order 71334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval tmp_libs=\"\$$var\" 71344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_libs= 71354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $tmp_libs; do 71364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FIXME: Pedantically, this is the right thing to do, so 71374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # that some nasty dependency loop isn't accidentally 71384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # broken: 71394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project #new_libs="$deplib $new_libs" 71404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Pragmatically, this seems to cause very few problems in 71414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # practice: 71424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 71434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) new_libs="$deplib $new_libs" ;; 71444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -R*) ;; 71454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 71464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # And here is the reason: when a library appears more 71474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # than once as an explicit dependence of a library, or 71484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # is implicitly linked in more than once by the 71494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # compiler, it is considered special, and multiple 71504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # occurrences thereof are not removed. Compare this 71514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # with having the same library being listed as a 71524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # dependency of multiple other libraries: in this case, 71534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # we know (pedantically, we assume) the library does not 71544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # need to be listed more than once, so we keep only the 71554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # last copy. This is not always right, but it is rare 71564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # enough that we require users that really mean to play 71574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # such unportable linking tricks to link the library 71584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # using -Wl,-lname, so that libtool does not consider it 71594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # for duplicate removal. 71604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $specialdeplibs " in 71614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) new_libs="$deplib $new_libs" ;; 71624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 71634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_libs " in 71644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 71654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) new_libs="$deplib $new_libs" ;; 71664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 71674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 71684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 71694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 71704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 71714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 71724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs= 71734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $new_libs; do 71744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 71754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) 71764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $tmp_libs " in 71774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 7178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append tmp_libs " $deplib" ;; 71794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 71804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 7181ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append tmp_libs " $deplib" ;; 71824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 71834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 71844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval $var=\"$tmp_libs\" 71854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # for var 71864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 71874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Last step: remove runtime libs from dependency_libs 71884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # (they stay in deplibs) 71894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_libs= 71904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $dependency_libs ; do 71914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps $compiler_lib_search_path " in 71924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $i "*) 71934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project i="" 71944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 71954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 71964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$i" ; then 7197ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append tmp_libs " $i" 71984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 71994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 72004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs=$tmp_libs 72014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # for pass 72024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog; then 72034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles="$newdlfiles" 72044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$linkmode" = prog || test "$linkmode" = lib; then 72064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$newdlprefiles" 72074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $linkmode in 72104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlib) 72114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 72124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-dlopen' is ignored for archives" 72134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $deplibs" in 72164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *\ -l* | *\ -L*) 72174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-l' and \`-L' are ignored for archives" ;; 72184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 72194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$rpath" && \ 72214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-rpath' is ignored for archives" 72224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$xrpath" && \ 72244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-R' is ignored for archives" 72254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$vinfo" && \ 72274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-version-info/-version-number' is ignored for archives" 72284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$release" && \ 72304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-release' is ignored for archives" 72314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$export_symbols$export_symbols_regex" && \ 72334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-export-symbols' is ignored for archives" 72344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now set the variables for building old libraries. 72364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 72374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs="$output" 7238ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append objs "$old_deplibs" 72394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 72404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib) 72424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure we only generate libraries of the form `libNAME.la'. 72434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $outputname in 72444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib*) 72454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname 'lib' '.la' "$outputname" 72464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 72474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval shared_ext=\"$shrext_cmds\" 72484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libname=\"$libname_spec\" 72494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 72504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 72514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$module" = no && \ 72524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "libtool library \`$output' must begin with \`lib'" 72534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$need_lib_prefix" != no; then 72554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add the "lib" prefix for modules if required 72564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.la' "$outputname" 72574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 72584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval shared_ext=\"$shrext_cmds\" 72594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libname=\"$libname_spec\" 72604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 72614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.la' "$outputname" 72624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=$func_stripname_result 72634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 72654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 72664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$objs"; then 72684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$deplibs_check_method" != pass_all; then 72694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 72704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 7271ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 72724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 72734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** objects $objs is not portable!" 7274ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append libobjs " $objs" 72754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$dlself" != no && \ 72794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-dlopen self' is ignored for libtool libraries" 72804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $rpath 72824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 72834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$#" -gt 1 && \ 72844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "ignoring multiple \`-rpath's for a libtool library" 72854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project install_libdir="$1" 72874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 72884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs= 72894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$rpath"; then 72904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes; then 72914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Building a libtool convenience library. 72924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Some compilers have problems with a `.al' extension so 72934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # convenience libraries should have the same extension an 72944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # archive normally would. 72954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs="$output_objdir/$libname.$libext $oldlibs" 72964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=convenience 72974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 72984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 72994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$vinfo" && \ 73014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 73024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$release" && \ 73044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-release' is ignored for convenience libraries" 73054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 73064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Parse the version information argument. 73084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS=':' 73094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $vinfo 0 0 0 73104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 73114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 73124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$7" && \ 73144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "too many parameters to \`-version-info'" 73154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # convert absolute version numbers to libtool ages 73174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # this retains compatibility with .la files and attempts 73184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # to make the code below a bit more comprehensible 73194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $vinfo_number in 73214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project yes) 73224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project number_major="$1" 73234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project number_minor="$2" 73244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project number_revision="$3" 73254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # 73264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # There are really only two kinds -- those that 73274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # use the current revision as the major version 73284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # and those that subtract age and use age as 73294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # a minor version. But, then there is irix 73304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # which has an extra 1 added just for fun 73314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # 73324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $version_type in 7333ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # correct linux to gnu/linux during the next big refactor 73344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin|linux|osf|windows|none) 73354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $number_major + $number_minor 73364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project current=$func_arith_result 73374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project age="$number_minor" 73384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project revision="$number_revision" 73394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 7340ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik freebsd-aout|freebsd-elf|qnx|sunos) 73414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project current="$number_major" 73424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project revision="$number_minor" 73434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project age="0" 73444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 73454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project irix|nonstopux) 73464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $number_major + $number_minor 73474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project current=$func_arith_result 73484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project age="$number_minor" 73494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project revision="$number_minor" 73504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_irix_increment=no 73514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 73524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 73534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 73544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project no) 73554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project current="$1" 73564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project revision="$2" 73574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project age="$3" 73584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 73594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 73604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check that each of the things are valid numbers. 73624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $current in 73634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 73644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 73654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "CURRENT \`$current' must be a nonnegative integer" 73664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$vinfo' is not valid version information" 73674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 73684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 73694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $revision in 73714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 73724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 73734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "REVISION \`$revision' must be a nonnegative integer" 73744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$vinfo' is not valid version information" 73754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 73764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 73774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $age in 73794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; 73804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 73814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "AGE \`$age' must be a nonnegative integer" 73824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$vinfo' is not valid version information" 73834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 73844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 73854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$age" -gt "$current"; then 73874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_error "AGE \`$age' is greater than the current interface number \`$current'" 73884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$vinfo' is not valid version information" 73894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 73904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Calculate the version variables. 73924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major= 73934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix= 73944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring= 73954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $version_type in 73964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project none) ;; 73974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 73984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin) 73994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Like Linux, but with the current version available in 74004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # verstring for coding it into the library header 74014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 74024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=.$func_arith_result 74034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="$major.$age.$revision" 74044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Darwin ld doesn't like 0 for these options... 74054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current + 1 74064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project minor_current=$func_arith_result 74074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 74084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 74094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 74104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project freebsd-aout) 74124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=".$current" 74134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".$current.$revision"; 74144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 74154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project freebsd-elf) 74174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=".$current" 74184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".$current" 74194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 74204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project irix | nonstopux) 74224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$lt_irix_increment" = "Xno"; then 74234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 74244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 74254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age + 1 74264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 74274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=$func_arith_result 74284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $version_type in 74304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project nonstopux) verstring_prefix=nonstopux ;; 74314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) verstring_prefix=sgi ;; 74324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 74334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="$verstring_prefix$major.$revision" 74344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add in all the interfaces that we are compatible with. 74364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project loop=$revision 74374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test "$loop" -ne 0; do 74384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $revision - $loop 74394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project iface=$func_arith_result 74404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $loop - 1 74414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project loop=$func_arith_result 74424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="$verstring_prefix$major.$iface:$verstring" 74434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 74444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Before this point, $major must not contain `.'. 74464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=.$major 74474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="$major.$revision" 74484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 74494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7450ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik linux) # correct to gnu/linux during the next big refactor 74514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 74524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=.$func_arith_result 74534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="$major.$age.$revision" 74544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 74554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project osf) 74574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 74584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=.$func_arith_result 74594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".$current.$age.$revision" 74604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="$current.$age.$revision" 74614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add in all the interfaces that we are compatible with. 74634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project loop=$age 74644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test "$loop" -ne 0; do 74654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $loop 74664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project iface=$func_arith_result 74674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $loop - 1 74684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project loop=$func_arith_result 74694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="$verstring:${iface}.0" 74704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 74714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make executables depend on our current version. 7473ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append verstring ":${current}.0" 74744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 74754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project qnx) 74774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=".$current" 74784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".$current" 74794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 74804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project sunos) 74824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=".$current" 74834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".$current.$revision" 74844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 74854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project windows) 74874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Use '-' rather than '.', since we only want one 74884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # extension on DOS 8.3 filesystems. 74894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $current - $age 74904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=$func_arith_result 74914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="-$major" 74924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 74934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 74954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_configuration "unknown library version type \`$version_type'" 74964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 74974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 74984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 74994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Clear the version info if we defaulted, and they specified a release. 75004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$vinfo" && test -n "$release"; then 75014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major= 75024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $version_type in 75034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project darwin) 75044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # we can't check for "0.0" in archive_cmds due to quoting 75054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # problems, so we reset it completely 75064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring= 75074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 75084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 75094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="0.0" 75104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 75114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 75124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$need_version" = no; then 75134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix= 75144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 75154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=".0.0" 75164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 75194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Remove version info from name if versioning should be avoided 75204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$avoid_version" = yes && test "$need_version" = no; then 75214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major= 75224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix= 75234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project verstring="" 75244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 75264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Check to see if the archive will have undefined symbols. 75274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$allow_undefined" = yes; then 75284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$allow_undefined_flag" = unsupported; then 75294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "undefined symbols not allowed in $host shared libraries" 75304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 75314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 75324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 75344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't allow undefined symbols. 75354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project allow_undefined_flag="$no_undefined_flag" 75364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 75384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 75404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_generate_dlsyms "$libname" "$libname" "yes" 7541ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append libobjs " $symfileobj" 75424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 75434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 7544ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$opt_mode" != relink; then 75454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Remove our outputs, but don't remove object files since they 75464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # may have been created when compiling PIC objects. 75474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project removelist= 75484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tempremovelist=`$ECHO "$output_objdir/*"` 75494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for p in $tempremovelist; do 75504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $p in 75515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *.$objext | *.gcno) 75524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 75534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 75544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$precious_files_regex" != "X"; then 75554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 75564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project then 75574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 75584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7560ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append removelist " $p" 75614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 75624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) ;; 75634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 75644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 75654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$removelist" && \ 75664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "${RM}r \$removelist" 75674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 75694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now set the variables for building old libraries. 75704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 7571ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append oldlibs " $output_objdir/$libname.$libext" 75724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 75734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform .lo files to .o files. 7574ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 75754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 75774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Eliminate all temporary directories. 75784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project #for path in $notinst_path; do 7579ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 7580ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 7581ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 75824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project #done 75834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 75844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$xrpath"; then 75854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the user specified any rpath flags, then add them. 75864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project temp_xrpath= 75874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $xrpath; do 7588ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_replace_sysroot "$libdir" 7589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append temp_xrpath " -R$func_replace_sysroot_result" 75904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$finalize_rpath " in 75914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 7592ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append finalize_rpath " $libdir" ;; 75934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 75944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 75954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 75964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs="$temp_xrpath $dependency_libs" 75974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 75994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 76004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure dlfiles contains only unique files that won't be dlpreopened 76014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_dlfiles="$dlfiles" 76024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles= 76034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $old_dlfiles; do 76044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $dlprefiles $dlfiles " in 76054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $lib "*) ;; 7606ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append dlfiles " $lib" ;; 76074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 76084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 76094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 76104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure dlprefiles contains only unique files 76114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_dlprefiles="$dlprefiles" 76124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles= 76134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $old_dlprefiles; do 76144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$dlprefiles " in 76154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $lib "*) ;; 7616ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append dlprefiles " $lib" ;; 76174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 76184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 7619893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 76204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes; then 76214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$rpath"; then 76224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 7623ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 76244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # these systems don't actually have a c library (as such)! 76254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-rhapsody* | *-*-darwin1.[012]) 76274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Rhapsody C library is in the System framework 7628ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append deplibs " System.ltframework" 76294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-netbsd*) 76314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't link with libc until the a.out ld.so is fixed. 76324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 76344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do not include libc due to us having libc/libc_r. 76354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sco3.2v5* | *-*-sco5v6*) 76374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Causes problems with __ctype 76384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 76404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Compiler inserts libc in the correct place for threads to work 76414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 76434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add libc to deplibs on all other systems if necessary. 76444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_need_lc" = "yes"; then 7645ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append deplibs " -lc" 76464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 76474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 76494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 76504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 76514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform deplibs into only deplibs that can be linked in shared. 76524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name_save=$name 76534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname_save=$libname 76544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release_save=$release 76554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix_save=$versuffix 76564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major_save=$major 76574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # I'm not sure if I'm treating the release correctly. I think 76584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # release should show up in the -l (ie -lgmp5) so we don't want to 76594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # add it in twice. Is that correct? 76604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release="" 76614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix="" 76624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major="" 76634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs= 76644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=no 76654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplibs_check_method in 76664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project pass_all) 76674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't check for shared/static. Everything works. 76684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This might be a little naive. We might want to check 76694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # whether the library exists or not. But this is on 76704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # osf3 & osf4 and I'm not really sure... Just 76714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # implementing what was already the behavior. 76724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs=$deplibs 76734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test_compile) 76754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This code stresses the "libraries are programs" paradigm to its 76764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # limits. Maybe even breaks it. We compile a program, linking it 76774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # against the deplibs as a proxy for the library. Then we can check 76784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # whether they linked in statically or dynamically with ldd. 76794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM conftest.c 76804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cat > conftest.c <<EOF 76814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project int main() { return 0; } 76824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source ProjectEOF 76834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM conftest 76844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 76854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ldd_output=`ldd conftest` 76864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $deplibs; do 76874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $i in 76884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 76894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname -l '' "$i" 76904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 76914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 76924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps " in 76934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $i "*) 7694ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $i" 76954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project i="" 76964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 76974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 76984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 76994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$i" ; then 77004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=`eval "\\$ECHO \"$libname_spec\""` 77014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 77024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $deplib_matches; shift 77034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplib_match=$1 77044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7705ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $i" 77064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 77074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 7708ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 77094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7710ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** I have the capability to make that library automatically link in when" 7711ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** you link to this library. But I can only do this if you have a" 7712ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** shared version of the library, which I believe you do not have" 7713ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** because a test_compile did reveal that the linker did not use it for" 7714ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** its dynamic dependency list that programs get resolved with at runtime." 77154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 77164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 77174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 77184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 7719ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $i" 77204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 77214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 77224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 77234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 77244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Error occurred in the first compile. Let's try to salvage 77254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the situation: Compile a separate program for each library. 77264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $deplibs; do 77274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $i in 77284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 77294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname -l '' "$i" 77304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 77314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM conftest 77324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 77334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ldd_output=`ldd conftest` 77344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 77354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps " in 77364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $i "*) 7737ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $i" 77384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project i="" 77394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 77404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 77414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 77424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$i" ; then 77434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=`eval "\\$ECHO \"$libname_spec\""` 77444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 77454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $deplib_matches; shift 77464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplib_match=$1 77474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7748ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $i" 77494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 77504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 7751ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 77524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7753ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** I have the capability to make that library automatically link in when" 7754ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** you link to this library. But I can only do this if you have a" 7755ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** shared version of the library, which you do not appear to have" 7756ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** because a test_compile did reveal that the linker did not use this one" 7757ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** as a dynamic dependency that programs can get resolved with at runtime." 77584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 77594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 77604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 77614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 7762ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 77634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 7764ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** make it link in! You will probably need to install it or some" 7765ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** library that it depends on before this library will be fully" 7766ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** functional. Installing it before continuing would be even better." 77674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 77684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 77694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 7770ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $i" 77714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 77724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 77734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 77744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 77754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 77764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file_magic*) 77774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $deplibs_check_method; shift 77784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 77794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for a_deplib in $deplibs; do 77804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $a_deplib in 77814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 77824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname -l '' "$a_deplib" 77834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 77844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 77854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps " in 77864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $a_deplib "*) 7787ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $a_deplib" 77884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project a_deplib="" 77894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 77904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 77914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 77924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$a_deplib" ; then 77934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=`eval "\\$ECHO \"$libname_spec\""` 7794ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$file_magic_glob"; then 7795ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 7796ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 7797ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libnameglob=$libname 7798ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 7799ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 78004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7801ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$want_nocaseglob" = yes; then 7802ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik shopt -s nocaseglob 7803ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7804ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $nocaseglob 7805ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 7806ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7807ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 78084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for potent_lib in $potential_libs; do 78094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Follow soft links. 78104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ls -lLd "$potent_lib" 2>/dev/null | 78114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $GREP " -> " >/dev/null; then 78124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project continue 78134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The statement above tries to avoid entering an 78154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # endless loop below, in case of cyclic links. 78164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We might still enter an endless loop, since a link 78174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # loop can be closed while we follow links, 78184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # but so what? 78194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project potlib="$potent_lib" 78204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while test -h "$potlib" 2>/dev/null; do 78214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 78224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $potliblink in 78234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 7824ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 78254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 78264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 78274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 78284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $SED -e 10q | 78294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $EGREP "$file_magic_regex" > /dev/null; then 7830ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $a_deplib" 78314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project a_deplib="" 78324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 2 78334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 78354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 78364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$a_deplib" ; then 78384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 7839ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 78404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7841ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** I have the capability to make that library automatically link in when" 7842ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** you link to this library. But I can only do this if you have a" 7843ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** shared version of the library, which you do not appear to have" 7844ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** because I did check the linker path looking for a file starting" 78454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$potlib" ; then 78464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 78474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 78484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** with $libname and none of the candidates passed a file format test" 78494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** using a file magic. Last file checked: $potlib" 78504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 78534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 78544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add a -L argument. 7855ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $a_deplib" 78564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 78574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 78584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # Gone through all deplibs. 78594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 78604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project match_pattern*) 78614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $deplibs_check_method; shift 78624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 78634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for a_deplib in $deplibs; do 78644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $a_deplib in 78654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -l*) 78664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname -l '' "$a_deplib" 78674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$func_stripname_result 78684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 78694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $predeps $postdeps " in 78704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $a_deplib "*) 7871ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $a_deplib" 78724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project a_deplib="" 78734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 78744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 78754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$a_deplib" ; then 78774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=`eval "\\$ECHO \"$libname_spec\""` 78784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 78794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 78804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for potent_lib in $potential_libs; do 78814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project potlib="$potent_lib" # see symlink-check above in file_magic test 7882ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 78834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $EGREP "$match_pattern_regex" > /dev/null; then 7884ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $a_deplib" 78854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project a_deplib="" 78864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 2 78874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 78894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 78904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 78914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$a_deplib" ; then 78924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 7893ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 78944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7895ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** I have the capability to make that library automatically link in when" 7896ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** you link to this library. But I can only do this if you have a" 7897ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** shared version of the library, which you do not appear to have" 7898ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** because I did check the linker path looking for a file starting" 78994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$potlib" ; then 79004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 79014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 79024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** with $libname and none of the candidates passed a file format test" 79034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** using a regex pattern. Last file checked: $potlib" 79044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 79054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 79064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 79074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 79084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add a -L argument. 7909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdeplibs " $a_deplib" 79104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 79114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 79124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done # Gone through all deplibs. 79134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 79144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project none | unknown | *) 79154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdeplibs="" 7916ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 79174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 79184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for i in $predeps $postdeps ; do 79194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # can't use Xsed below, because $i might contain '/' 7920ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 79214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 79224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7923ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $tmp_deplibs in 7924ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *[!\ \ ]*) 7925ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 79264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$deplibs_check_method" = "Xnone"; then 7927ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** Warning: inter-library dependencies are not supported in this platform." 79284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 7929ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** Warning: inter-library dependencies are not known to be supported." 79304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7931ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** All declared inter-library dependencies are being dropped." 79324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project droppeddeps=yes 7933ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 7934ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 79354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 79364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 79374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project versuffix=$versuffix_save 79384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project major=$major_save 79394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project release=$release_save 79404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libname=$libname_save 79414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name=$name_save 79424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 79434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 79444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-rhapsody* | *-*-darwin1.[012]) 79454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # On Rhapsody replace the C library with the System framework 7946ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 79474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 79484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 79494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 79504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$droppeddeps" = yes; then 79514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$module" = yes; then 7952ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 7953ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** Warning: libtool could not satisfy all declared inter-library" 79544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 7955ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** a static module, that should work as long as the dlopening" 7956ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** application is linked with the -dlopen flag." 79574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$global_symbol_pipe"; then 7958ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 7959ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** However, this would only work if libtool was able to extract symbol" 7960ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 7961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** not find such a program. So, this module is probably useless." 7962ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** \`nm' from GNU binutils and a full rebuild may help." 79634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 79644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = no; then 79654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs="$output_objdir/$libname.$libext" 79664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=module 79674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 79684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 79694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 79704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 79714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 7972ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** The inter-library dependencies that have been dropped here will be" 7973ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** automatically added whenever a program is linked with this library" 7974ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** or is declared to -dlopen it." 79754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 79764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$allow_undefined" = no; then 7977ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 7978ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** Since this library must not contain undefined symbols," 7979ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** because either the platform does not support them or" 7980ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** it was explicitly requested with -no-undefined," 7981ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "*** libtool will only create a static version of it." 79824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_old_libs" = no; then 79834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldlibs="$output_objdir/$libname.$libext" 79844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=module 79854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_old_libs=yes 79864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 79874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 79884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 79894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 79904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 7991893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 79924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Done checking deplibs! 79934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs=$newdeplibs 79944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 79954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Time to change all our "foo.ltframework" stuff back to "-framework foo" 79964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 79974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-darwin*) 7998ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7999ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8000ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8001893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 80024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 8003893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 80044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # move library search paths that coincide with paths to not yet 80054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # installed libraries to the beginning of the library search list 80064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_libs= 80074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for path in $notinst_path; do 80084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_libs " in 80094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -L$path/$objdir "*) ;; 8010893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 80114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $deplibs " in 80124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -L$path/$objdir "*) 8013ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append new_libs " -L$path/$objdir" ;; 80144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 8015893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8016893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 80174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 80184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $deplibs; do 80194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 80204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) 80214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_libs " in 80224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 8023ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append new_libs " $deplib" ;; 80244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 80254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 8026ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append new_libs " $deplib" ;; 80274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 80284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 80294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$new_libs" 8030893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 80314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # All the library-specific variables (install_libdir is set above). 80324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project library_names= 80334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_library= 80344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlname= 8035893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 80364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Test again, we may have decided not to build it any more 80374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = yes; then 8038ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Remove ${wl} instances when linking with ld. 8039ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # FIXME: should test the right _cmds variable. 8040ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $archive_cmds in 8041ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *\$LD\ *) wl= ;; 8042ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 80434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_into_libs" = yes; then 80444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Hardcode the library paths 80454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs= 80464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dep_rpath= 80474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath="$finalize_rpath" 8048ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 80494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $rpath; do 80504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_flag_spec"; then 80514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator"; then 8052ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_replace_sysroot "$libdir" 8053ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libdir=$func_replace_sysroot_result 80544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$hardcode_libdirs"; then 80554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs="$libdir" 80564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 80574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Just accumulate the unique libdirs. 80584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 80594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 80604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 80614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 8062ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 80634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 80644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 80654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 80664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 80674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval flag=\"$hardcode_libdir_flag_spec\" 8068ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append dep_rpath " $flag" 80694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 80704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$runpath_var"; then 80714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$perm_rpath " in 80724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 8073ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append perm_rpath " $libdir" ;; 80744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 80754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 80764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 80774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Substitute the hardcoded libdirs into the rpath. 80784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator" && 80794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$hardcode_libdirs"; then 80804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir="$hardcode_libdirs" 8081ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 80824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 80834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$runpath_var" && test -n "$perm_rpath"; then 80844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We should set the runpath_var. 80854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 80864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dir in $perm_rpath; do 8087ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rpath "$dir:" 80884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 80894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 80904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 80914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 8092893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8093893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 80944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shlibpath="$finalize_shlibpath" 8095ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 80964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$shlibpath"; then 80974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 80984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8099893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Get the real and link names of the library. 81014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval shared_ext=\"$shrext_cmds\" 81024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval library_names=\"$library_names_spec\" 81034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set dummy $library_names 81044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 81054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project realname="$1" 81064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 8107893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$soname_spec"; then 81094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval soname=\"$soname_spec\" 8110893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 81114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project soname="$realname" 81124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 81134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$dlname"; then 81144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlname=$soname 81154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8116893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lib="$output_objdir/$realname" 81184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project linknames= 81194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for link 81204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 8121ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append linknames " $link" 81224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 8123893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Use standard objects if they are pic 8125ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 81264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 81274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 81284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project delfiles= 81294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$include_expsyms"; then 81304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 81314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols="$output_objdir/$libname.uexp" 8132ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append delfiles " $export_symbols" 81334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 81344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 81354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project orig_export_symbols= 81364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host_os in 81375f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott cygwin* | mingw* | cegcc*) 81384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 81394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # exporting using user supplied symfile 81404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 81414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # and it's NOT already a .def file. Must figure out 81424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # which of the given symbols are data symbols and tag 81434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # them as such. So, trigger use of export_symbols_cmds. 81444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # export_symbols gets reassigned inside the "prepare 81454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the list of exported symbols" if statement, so the 81464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # include_expsyms logic still works. 81474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project orig_export_symbols="$export_symbols" 81484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols= 81494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project always_export_symbols=yes 8150893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8151893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 81524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 81534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 8154893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 81554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Prepare the list of exported symbols 81564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$export_symbols"; then 81574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 81584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "generating symbol list for \`$libname.la'" 81594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols="$output_objdir/$libname.exp" 81604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $export_symbols 81614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$export_symbols_cmds 81624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS='~' 8163ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for cmd1 in $cmds; do 81644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 8165ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Take the normal branch if the nm_file_list_spec branch 8166ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # doesn't work or if tool conversion is not needed. 8167ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case $nm_file_list_spec~$to_tool_file_cmd in 8168ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 8169ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik try_normal_branch=yes 8170ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval cmd=\"$cmd1\" 8171ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_len " $cmd" 8172ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik len=$func_len_result 8173ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 8174ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) 8175ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik try_normal_branch=no 8176ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 8177ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik esac 8178ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$try_normal_branch" = yes \ 8179ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik && { test "$len" -lt "$max_cmd_len" \ 8180ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik || test "$max_cmd_len" -le -1; } 8181ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik then 8182ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_show_eval "$cmd" 'exit $?' 8183ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik skipped_export=false 8184ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik elif test -n "$nm_file_list_spec"; then 8185ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_basename "$output" 8186ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik output_la=$func_basename_result 8187ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik save_libobjs=$libobjs 8188ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik save_output=$output 8189ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik output=${output_objdir}/${output_la}.nm 8190ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$output" 8191ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libobjs=$nm_file_list_spec$func_to_tool_file_result 8192ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append delfiles " $output" 8193ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_verbose "creating $NM input file list: $output" 8194ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for obj in $save_libobjs; do 8195ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$obj" 8196ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "$func_to_tool_file_result" 8197ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done > "$output" 8198ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval cmd=\"$cmd1\" 81994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$cmd" 'exit $?' 8200ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik output=$save_output 8201ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik libobjs=$save_libobjs 82024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project skipped_export=false 82034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 82044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The command line is too long to execute in one step. 82054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "using reloadable object file for export list..." 82064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project skipped_export=: 82074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Break out early, otherwise skipped_export may be 82084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # set to false by a later but shorter cmd. 82094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 82104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 82114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 82124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 82134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 82144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 82154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 82164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 82174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8218893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8219893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 82204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$include_expsyms"; then 82214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_export_symbols="$export_symbols" 82224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8223ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 82244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8225893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 82264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 82274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The given exports_symbols file has to be filtered, so filter it. 82284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 82294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FIXME: $output_objdir/$libname.filter potentially contains lots of 82304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # 's' commands which not all seds can handle. GNU sed should be fine 82314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # though. Also, the filter scales superlinearly with the number of 82324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # global variables. join(1) would be nice here, but unfortunately 82334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # isn't a blessed tool. 82344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8235ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append delfiles " $export_symbols $output_objdir/$libname.filter" 82364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols=$output_objdir/$libname.def 82374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 82384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8239893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 82404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_deplibs= 82414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for test_deplib in $deplibs; do 82424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $convenience " in 82434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $test_deplib "*) ;; 82444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 8245ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append tmp_deplibs " $test_deplib" 82464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 82474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 82484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 82494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project deplibs="$tmp_deplibs" 82504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 82514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$convenience"; then 82524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$whole_archive_flag_spec" && 82534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$compiler_needs_object" = yes && 82544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libobjs"; then 82554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # extract the archives, so we have objects to list. 82564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # TODO: could optimize this to just extract one archive. 82574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project whole_archive_flag_spec= 82584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 82594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$whole_archive_flag_spec"; then 82604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_libobjs=$libobjs 82614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 82624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 8263893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 82644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${outputname}x" 8265ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append generated " $gentop" 82664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 82674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives $gentop $convenience 8268ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append libobjs " $func_extract_archives_result" 82694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 8270893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8271893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8272893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 82734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 82744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval flag=\"$thread_safe_flag_spec\" 8275ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append linker_flags " $flag" 82764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8277893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 82784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make a backup of the uninstalled library when relinking 8279ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$opt_mode" = relink; then 82804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 82814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8282893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 82834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each of the archive commands. 82844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$module" = yes && test -n "$module_cmds" ; then 82854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 82864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$module_expsym_cmds\" 82874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$module_expsym_cmds 82884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 82894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$module_cmds\" 82904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$module_cmds 82914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8292893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 82934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 82944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$archive_expsym_cmds\" 82954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$archive_expsym_cmds 82964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 82974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$archive_cmds\" 82984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$archive_cmds 82994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8300893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8301893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 83024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$skipped_export" != "X:" && 83034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $test_cmds" && 83044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_len_result && 83054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 83064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 83074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 83084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The command line is too long to link in one step, link piecewise 83094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # or, if using GNU ld and skipped_export is not :, use a linker 83104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # script. 8311893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 83124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Save the value of $output and $libobjs because we want to 83134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # use them later. If we have whole_archive_flag_spec, we 83144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # want to use save_libobjs as it was before 83154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # whole_archive_flag_spec was expanded, because we can't 83164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # assume the linker understands whole_archive_flag_spec. 83174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This may have to be revisited, in case too many 83184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # convenience libraries get linked in and end up exceeding 83194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the spec. 83204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 83214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_libobjs=$libobjs 83224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 83234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_output=$output 8324ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_basename "$output" 8325ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik output_la=$func_basename_result 83264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 83274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Clear the reloadable object creation command queue and 83284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # initialize k to one. 83294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test_cmds= 83304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_cmds= 83314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objlist= 83324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project last_robj= 83334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project k=1 83344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 83354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 83364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=${output_objdir}/${output_la}.lnkscript 83374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating GNU ld script: $output" 8338ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo 'INPUT (' > $output 83394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj in $save_libobjs 83404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 8341ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$obj" 8342ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "$func_to_tool_file_result" >> $output 83434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 8344ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo ')' >> $output 8345ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append delfiles " $output" 8346ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$output" 8347ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik output=$func_to_tool_file_result 83484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 83494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=${output_objdir}/${output_la}.lnk 83504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating linker input file list: $output" 83514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : > $output 83524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project set x $save_libobjs 83534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 83544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project firstobj= 83554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$compiler_needs_object" = yes; then 83564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project firstobj="$1 " 83574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project shift 8358893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 83594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj 83604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 8361ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$obj" 8362ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "$func_to_tool_file_result" >> $output 8363893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 8364ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append delfiles " $output" 8365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$output" 8366ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 83674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 83684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$save_libobjs"; then 83694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating reloadable object files..." 83704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$output_objdir/$output_la-${k}.$objext 83714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$reload_cmds\" 83724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $test_cmds" 83734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len0=$func_len_result 83744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$len0 83754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 83764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Loop over the list of objects to be linked. 83774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj in $save_libobjs 83784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 83794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $obj" 83804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $len + $func_len_result 83814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_arith_result 83824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$objlist" = X || 83834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$len" -lt "$max_cmd_len"; then 83844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append objlist " $obj" 83854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 83864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The command $test_cmds is almost too long, add a 83874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # command to the queue. 83884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$k" -eq 1 ; then 83894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The first file doesn't have a previous command to add. 8390ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik reload_objs=$objlist 8391ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval concat_cmds=\"$reload_cmds\" 83924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 83934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # All subsequent reloadable object files will link in 83944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the last one created. 8395ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik reload_objs="$objlist $last_robj" 8396ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 83974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 83984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project last_robj=$output_objdir/$output_la-${k}.$objext 83994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $k + 1 84004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project k=$func_arith_result 84014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$output_objdir/$output_la-${k}.$objext 8402ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik objlist=" $obj" 84034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $last_robj" 84044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $len0 + $func_len_result 84054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_arith_result 84064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 84074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 84084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Handle the remaining objects by creating one last 84094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # reloadable object file. All subsequent reloadable object 84104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # files will link in the last one created. 84114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8412ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik reload_objs="$objlist $last_robj" 8413ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 84144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$last_robj"; then 84154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 8416893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8417ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append delfiles " $output" 84184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 84194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 84204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output= 84214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 84224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 84234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ${skipped_export-false}; then 84244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "generating symbol list for \`$libname.la'" 84254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols="$output_objdir/$libname.exp" 84264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $export_symbols 84274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs=$output 84284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Append the command to create the export file. 84294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 84304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 84314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$last_robj"; then 84324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 8433893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 84344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 84354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 84364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$save_libobjs" && 84374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating a temporary reloadable object file: $output" 84384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 84394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Loop through the commands generated above and execute them. 84404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS='~' 84414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for cmd in $concat_cmds; do 84424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 84434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_silent || { 84444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand "$cmd" 84454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "func_echo $func_quote_for_expand_result" 84464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 84474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval "$cmd" || { 84484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_exit=$? 84494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 84504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restore the uninstalled library and exit 8451ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$opt_mode" = relink; then 84524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ( cd "$output_objdir" && \ 84534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM "${realname}T" && \ 84544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV "${realname}U" "$realname" ) 84554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 84564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 84574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $lt_exit 84584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 8459893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 84604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 84614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 84624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols_regex" && ${skipped_export-false}; then 84634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 84644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 84654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8466893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8467893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 84684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if ${skipped_export-false}; then 84694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$include_expsyms"; then 84704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tmp_export_symbols="$export_symbols" 84714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8472ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 84734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8474893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 84754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$orig_export_symbols"; then 84764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # The given exports_symbols file has to be filtered, so filter it. 84774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 84784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # FIXME: $output_objdir/$libname.filter potentially contains lots of 84794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # 's' commands which not all seds can handle. GNU sed should be fine 84804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # though. Also, the filter scales superlinearly with the number of 84814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # global variables. join(1) would be nice here, but unfortunately 84824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # isn't a blessed tool. 84834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8484ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append delfiles " $export_symbols $output_objdir/$libname.filter" 84854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project export_symbols=$output_objdir/$libname.def 84864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 84874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 84884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8489893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 84904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobjs=$output 84914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restore the value of output. 84924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$save_output 8493893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 84944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 84954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 84964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 84974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 84984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Expand the library linking commands again to reset the 84994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # value of $libobjs for piecewise linking. 8500893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each of the archive commands. 85024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$module" = yes && test -n "$module_cmds" ; then 85034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 85044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$module_expsym_cmds 85054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 85064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$module_cmds 85074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 85084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 85094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 85104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$archive_expsym_cmds 85114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 85124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$archive_cmds 85134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 85144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 85154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8516893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$delfiles"; then 85184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Append the command to remove temporary files to $cmds. 85194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmds=\"\$cmds~\$RM $delfiles\" 85204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8521893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add any objects from preloaded convenience libraries 85234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlprefiles"; then 85244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${outputname}x" 8525ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append generated " $gentop" 8526893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives $gentop $dlprefiles 8528ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append libobjs " $func_extract_archives_result" 85294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "X$libobjs" = "X " && libobjs= 85304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8531893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_ifs="$IFS"; IFS='~' 85334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for cmd in $cmds; do 85344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 85354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmd=\"$cmd\" 85364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_silent || { 85374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_expand "$cmd" 85384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval "func_echo $func_quote_for_expand_result" 85394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 85404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval "$cmd" || { 85414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project lt_exit=$? 85424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 85434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restore the uninstalled library and exit 8544ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$opt_mode" = relink; then 85454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ( cd "$output_objdir" && \ 85464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM "${realname}T" && \ 85474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $MV "${realname}U" "$realname" ) 85484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 85494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 85504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $lt_exit 85514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 8552893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 85534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project IFS="$save_ifs" 8554893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Restore the uninstalled library and exit 8556ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$opt_mode" = relink; then 85574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 8558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$convenience"; then 85604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$whole_archive_flag_spec"; then 85614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '${RM}r "$gentop"' 85624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 85634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8564893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 85664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 85674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 85684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Create links to the real library. 85694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for linkname in $linknames; do 85704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$realname" != "$linkname"; then 85714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 85724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 85734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 8574893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If -module or -export-dynamic was specified, set the dlname. 85764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$module" = yes || test "$export_dynamic" = yes; then 85774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # On all known operating systems, these are identical. 85784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlname="$soname" 85794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 85804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8581893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8582893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project obj) 85844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 85854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-dlopen' is ignored for objects" 8586893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8587893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 85884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $deplibs" in 85894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *\ -l* | *\ -L*) 85904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-l' and \`-L' are ignored for objects" ;; 85914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 85924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 85934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$rpath" && \ 85944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-rpath' is ignored for objects" 85954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 85964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$xrpath" && \ 85974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-R' is ignored for objects" 85984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 85994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$vinfo" && \ 86004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-version-info' is ignored for objects" 86014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 86024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$release" && \ 86034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-release' is ignored for objects" 86044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 86054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $output in 86064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.lo) 86074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$objs$old_deplibs" && \ 86084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "cannot build library object \`$output' from non-libtool objects" 86094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 86104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj=$output 86114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_lo2o "$libobj" 86124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project obj=$func_lo2o_result 8613893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8614893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 86154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libobj= 86164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project obj="$output" 8617893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8618893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 8619893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 86204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Delete the old objects. 86214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $obj $libobj 8622893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 86234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Objects from convenience libraries. This assumes 86244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # single-version convenience libraries. Whenever we create 86254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # different ones for PIC/non-PIC, this we'll have to duplicate 86264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the extraction. 86274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project reload_conv_objs= 86284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop= 86294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # reload_cmds runs $LD directly, so let us get rid of 86304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # -Wl from whole_archive_flag_spec and hope we can get by with 86314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # turning comma into space.. 86324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wl= 8633893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 86344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$convenience"; then 86354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$whole_archive_flag_spec"; then 86364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 8637ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 86384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 86394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${obj}x" 8640ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append generated " $gentop" 8641893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 86424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives $gentop $convenience 86434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project reload_conv_objs="$reload_objs $func_extract_archives_result" 86444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8645893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8646893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8647ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # If we're not building shared, we need to use non_pic_objs 8648ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 8649ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 86504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Create the old-style object. 8651ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 8652893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 86534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output="$obj" 86544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$reload_cmds" 'exit $?' 8655893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 86564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Exit if we aren't doing a library object file. 86574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$libobj"; then 86584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$gentop"; then 86594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '${RM}r "$gentop"' 86604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 86614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 86624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 8663893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 86644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 86654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" != yes; then 86664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$gentop"; then 86674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '${RM}r "$gentop"' 86684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 86694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 86704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Create an invalid libtool object if no PIC, so that we don't 86714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # accidentally link it into a program. 86724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # $show "echo timestamp > $libobj" 86734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 86744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 86754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 86764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 86774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$pic_flag" || test "$pic_mode" != default; then 86784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only do commands if we really have different PIC objects. 86794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project reload_objs="$libobjs $reload_conv_objs" 86804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output="$libobj" 86814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$reload_cmds" 'exit $?' 86824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 86834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 86844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$gentop"; then 86854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '${RM}r "$gentop"' 86864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 86874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 86884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 8689893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 8690893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 86914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project prog) 86924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 86934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *cygwin*) func_stripname '' '.exe' "$output" 86944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$func_stripname_result.exe;; 86954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 86964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$vinfo" && \ 86974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-version-info' is ignored for programs" 8698893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 86994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$release" && \ 87004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`-release' is ignored for programs" 8701893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 87024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$preload" = yes \ 87034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && test "$dlopen_support" = unknown \ 87044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && test "$dlopen_self" = unknown \ 87054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project && test "$dlopen_self_static" = unknown && \ 87064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 87074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 87084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 87094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-rhapsody* | *-*-darwin1.[012]) 87104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # On Rhapsody replace the C library is the System framework 8711ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 8712ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 8713893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 87144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 8715893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 87164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 87174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *-*-darwin*) 87184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Don't allow lazy linking, it breaks C++ global constructors 87194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # But is supposedly fixed on 10.4 or later (yay!). 87204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$tagname" = CXX ; then 87214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 87224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 10.[0123]) 8723ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compile_command " ${wl}-bind_at_load" 8724ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append finalize_command " ${wl}-bind_at_load" 87254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 87264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 8727893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 87284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8729ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8730ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 87314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 87324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 8733893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8734893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 87354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # move library search paths that coincide with paths to not yet 87364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # installed libraries to the beginning of the library search list 87374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project new_libs= 87384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for path in $notinst_path; do 87394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_libs " in 87404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -L$path/$objdir "*) ;; 87414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 87424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $compile_deplibs " in 87434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" -L$path/$objdir "*) 8744ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append new_libs " -L$path/$objdir" ;; 8745893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 87464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 87474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 87484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 87494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $compile_deplibs; do 87504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 87514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project -L*) 87524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $new_libs " in 87534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $deplib "*) ;; 8754ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append new_libs " $deplib" ;; 8755893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 87564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 8757ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append new_libs " $deplib" ;; 87584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 87594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 87604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_deplibs="$new_libs" 8761893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8762893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8763ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append compile_command " $compile_deplibs" 8764ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append finalize_command " $finalize_deplibs" 8765893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 87664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$rpath$xrpath"; then 87674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # If the user specified any rpath flags, then add them. 87684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $rpath $xrpath; do 87694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # This is the magic to use -rpath. 87704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$finalize_rpath " in 87714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 8772ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append finalize_rpath " $libdir" ;; 87734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 87744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 87754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8776893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 87774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now hardcode the library paths 87784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 87794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs= 87804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $compile_rpath $finalize_rpath; do 87814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_flag_spec"; then 87824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator"; then 87834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$hardcode_libdirs"; then 87844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs="$libdir" 87854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 87864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Just accumulate the unique libdirs. 87874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 87884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 87894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 87904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 8791ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 87924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 87934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 87944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8795893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 87964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval flag=\"$hardcode_libdir_flag_spec\" 8797ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rpath " $flag" 8798893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 87994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$runpath_var"; then 88004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$perm_rpath " in 88014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 8802ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append perm_rpath " $libdir" ;; 88034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 88044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 88054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 88065f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 88074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 88084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case :$dllsearchpath: in 88094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$libdir:"*) ;; 88105f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ::) dllsearchpath=$libdir;; 8811ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append dllsearchpath ":$libdir";; 88124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 88134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case :$dllsearchpath: in 88144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *":$testbindir:"*) ;; 88155f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott ::) dllsearchpath=$testbindir;; 8816ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append dllsearchpath ":$testbindir";; 88174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 88184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 88194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 88204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 88214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Substitute the hardcoded libdirs into the rpath. 88224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator" && 88234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$hardcode_libdirs"; then 88244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir="$hardcode_libdirs" 88254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval rpath=\" $hardcode_libdir_flag_spec\" 88264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 88274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_rpath="$rpath" 8828893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 88294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 88304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs= 88314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for libdir in $finalize_rpath; do 88324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_flag_spec"; then 88334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator"; then 88344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$hardcode_libdirs"; then 88354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project hardcode_libdirs="$libdir" 88364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 88374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Just accumulate the unique libdirs. 88384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 88394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 88404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 88414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 8842ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 88434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 88444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 88454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8846893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 88474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval flag=\"$hardcode_libdir_flag_spec\" 8848ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rpath " $flag" 8849893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 88504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif test -n "$runpath_var"; then 88514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case "$finalize_perm_rpath " in 88524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *" $libdir "*) ;; 8853ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append finalize_perm_rpath " $libdir" ;; 88544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 8855893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 88564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 88574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Substitute the hardcoded libdirs into the rpath. 88584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$hardcode_libdir_separator" && 88594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$hardcode_libdirs"; then 88604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project libdir="$hardcode_libdirs" 88614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval rpath=\" $hardcode_libdir_flag_spec\" 88624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 88634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_rpath="$rpath" 8864893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 88654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$libobjs" && test "$build_old_libs" = yes; then 88664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Transform all the library objects into standard objects. 8867ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8868ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 88694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8870893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 88714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8872893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 88734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # template prelinking step 88744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$prelink_cmds"; then 88754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$prelink_cmds" 'exit $?' 88764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8877893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 88784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrappers_required=yes 88794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 8880ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *cegcc* | *mingw32ce*) 8881ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 8882ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik wrappers_required=no 8883ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 88844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *cygwin* | *mingw* ) 88854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" != yes; then 88864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrappers_required=no 88874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 88884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 88894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) 88904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 88914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project wrappers_required=no 88924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 88934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 88944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 88954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$wrappers_required" = no; then 88964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Replace the output file specification. 8897ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 88984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command="$compile_command$compile_rpath" 8899893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 89004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We have no uninstalled library dependencies, so finalize right now. 89014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit_status=0 89024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$link_command" 'exit_status=$?' 8903893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8904ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$postlink_cmds"; then 8905ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$output" 8906ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8907ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_execute_cmds "$postlink_cmds" 'exit $?' 8908ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 8909ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 89104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Delete the generated files. 89114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -f "$output_objdir/${outputname}S.${objext}"; then 89124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 8913893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 8914893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 89154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $exit_status 89164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8917893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 89184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$compile_shlibpath$finalize_shlibpath"; then 89194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 89204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 89214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$finalize_shlibpath"; then 89224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 89234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8924893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 89254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_var= 89264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_var= 89274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$runpath_var"; then 89284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$perm_rpath"; then 89294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We should set the runpath_var. 89304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 89314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dir in $perm_rpath; do 8932ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rpath "$dir:" 89334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 89344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8935893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 89364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$finalize_perm_rpath"; then 89374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We should set the runpath_var. 89384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project rpath= 89394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for dir in $finalize_perm_rpath; do 8940ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rpath "$dir:" 89414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 89424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8943893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 89444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8945893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 89464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$no_install" = yes; then 89474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # We don't need to create a wrapper script. 89484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command="$compile_var$compile_command$compile_rpath" 89494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Replace the output file specification. 8950ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 89514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Delete the old output file. 89524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $output 89534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Link the executable and exit 89544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$link_command" 'exit $?' 8955ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 8956ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$postlink_cmds"; then 8957ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$output" 8958ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8959ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_execute_cmds "$postlink_cmds" 'exit $?' 8960ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 8961ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 8962893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_SUCCESS 89634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8964893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 89654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_action" = relink; then 89664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Fast installation is not supported 89674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command="$compile_var$compile_command$compile_rpath" 89684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$finalize_var$finalize_command$finalize_rpath" 89694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 89704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "this platform does not like uninstalled shared libraries" 89714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_warning "\`$output' will be relinked during installation" 89724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 89734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$fast_install" != no; then 89744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command="$finalize_var$compile_command$finalize_rpath" 89754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$fast_install" = yes; then 8976ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 89774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 89784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # fast_install is set to needless 89794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 89804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8981893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 89824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project link_command="$compile_var$compile_command$compile_rpath" 89834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$finalize_var$finalize_command$finalize_rpath" 8984893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 89854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 8986893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 89874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Replace the output file specification. 8988ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8989893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 89904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Delete the old output files. 89914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8992893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 89934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$link_command" 'exit $?' 8994893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 8995ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test -n "$postlink_cmds"; then 8996ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$output_objdir/$outputname" 8997ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8998ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_execute_cmds "$postlink_cmds" 'exit $?' 8999ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 9000ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik 90014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now create the wrapper script. 90024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating $output" 9003893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 90044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Quote the relink command for shipping. 90054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$relink_command"; then 90064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Preserve any variables that may affect compiler behavior 90074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for var in $variables_saved_for_relink; do 90084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval test -z \"\${$var+set}\"; then 90094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 90104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif eval var_value=\$$var; test -z "$var_value"; then 90114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$var=; export $var; $relink_command" 9012893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 90134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$var_value" 90144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9015893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 90164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 90174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="(cd `pwd`; $relink_command)" 9018ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 90194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 9020893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 90214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only actually do things if not in dry run mode. 90224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 90234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # win32 will think the script is a binary if it has 90244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # a .exe suffix, so we strip it off here. 90254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $output in 90264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.exe) func_stripname '' '.exe' "$output" 90274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output=$func_stripname_result ;; 90284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 90294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # test for cygwin because mv fails w/o .exe extensions 90304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 90314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *cygwin*) 90324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exeext=.exe 90334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$outputname" 90344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project outputname=$func_stripname_result ;; 90354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) exeext= ;; 90364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 90374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host in 90384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *cygwin* | *mingw* ) 90394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname_and_basename "$output" "" "." 90404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output_name=$func_basename_result 90414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output_path=$func_dirname_result 90424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cwrappersource="$output_path/$objdir/lt-$output_name.c" 90434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cwrapper="$output_path/$output_name.exe" 90444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM $cwrappersource $cwrapper 90454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 90464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 90474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_emit_cwrapperexe_src > $cwrappersource 90484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 90495f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # The wrapper executable is built using the $host compiler, 90505f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # because it contains $host paths and files. If cross- 90515f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # compiling, it, like the target executable, must be 90525f6bd84e375226bf228fc8ac90318957ec9e1e7fPatrick Scott # executed on the $host or under an emulation environment. 90534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 90544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 90554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $STRIP $cwrapper 90564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 9057893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 90584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now, create the wrapper script for func_source use: 90594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_scriptname $cwrapper 90604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM $func_ltwrapper_scriptname_result 90614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 90624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 90634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # note: this script will not be executed, so do not chmod. 90644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "x$build" = "x$host" ; then 90654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 90664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 90674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_emit_wrapper no > $func_ltwrapper_scriptname_result 90684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 90694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 90704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 90714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project * ) 90724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM $output 90734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 9074893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 90754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_emit_wrapper no > $output 90764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project chmod +x $output 90774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 90784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 90794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 90804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 90814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 90824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 9083893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 90844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # See if we need to build an old-fashioned archive. 90854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for oldlib in $oldlibs; do 90864215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 90874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = convenience; then 90884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$libobjs_save $symfileobj" 90894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project addlibs="$convenience" 90904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 90914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 90924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$build_libtool_libs" = module; then 90934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$libobjs_save" 90944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project build_libtool_libs=no 90954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 90964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs="$old_deplibs $non_pic_objects" 90974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$preload" = yes && test -f "$symfileobj"; then 9098ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append oldobjs " $symfileobj" 90994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 91004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 91014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project addlibs="$old_convenience" 9102893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9103893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 91044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$addlibs"; then 91054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${outputname}x" 9106ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append generated " $gentop" 9107893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 91084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives $gentop $addlibs 9109ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append oldobjs " $func_extract_archives_result" 91104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 9111893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 91124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do each command in the archive commands. 91134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 91144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$old_archive_from_new_cmds 91154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 9116893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 91174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Add any objects from preloaded convenience libraries 91184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$dlprefiles"; then 91194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${outputname}x" 9120ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append generated " $gentop" 9121893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 91224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_extract_archives $gentop $dlprefiles 9123ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append oldobjs " $func_extract_archives_result" 91244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 9125893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 91264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # POSIX demands no paths to be encoded in archives. We have 91274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # to avoid creating archives with duplicate basenames if we 91284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # might have to extract them afterwards, e.g., when creating a 91294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # static archive out of a convenience library, or when linking 91304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the entirety of a libtool archive into another (currently 91314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # not supported by libtool). 91324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if (for obj in $oldobjs 91334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 91344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$obj" 91354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO "$func_basename_result" 91364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done | sort | sort -uc >/dev/null 2>&1); then 91374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 91384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 9139ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik echo "copying selected object files to avoid basename conflicts..." 91404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project gentop="$output_objdir/${outputname}x" 9141ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append generated " $gentop" 91424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mkdir_p "$gentop" 91434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_oldobjs=$oldobjs 91444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs= 91454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project counter=1 91464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj in $save_oldobjs 91474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 91484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$obj" 91494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objbase="$func_basename_result" 91504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $oldobjs " in 91514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project " ") oldobjs=$obj ;; 91524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\ /]"$objbase "*) 91534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project while :; do 91544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Make sure we don't pick an alternate name that also 91554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # overlaps. 91564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newobj=lt$counter-$objbase 91574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $counter + 1 91584215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project counter=$func_arith_result 91594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case " $oldobjs " in 91604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *[\ /]"$newobj "*) ;; 91614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) if test ! -f "$gentop/$newobj"; then break; fi ;; 91624215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 91634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 91644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 9165ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append oldobjs " $gentop/$newobj" 91664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 9167ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append oldobjs " $obj" ;; 91684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 9169893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 9170893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9171ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 9172ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tool_oldlib=$func_to_tool_file_result 91734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmds=\"$old_archive_cmds\" 9174893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 91754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $cmds" 91764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_len_result 91774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 91784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project cmds=$old_archive_cmds 9179ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik elif test -n "$archiver_list_spec"; then 9180ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_verbose "using command file archive linking..." 9181ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik for obj in $oldobjs 9182ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik do 9183ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$obj" 9184ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik $ECHO "$func_to_tool_file_result" 9185ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik done > $output_objdir/$libname.libcmd 9186ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_to_tool_file "$output_objdir/$libname.libcmd" 9187ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik oldobjs=" $archiver_list_spec$func_to_tool_file_result" 9188ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik cmds=$old_archive_cmds 91894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 91904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the command line is too long to link in one step, link in parts 91914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "using piecewise archive linking..." 91924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_RANLIB=$RANLIB 91934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project RANLIB=: 91944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objlist= 91954215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project concat_cmds= 91964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project save_oldobjs=$oldobjs 91974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs= 91984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Is there a better way of finding the last object in the list? 91994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj in $save_oldobjs 92004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 92014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project last_oldobj=$obj 92024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 92034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval test_cmds=\"$old_archive_cmds\" 92044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $test_cmds" 92054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len0=$func_len_result 92064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$len0 92074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for obj in $save_oldobjs 92084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project do 92094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_len " $obj" 92104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_arith $len + $func_len_result 92114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$func_arith_result 92124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_append objlist " $obj" 92134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$len" -lt "$max_cmd_len"; then 92144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project : 92154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 92164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the above command should be used before it gets too long 92174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs=$objlist 92184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$obj" = "$last_oldobj" ; then 92194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project RANLIB=$save_RANLIB 92204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 92214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 92224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 92234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project objlist= 92244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project len=$len0 92254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 92264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 92274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project RANLIB=$save_RANLIB 92284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project oldobjs=$objlist 92294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$oldobjs" = "X" ; then 92304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmds=\"\$concat_cmds\" 92314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 92324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 92334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 92344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 92354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 92364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$cmds" 'exit $?' 9237893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 9238893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 92394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -n "$generated" && \ 92404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "${RM}r$generated" 9241893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 92424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Now create the libtool archive. 92434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $output in 92444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 92454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project old_library= 92464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$build_old_libs" = yes && old_library="$libname.$libext" 92474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_verbose "creating $output" 9248893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 92494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Preserve any variables that may affect compiler behavior 92504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for var in $variables_saved_for_relink; do 92514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if eval test -z \"\${$var+set}\"; then 92524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 92534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project elif eval var_value=\$$var; test -z "$var_value"; then 92544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$var=; export $var; $relink_command" 9255893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 92564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_quote_for_eval "$var_value" 92574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9258893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 92594215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 92604215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Quote the link command for shipping. 92614215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 9262ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 92634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$hardcode_automatic" = yes ; then 92644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 92654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 9266893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 92674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only create the output if not a dry run. 92684215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_dry_run || { 92694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for installed in no yes; do 92704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$installed" = yes; then 92714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -z "$install_libdir"; then 92724215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project break 92734215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 92744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project output="$output_objdir/$outputname"i 92754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Replace all uninstalled libtool libraries with the installed ones 92764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdependency_libs= 92774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for deplib in $dependency_libs; do 92784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $deplib in 92794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 92804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$deplib" 92814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 9282ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_resolve_sysroot "$deplib" 9283ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 92844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libdir" && \ 92854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$deplib' is not a valid libtool archive" 9286ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 9287ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 9288ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -L*) 9289ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname -L '' "$deplib" 9290ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_replace_sysroot "$func_stripname_result" 9291ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdependency_libs " -L$func_replace_sysroot_result" 92924215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 9293ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -R*) 9294ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_stripname -R '' "$deplib" 9295ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_replace_sysroot "$func_stripname_result" 9296ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdependency_libs " -R$func_replace_sysroot_result" 9297ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 9298ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append newdependency_libs " $deplib" ;; 92994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 93004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 93014215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dependency_libs="$newdependency_libs" 93024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlfiles= 93034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 93044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $dlfiles; do 93054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $lib in 93064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 93074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$lib" 93084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 93094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 93104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libdir" && \ 93114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$lib' is not a valid libtool archive" 9312ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 93134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 9314ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append newdlfiles " $lib" ;; 93154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 93164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 93174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles="$newdlfiles" 93184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles= 93194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $dlprefiles; do 93204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $lib in 93214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *.la) 93224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Only pass preopened files to the pseudo-archive (for 93234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # eventual linking with the app. that links it) if we 93244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # didn't already link the preopened objects directly into 93254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # the library: 93264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$lib" 93274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 93284215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 93294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$libdir" && \ 93304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_error "\`$lib' is not a valid libtool archive" 9331ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 93324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 93334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 93344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 93354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$newdlprefiles" 93364215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 93374215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlfiles= 93384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $dlfiles; do 93394215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $lib in 93404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 93414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) abs=`pwd`"/$lib" ;; 93424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 9343ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlfiles " $abs" 93444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 93454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlfiles="$newdlfiles" 93464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project newdlprefiles= 93474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project for lib in $dlprefiles; do 93484215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $lib in 93494215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 93504215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project *) abs=`pwd`"/$lib" ;; 93514215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 9352ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append newdlprefiles " $abs" 93534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 93544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dlprefiles="$newdlprefiles" 93554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 93564215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $RM $output 93574215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # place dlname in correct position for cygwin 9358ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # In fact, it would be nice if we could use this code for all target 9359ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # systems that can't hard-code library paths into their executables 9360ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # and that have no shared library path variable independent of PATH, 9361ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # but it turns out we can't easily determine that from inspecting 9362ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # libtool variables, so we have to hard-code the OSs to which it 9363ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # applies here; at the moment, that means platforms that use the PE 9364ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # object format with DLL files. See the long comment at the top of 9365ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # tests/bindir.at for full details. 93664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project tdlname=$dlname 93674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project case $host,$output,$installed,$module,$dlname in 9368ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 9369ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # If a -bindir argument was supplied, place the dll there. 9370ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "x$bindir" != x ; 9371ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik then 9372ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_relative_path "$install_libdir" "$bindir" 9373ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tdlname=$func_relative_path_result$dlname 9374ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik else 9375ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Otherwise fall back on heuristic. 9376ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik tdlname=../bin/$dlname 9377ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik fi 9378ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik ;; 93794215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 93804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO > $output "\ 93814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# $outputname - a libtool library file 93824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 93834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# 93844215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Please DO NOT delete this file! 93854215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# It is necessary for linking the library. 9386893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 93874215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The name that we can dlopen(3). 93884215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdlname='$tdlname' 9389893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 93904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Names of this library. 93914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlibrary_names='$library_names' 9392893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 93934215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# The name of the static archive. 93944215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectold_library='$old_library' 9395893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 93964215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Linker flags that can not go in dependency_libs. 93974215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectinherited_linker_flags='$new_inherited_linker_flags' 9398893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 93994215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Libraries that this one depends upon. 94004215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdependency_libs='$dependency_libs' 9401893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 94024215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Names of additional weak libraries provided by this library 94034215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectweak_library_names='$weak_libs' 9404893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 94054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Version information for $libname. 94064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectcurrent=$current 94074215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectage=$age 94084215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrevision=$revision 9409893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 94104215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Is this an already installed library? 94114215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectinstalled=$installed 9412893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 94134215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Should we warn about portability when linking against -modules? 94144215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectshouldnotlink=$module 9415893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 94164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Files to dlopen/dlpreopen 94174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdlopen='$dlfiles' 94184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectdlpreopen='$dlprefiles' 9419893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 94204215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# Directory that this library needs to be installed in: 94214215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectlibdir='$install_libdir'" 94224215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "$installed" = no && test "$need_relink" = yes; then 94234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $ECHO >> $output "\ 94244215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectrelink_command=\"$relink_command\"" 94254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 94264215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project done 94274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project } 9428893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 94294215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # Do a symbolic link so that the libtool archive can be found in 94304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project # LD_LIBRARY_PATH before the program is installed. 94314215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 94324215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project ;; 94334215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project esac 94344215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project exit $EXIT_SUCCESS 94354215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 9436893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9437ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 94384215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mode_link ${1+"$@"} 9439893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9440893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 94414215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# func_mode_uninstall arg... 94424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectfunc_mode_uninstall () 94434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project{ 94444215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project $opt_debug 94454215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project RM="$nonopt" 9446893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project files= 9447893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmforce= 9448893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit_status=0 9449893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9450893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # This variable tells wrapper scripts just to set variables rather 9451893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # than running their programs. 9452893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project libtool_install_magic="$magic" 9453893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9454893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for arg 9455893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project do 9456893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $arg in 9457ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -f) func_append RM " $arg"; rmforce=yes ;; 9458ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik -*) func_append RM " $arg" ;; 9459ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append files " $arg" ;; 9460893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 9461893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 9462893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 94634215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -z "$RM" && \ 94644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify an RM program" 9465893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9466893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmdirs= 9467893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9468893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for file in $files; do 94694215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_dirname "$file" "" "." 94704215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project dir="$func_dirname_result" 94714215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test "X$dir" = X.; then 9472ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik odir="$objdir" 9473893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project else 9474ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik odir="$dir/$objdir" 9475893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 94764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_basename "$file" 94774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project name="$func_basename_result" 9478ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test "$opt_mode" = uninstall && odir="$dir" 9479893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9480ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik # Remember odir for removal later, being careful to avoid duplicates 9481ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$opt_mode" = clean; then 9482893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case " $rmdirs " in 9483ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *" $odir "*) ;; 9484ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) func_append rmdirs " $odir" ;; 9485893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 9486893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9487893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9488893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Don't error if the file doesn't exist and rm -f was used. 94894215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if { test -L "$file"; } >/dev/null 2>&1 || 94904215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project { test -h "$file"; } >/dev/null 2>&1 || 94914215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test -f "$file"; then 9492893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project : 9493893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project elif test -d "$file"; then 9494893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit_status=1 9495893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 9496893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project elif test "$rmforce" = yes; then 9497893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project continue 9498893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9499893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9500893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project rmfiles="$file" 9501893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9502893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $name in 9503893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *.la) 9504893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Possibly a libtool archive, so verify it. 95054215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_lalib_p "$file"; then 95064215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source $dir/$name 9507893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9508893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Delete the libtool libraries and symlinks. 9509893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for n in $library_names; do 9510ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rmfiles " $odir/$n" 9511893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 9512ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test -n "$old_library" && func_append rmfiles " $odir/$old_library" 9513893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9514ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case "$opt_mode" in 9515893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project clean) 9516ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik case " $library_names " in 9517893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *" $dlname "*) ;; 9518ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 9519893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 9520ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 9521893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 9522893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project uninstall) 9523893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -n "$library_names"; then 9524893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Do each command in the postuninstall commands. 95254215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9526893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9527893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9528893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -n "$old_library"; then 9529893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Do each command in the old_postuninstall commands. 95304215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9531893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9532893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # FIXME: should reinstall the best remaining shared library. 9533893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 9534893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 9535893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9536893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 9537893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9538893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *.lo) 9539893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Possibly a libtool object, so verify it. 95404215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_lalib_p "$file"; then 9541893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9542893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Read the .lo file 95434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source $dir/$name 9544893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9545893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Add PIC object to the list of files to remove. 95464215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$pic_object" && 95474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$pic_object" != none; then 9548ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rmfiles " $dir/$pic_object" 9549893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9550893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9551893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Add non-PIC object to the list of files to remove. 95524215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if test -n "$non_pic_object" && 95534215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project test "$non_pic_object" != none; then 9554ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rmfiles " $dir/$non_pic_object" 9555893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9556893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9557893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 9558893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9559893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *) 9560ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik if test "$opt_mode" = clean ; then 9561893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project noexename=$name 9562893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project case $file in 9563893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project *.exe) 95644215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$file" 95654215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project file=$func_stripname_result 95664215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_stripname '' '.exe' "$name" 95674215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project noexename=$func_stripname_result 9568893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # $file with .exe has already been added to rmfiles, 9569893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # add $file without .exe 9570ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rmfiles " $file" 9571893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 9572893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 9573893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Do a test to see if this is a libtool program. 95744215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_p "$file"; then 95754215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project if func_ltwrapper_executable_p "$file"; then 95764215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_ltwrapper_scriptname "$file" 95774215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 95784215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source $func_ltwrapper_scriptname_result 9579ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rmfiles " $func_ltwrapper_scriptname_result" 95804215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project else 95814215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project relink_command= 95824215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_source $dir/$noexename 95834215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project fi 9584893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9585893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # note $name still contains .exe if it was in $file originally 9586893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # as does the version of $file that was added into $rmfiles 9587ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 9588893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "$fast_install" = yes && test -n "$relink_command"; then 9589ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rmfiles " $odir/lt-$name" 9590893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9591893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test "X$noexename" != "X$name" ; then 9592ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_append rmfiles " $odir/lt-${noexename}.c" 9593893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9594893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9595893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9596893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project ;; 9597893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project esac 95984215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "$RM $rmfiles" 'exit_status=1' 9599893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 9600893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9601893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project # Try to remove the ${objdir}s in the directories where we deleted files 9602893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project for dir in $rmdirs; do 9603893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project if test -d "$dir"; then 96044215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_show_eval "rmdir $dir >/dev/null 2>&1" 9605893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project fi 9606893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project done 9607893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9608893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $exit_status 96094215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 9610893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9611ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 96124215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_mode_uninstall ${1+"$@"} 9613893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9614ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craiktest -z "$opt_mode" && { 96154215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project help="$generic_help" 96164215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project func_fatal_help "you must specify a MODE" 96174215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project} 96184215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 96194215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projecttest -z "$exec_cmd" && \ 9620ca2bf81b02c99afa2e76b3b2c6eb232c239221e0Chris Craik func_fatal_help "invalid operation mode \`$opt_mode'" 9621893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9622893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectif test -n "$exec_cmd"; then 96234215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project eval exec "$exec_cmd" 9624893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project exit $EXIT_FAILURE 9625893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Projectfi 9626893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 96274215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectexit $exit_status 9628893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9629893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9630893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# The TAGs below are defined such that we never get into a situation 9631893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# in which we disable both kinds of libraries. Given conflicting 9632893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# choices, we go for a static library, that is the most portable, 9633893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# since we can't tell whether shared libraries were disabled because 9634893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# the user asked for that or because the platform doesn't support 9635893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# them. This is particularly important on AIX, because we don't 9636893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# support having both static and shared libraries enabled at the same 9637893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# time on that platform, so we default to a shared-only configuration. 9638893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# If a disable-shared tag is given, we'll fallback to a static-only 9639893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# configuration. But we'll never go from static-only to shared-only. 9640893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9641893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 96424215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbuild_libtool_libs=no 96434215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbuild_old_libs=yes 9644893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### END LIBTOOL TAG CONFIG: disable-shared 9645893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9646893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### BEGIN LIBTOOL TAG CONFIG: disable-static 96474215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Projectbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 9648893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# ### END LIBTOOL TAG CONFIG: disable-static 9649893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project 9650893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# Local Variables: 9651893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# mode:shell-script 9652893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# sh-indentation:2 9653893912bfc2683463dc3e2c445336752d012563d3The Android Open Source Project# End: 96544215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project# vi:sw=2 96554215dd1533c56e1a89ae6f1d6ea68677fac27fdaThe Android Open Source Project 9656