135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# libtool (GNU libtool) 2.4 335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. 735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This is free software; see the source for copying conditions. There is NO 835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 1035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# GNU Libtool is free software; you can redistribute it and/or modify 11b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# it under the terms of the GNU General Public License as published by 12b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# the Free Software Foundation; either version 2 of the License, or 13b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# (at your option) any later version. 14b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# 1535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# As a special exception to the GNU General Public License, 1635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# if you distribute this file as part of a program or library that 1735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# is built using GNU Libtool, you may include this file under the 1835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# same distribution terms that you use for the rest of that program. 1935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 2035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# GNU Libtool is distributed in the hope that it will be useful, but 21b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# WITHOUT ANY WARRANTY; without even the implied warranty of 22b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# General Public License for more details. 24b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# 25b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# You should have received a copy of the GNU General Public License 2635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# along with GNU Libtool; see the file COPYING. If not, a copy 2735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# can be downloaded from http://www.gnu.org/licenses/gpl.html, 2835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# or obtained by writing to the Free Software Foundation, Inc., 2935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 3035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 3135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Usage: $progname [OPTION]... [MODE-ARG]... 3235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 3335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Provide generalized library-building support services. 34b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# 3535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --config show all configuration variables 3635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --debug enable verbose shell tracing 3735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# -n, --dry-run display commands without modifying any files 3835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --features display basic configuration information and exit 3935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --mode=MODE use operation mode MODE 4035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --preserve-dup-deps don't remove duplicate dependency libraries 4135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --quiet, --silent don't print informational messages 4235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --no-quiet, --no-silent 4335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# print informational messages (default) 4435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --tag=TAG use configuration variables from tag TAG 4535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# -v, --verbose print more informational messages than default 4635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --no-verbose don't print the extra informational messages 4735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --version print version information 4835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# -h, --help, --help-all print short, long, or detailed help message 4935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 5035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# MODE must be one of the following: 5135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 5235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# clean remove files from the build directory 5335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# compile compile a source file into a libtool object 5435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# execute automatically set library path, then run a program 5535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# finish complete the installation of libtool libraries 5635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# install install libraries or executables 5735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# link create a library or an executable 5835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# uninstall remove libraries from an installed directory 5935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 6035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# MODE-ARGS vary depending on the MODE. When passed as first option, 6135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 6235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 6335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 6435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# When reporting a bug, please describe a test case to reproduce it and 6535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# include the following information: 6635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 6735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# host-triplet: $host 6835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# shell: $SHELL 6935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# compiler: $LTCC 7035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# compiler flags: $LTCFLAGS 7135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# linker: $LD (gnu? $with_gnu_ld) 7235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $progname: (GNU libtool) 2.4 Debian-2.4-2ubuntu1 7335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# automake: $automake_version 7435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# autoconf: $autoconf_version 7535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 7635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Report bugs to <bug-libtool@gnu.org>. 7735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 7835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# General help using GNU software: <http://www.gnu.org/gethelp/>. 7935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 8035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesPROGRAM=libtool 8135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesPACKAGE=libtool 8235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesVERSION="2.4 Debian-2.4-2ubuntu1" 8335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesTIMESTAMP="" 8435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughespackage_revision=1.3293 8535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 8635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Be Bourne compatible 8735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 8835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes emulate sh 8935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes NULLCMD=: 9035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 9135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # is contrary to our usage. Disable this feature. 9235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes alias -g '${1+"$@"}'='"$@"' 9335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes setopt NO_GLOB_SUBST 9435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheselse 9535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 9635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfi 9735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesBIN_SH=xpg4; export BIN_SH # for Tru64 9835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesDUALCASE=1; export DUALCASE # for MKS sh 9935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 10035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# A function that is used when there is no print builtin or printf. 10135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_fallback_echo () 10235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 10335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval 'cat <<_LTECHO_EOF 10435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$1 10535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes_LTECHO_EOF' 10635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 10735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 10835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# NLS nuisances: We save the old values to restore during execute mode. 10935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_user_locale= 11035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_safe_locale= 11135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 11235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesdo 11335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "if test \"\${$lt_var+set}\" = set; then 11435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_$lt_var=\$$lt_var 11535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $lt_var=C 11635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export $lt_var 11735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 11835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 11935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi" 12035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesdone 12135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesLC_ALL=C 12235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesLANGUAGE=C 12335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesexport LANGUAGE LC_ALL 12435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 12535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$lt_unset CDPATH 126b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 127b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 128b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 129b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# is ksh but when the shell is invoked as "sh" and the current value of 130b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# the _XPG environment variable is not equal to 1 (one), the special 131b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# positional parameter $0, within a function call, is the name of the 132b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# function. 133b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectprogpath="$0" 134b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 13535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 13635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 13735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${CP="cp -f"} 13835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 13935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${EGREP="/bin/grep -E"} 14035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${FGREP="/bin/grep -F"} 14135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${GREP="/bin/grep"} 14235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${LN_S="ln -s"} 14335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${MAKE="make"} 14435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${MKDIR="mkdir"} 14535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${MV="mv -f"} 14635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${RM="rm -f"} 14735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${SED="/bin/sed"} 14835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 14935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes: ${Xsed="$SED -e 1s/^X//"} 150b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 151b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# Global variables: 152b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectEXIT_SUCCESS=0 153b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectEXIT_FAILURE=1 15435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 15535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 156b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 15735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesexit_status=$EXIT_SUCCESS 158b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 15935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Make sure IFS has a sensible default 16035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_nl=' 16135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes' 16235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesIFS=" $lt_nl" 163b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 16435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesdirname="s,/[^/]*$,," 16535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesbasename="s,^.*/,," 166b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 16735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_dirname file append nondir_replacement 16835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Compute the dirname of FILE. If nonempty, add APPEND to the result, 16935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# otherwise set result to NONDIR_REPLACEMENT. 17035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_dirname () 17135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 17235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 17335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$func_dirname_result" = "X${1}"; then 17435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname_result="${3}" 17535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 17635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname_result="$func_dirname_result${2}" 17735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 17835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_dirname may be replaced by extended shell implementation 179b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 18035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 18135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_basename file 18235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_basename () 18335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 18435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename_result=`$ECHO "${1}" | $SED "$basename"` 18535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_basename may be replaced by extended shell implementation 18635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 18735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 18835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_dirname_and_basename file append nondir_replacement 18935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# perform func_basename and func_dirname in a single function 19035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# call: 19135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# dirname: Compute the dirname of FILE. If nonempty, 19235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# add APPEND to the result, otherwise set result 19335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# to NONDIR_REPLACEMENT. 19435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# value returned in "$func_dirname_result" 19535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# basename: Compute filename of FILE. 19635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# value retuned in "$func_basename_result" 19735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Implementation must be kept synchronized with func_dirname 19835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# and func_basename. For efficiency, we do not delegate to 19935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# those functions but instead duplicate the functionality here. 20035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_dirname_and_basename () 20135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 20235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Extract subdirectory from the argument. 20335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 20435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$func_dirname_result" = "X${1}"; then 20535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname_result="${3}" 20635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 20735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname_result="$func_dirname_result${2}" 20835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 20935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 21035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_dirname_and_basename may be replaced by extended shell implementation 21135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 21235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 21335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_stripname prefix suffix name 21435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# strip PREFIX and SUFFIX off of NAME. 21535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# PREFIX and SUFFIX must not contain globbing or regex special 21635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# characters, hashes, percent signs, but SUFFIX may contain a leading 21735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# dot (in which case that matches only a dot). 21835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_strip_suffix prefix name 21935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_stripname () 22035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 22135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case ${2} in 22235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 22335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 22435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 22535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_stripname may be replaced by extended shell implementation 22635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 22735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 22835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# These SED scripts presuppose an absolute path with a trailing slash. 22935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughespathcar='s,^/\([^/]*\).*$,\1,' 23035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughespathcdr='s,^/[^/]*,,' 23135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesremovedotparts=':dotsl 23235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s@/\./@/@g 23335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes t dotsl 23435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s,/\.$,/,' 23535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescollapseslashes='s@/\{1,\}@/@g' 23635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfinalslash='s,/*$,/,' 23735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 23835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_normal_abspath PATH 23935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Remove doubled-up and trailing slashes, "." path components, 24035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# and cancel out any ".." path components in PATH after making 24135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# it an absolute path. 24235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# value returned in "$func_normal_abspath_result" 24335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_normal_abspath () 24435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 24535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Start from root dir and reassemble the path. 24635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_result= 24735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_tpath=$1 24835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_altnamespace= 24935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $func_normal_abspath_tpath in 25035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "") 25135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Empty path, that just means $cwd. 25235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '/' "`pwd`" 25335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_result=$func_stripname_result 25435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return 25535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 25635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The next three entries are used to spot a run of precisely 25735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # two leading slashes without using negated character classes; 25835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # we take advantage of case's first-match behaviour. 25935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ///*) 26035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Unusual form of absolute path, do nothing. 26135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 26235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes //*) 26335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Not necessarily an ordinary path; POSIX reserves leading '//' 26435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # and for example Cygwin uses it to access remote file shares 26535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # over CIFS/SMB, so we conserve a leading double slash if found. 26635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_altnamespace=/ 26735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 26835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /*) 26935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Absolute path, do nothing. 27035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 27135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 27235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Relative path, prepend $cwd. 27335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 27435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 27535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 27635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Cancel out all the simple stuff to save iterations. We also want 27735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the path to end with a slash for ease of parsing, so make sure 27835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # there is one (and only one) here. 27935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 28035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 28135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while :; do 28235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Processed it all yet? 28335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$func_normal_abspath_tpath" = / ; then 28435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If we ascended to the root using ".." the result may be empty now. 28535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$func_normal_abspath_result" ; then 28635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_result=/ 28735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 28835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 28935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 29035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 29135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -e "$pathcar"` 29235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 29335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -e "$pathcdr"` 29435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Figure out what to do with it 29535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $func_normal_abspath_tcomponent in 29635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "") 29735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Trailing empty path component, ignore it. 29835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 29935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ..) 30035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Parent dir; strip last assembled component from result. 30135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$func_normal_abspath_result" 30235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_result=$func_dirname_result 30335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 30435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 30535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Actual path component, append it. 30635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 30735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 30835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 30935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 31035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Restore leading double-slash if one was found on entry. 31135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 31235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 31335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 31435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_relative_path SRCDIR DSTDIR 31535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# generates a relative path from SRCDIR to DSTDIR, with a trailing 31635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# slash if non-empty, suitable for immediately appending a filename 31735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# without needing to append a separator. 31835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# value returned in "$func_relative_path_result" 31935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_relative_path () 32035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 32135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_result= 32235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath "$1" 32335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_tlibdir=$func_normal_abspath_result 32435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_normal_abspath "$2" 32535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_tbindir=$func_normal_abspath_result 32635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 32735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Ascend the tree starting from libdir 32835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while :; do 32935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # check if we have found a prefix of bindir 33035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $func_relative_path_tbindir in 33135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $func_relative_path_tlibdir) 33235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # found an exact match 33335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_tcancelled= 33435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 33535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 33635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $func_relative_path_tlibdir*) 33735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # found a matching prefix 33835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 33935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_tcancelled=$func_stripname_result 34035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$func_relative_path_result"; then 34135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_result=. 34235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 34335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 34435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 34535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 34635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname $func_relative_path_tlibdir 34735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_tlibdir=${func_dirname_result} 34835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "x$func_relative_path_tlibdir" = x ; then 34935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Have to descend all the way to the root! 35035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_result=../$func_relative_path_result 35135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_tcancelled=$func_relative_path_tbindir 35235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 35335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 35435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_result=../$func_relative_path_result 35535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 35635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 35735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 35835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 35935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now calculate path; take care to avoid doubling-up slashes. 36035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '/' "$func_relative_path_result" 36135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_result=$func_stripname_result 36235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '/' '/' "$func_relative_path_tcancelled" 36335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "x$func_stripname_result" != x ; then 36435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 36535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 36635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 36735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Normalisation. If bindir is libdir, return empty string, 36835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # else relative path ending with a slash; either way, target 36935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # file name can be directly appended. 37035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test ! -z "$func_relative_path_result"; then 37135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname './' '' "$func_relative_path_result/" 37235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path_result=$func_stripname_result 37335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 37435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 37535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 37635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# The name of this program: 37735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_dirname_and_basename "$progpath" 37835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesprogname=$func_basename_result 37935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 38035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Make sure we have an absolute path for reexecution: 38135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescase $progpath in 38235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]*|[A-Za-z]:\\*) ;; 38335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[\\/]*) 38435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes progdir=$func_dirname_result 38535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes progdir=`cd "$progdir" && pwd` 38635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes progpath="$progdir/$progname" 38735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 38835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 38935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_IFS="$IFS" 39035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS=: 39135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for progdir in $PATH; do 39235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_IFS" 39335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -x "$progdir/$progname" && break 39435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 39535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_IFS" 39635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$progdir" || progdir=`pwd` 39735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes progpath="$progdir/$progname" 39835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 39935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesesac 400b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 401b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# Sed substitution that helps us do robust quoting. It backslashifies 402b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# metacharacters that are still active within double-quoted strings. 403b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectXsed="${SED}"' -e 1s/^X//' 40435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughessed_quote_subst='s/\([`"$\\]\)/\\\1/g' 40535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 40635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Same as above, but do not quote variable references. 40735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 40835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 40935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Sed substitution that turns a string into a regex matching for the 41035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# string literally. 41135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughessed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 41235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 41335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Sed substitution that converts a w32 file name or path 41435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# which contains forward slashes, into one that contains 41535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# (escaped) backslashes. A very naive implementation. 41635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 41735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 41835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Re-`\' parameter expansions in output of double_quote_subst that were 41935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 42035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# in input to double_quote_subst, that '$' was protected from expansion. 42135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Since each input `\' is now two `\'s, look for any number of runs of 42235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 42335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesbs='\\' 42435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesbs2='\\\\' 42535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesbs4='\\\\\\\\' 42635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesdollar='\$' 42735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughessed_double_backslash="\ 42835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/$bs4/&\\ 42935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/g 43035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/^$bs2$dollar/$bs&/ 43135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 43235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/\n//g" 43335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 43435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Standard options: 43535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_dry_run=false 43635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_help=false 43735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_quiet=false 43835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_verbose=false 43935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_warning=: 44035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 44135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_echo arg... 44235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo program name prefixed message, along with the current mode 44335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# name if it has been set yet. 44435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_echo () 44535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 44635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 44735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 448b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 44935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_verbose arg... 45035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo program name prefixed message in verbose mode only. 45135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_verbose () 45235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 45335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_verbose && func_echo ${1+"$@"} 454b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 45535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # A bug in bash halts the script if the last line of a function 45635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # fails when set -e is in force, so we need another command to 45735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # work around that: 45835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes : 45935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 460b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 46135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_echo_all arg... 46235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Invoke $ECHO with all args, space-separated. 46335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_echo_all () 46435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 46535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$*" 46635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 46735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 46835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_error arg... 46935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo program name prefixed message to standard error. 47035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_error () 47135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 47235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 47335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 47435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 47535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_warning arg... 47635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo program name prefixed warning message to standard error. 47735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_warning () 47835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 47935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 48035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 48135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # bash bug again: 48235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes : 48335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 48435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 48535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_fatal_error arg... 48635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo program name prefixed message to standard error, and exit. 48735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_fatal_error () 48835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 48935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error ${1+"$@"} 49035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_FAILURE 49135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 49235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 49335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_fatal_help arg... 49435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo program name prefixed message to standard error, followed by 49535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# a help hint, and exit. 49635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_fatal_help () 49735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 49835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error ${1+"$@"} 49935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "$help" 50035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 50135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheshelp="Try \`$progname --help' for more information." ## default 502b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 503b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 50435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_grep expression filename 50535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Check whether EXPRESSION matches any line of FILENAME, without output. 50635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_grep () 50735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 50835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $GREP "$1" "$2" >/dev/null 2>&1 50935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 51035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 51135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 51235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_mkdir_p directory-path 51335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Make sure the entire path to DIRECTORY-PATH is available. 51435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_mkdir_p () 51535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 51635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_directory_path="$1" 51735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_dir_list= 51835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 51935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 52035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 52135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Protect directory names starting with `-' 52235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $my_directory_path in 52335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -*) my_directory_path="./$my_directory_path" ;; 52435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 52535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 52635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # While some portion of DIR does not yet exist... 52735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while test ! -d "$my_directory_path"; do 52835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # ...make a list in topmost first order. Use a colon delimited 52935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # list incase some portion of path contains whitespace. 53035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_dir_list="$my_directory_path:$my_dir_list" 53135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 53235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the last portion added has no slash in it, the list is done 53335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $my_directory_path in */*) ;; *) break ;; esac 53435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 53535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # ...otherwise throw away the child directory and loop 53635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 53735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 53835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 53935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 54035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_mkdir_p_IFS="$IFS"; IFS=':' 54135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for my_dir in $my_dir_list; do 54235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_mkdir_p_IFS" 54335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # mkdir can fail with a `File exist' error if two processes 54435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # try to create one of the directories concurrently. Don't 54535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # stop in that case! 54635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $MKDIR "$my_dir" 2>/dev/null || : 54735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 54835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_mkdir_p_IFS" 54935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 55035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Bail out if we (or some other process) failed to create a directory. 55135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -d "$my_directory_path" || \ 55235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "Failed to create \`$1'" 55335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 55435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 55535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 556b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 557b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# func_mktempdir [string] 558b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# Make a temporary directory that won't clash with other running 559b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# libtool processes, and avoids race conditions if possible. If 560b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# given, STRING is the basename for that directory. 561b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectfunc_mktempdir () 562b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 563b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project my_template="${TMPDIR-/tmp}/${1-$progname}" 564b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 56535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$opt_dry_run" = ":"; then 566b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Return a directory name, but don't create it in dry-run mode 567b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project my_tmpdir="${my_template}-$$" 568b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 569b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 570b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # If mktemp works, use that first and foremost 571b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 572b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 573b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if test ! -d "$my_tmpdir"; then 57435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Failing that, at least try and use $RANDOM to avoid a race 57535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_tmpdir="${my_template}-${RANDOM-0}$$" 576b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 57735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_mktempdir_umask=`umask` 57835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes umask 0077 57935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $MKDIR "$my_tmpdir" 58035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes umask $save_mktempdir_umask 581b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 582b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 583b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # If we're not in dry-run mode, bomb out on failure 58435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -d "$my_tmpdir" || \ 58535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 586b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 587b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 58835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$my_tmpdir" 589b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 590b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 591b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 59235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_quote_for_eval arg 59335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Aesthetically quote ARG to be evaled later. 59435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 59535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# is double-quoted, suitable for a subsequent eval, whereas 59635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 59735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# which are still active within double quotes backslashified. 59835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_quote_for_eval () 599b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 60035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $1 in 60135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[\\\`\"\$]*) 60235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 60335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 60435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval_unquoted_result="$1" ;; 60535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 60635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 60735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $func_quote_for_eval_unquoted_result in 60835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Double-quote args containing shell metacharacters to delay 60935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # word splitting, command substitution and and variable 61035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # expansion for a subsequent eval. 61135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Many Bourne shells cannot handle close brackets correctly 61235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # in scan sets, so we specify it separately. 61335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 61435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 61535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 61635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 61735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 618b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 619b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 620b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 621b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 62235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_quote_for_expand arg 62335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Aesthetically quote ARG to be evaled later; same as above, 62435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# but do not quote variable references. 62535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_quote_for_expand () 626b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 62735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $1 in 62835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[\\\`\"]*) 62935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_arg=`$ECHO "$1" | $SED \ 63035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 631b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *) 63235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_arg="$1" ;; 63335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 63435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 63535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $my_arg in 63635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Double-quote args containing shell metacharacters to delay 63735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # word splitting and command substitution for a subsequent eval. 63835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Many Bourne shells cannot handle close brackets correctly 63935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # in scan sets, so we specify it separately. 64035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 64135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_arg="\"$my_arg\"" 64235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 64335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 64435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 64535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_expand_result="$my_arg" 64635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 64735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 64835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 64935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_show_eval cmd [fail_exp] 65035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 65135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 65235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# is given, then evaluate it. 65335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_show_eval () 65435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 65535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_cmd="$1" 65635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_fail_exp="${2-:}" 65735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 65835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ${opt_silent-false} || { 65935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_expand "$my_cmd" 66035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "func_echo $func_quote_for_expand_result" 66135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 66235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 66335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if ${opt_dry_run-false}; then :; else 66435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$my_cmd" 66535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_status=$? 66635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$my_status" -eq 0; then :; else 66735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "(exit $my_status); $my_fail_exp" 66835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 669b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 670b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 671b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 672b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 67335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_show_eval_locale cmd [fail_exp] 67435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 67535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 67635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# is given, then evaluate it. Use the saved locale for evaluation. 67735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_show_eval_locale () 678b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 67935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_cmd="$1" 68035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_fail_exp="${2-:}" 681b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 68235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ${opt_silent-false} || { 68335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_expand "$my_cmd" 68435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "func_echo $func_quote_for_expand_result" 68535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 68635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 68735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if ${opt_dry_run-false}; then :; else 68835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$lt_user_locale 68935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $my_cmd" 69035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_status=$? 69135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$lt_safe_locale" 69235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$my_status" -eq 0; then :; else 69335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "(exit $my_status); $my_fail_exp" 69435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 695b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 696b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 697b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 69835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_tr_sh 69935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Turn $1 into a string suitable for a shell variable name. 70035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Result is stored in $func_tr_sh_result. All characters 70135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 70235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# if $1 begins with a digit, a '_' is prepended as well. 70335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_tr_sh () 704b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 70535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $1 in 70635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [0-9]* | *[!a-zA-Z0-9_]*) 70735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 70835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 70935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes * ) 71035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_tr_sh_result=$1 71135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 712b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 71335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 714b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 715b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 71635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_version 71735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo version message to standard output and exit. 71835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_version () 71935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 72035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 72135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 72235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -n '/(C)/!b go 72335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes :more 72435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /\./!{ 72535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes N 72635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/\n# / / 72735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes b more 72835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 72935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes :go 73035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /^# '$PROGRAM' (GNU /,/# warranty; / { 73135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/^# // 73235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/^# *$// 73335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 73435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes p 73535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes }' < "$progpath" 73635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $? 73735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 738b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 73935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_usage 74035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo short help message to standard output and exit. 74135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_usage () 74235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 74335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 74435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 74535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -n '/^# Usage:/,/^# *.*--help/ { 74635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/^# // 74735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/^# *$// 74835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/\$progname/'$progname'/ 74935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes p 75035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes }' < "$progpath" 75135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 75235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "run \`$progname --help | more' for full usage" 75335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $? 75435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 755b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 75635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_help [NOEXIT] 75735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo long help message to standard output and exit, 75835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# unless 'noexit' is passed as argument. 75935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_help () 76035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 76135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 76235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 76335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -n '/^# Usage:/,/# Report bugs to/ { 76435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes :print 76535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/^# // 76635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/^# *$// 76735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s*\$progname*'$progname'* 76835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s*\$host*'"$host"'* 76935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s*\$SHELL*'"$SHELL"'* 77035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s*\$LTCC*'"$LTCC"'* 77135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s*\$LTCFLAGS*'"$LTCFLAGS"'* 77235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s*\$LD*'"$LD"'* 77335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/\$with_gnu_ld/'"$with_gnu_ld"'/ 77435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 77535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 77635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes p 77735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes d 77835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 77935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /^# .* home page:/b print 78035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /^# General help using/b print 78135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ' < "$progpath" 78235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ret=$? 78335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$1"; then 78435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $ret 78535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 78635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 787b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 78835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_missing_arg argname 78935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo program name prefixed message to standard error and set global 79035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# exit_cmd. 79135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_missing_arg () 79235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 79335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 794b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 79535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "missing argument for $1." 79635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit_cmd=exit 79735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 798b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 799b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 80035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_split_short_opt shortopt 80135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Set func_split_short_opt_name and func_split_short_opt_arg shell 80235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# variables after splitting SHORTOPT after the 2nd character. 80335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_split_short_opt () 80435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 80535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_sed_short_opt='1s/^\(..\).*$/\1/;q' 80635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 807b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 80835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 80935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 81035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_split_short_opt may be replaced by extended shell implementation 811b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 812b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 81335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_split_long_opt longopt 81435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Set func_split_long_opt_name and func_split_long_opt_arg shell 81535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# variables after splitting LONGOPT at the `=' sign. 81635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_split_long_opt () 81735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 81835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 81935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_sed_long_arg='1s/^--[^=]*=//' 820b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 82135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 82235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 82335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_split_long_opt may be replaced by extended shell implementation 824b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 82535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesexit_cmd=: 826b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 827b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 828b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 829b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 830b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 83135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesmagic="%%%MAGIC variable%%%" 83235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesmagic_exe="%%%MAGIC EXE variable%%%" 833b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 83435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Global variables. 83535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesnonopt= 83635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughespreserve_args= 83735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslo2o="s/\\.lo\$/.${objext}/" 83835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheso2lo="s/\\.${objext}\$/.lo/" 83935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesextracted_archives= 84035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesextracted_serial=0 841b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 842b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# If this variable is set in any of the actions, the command in it 843b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# will be execed at the end. This prevents here-documents from being 844b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# left over by shells. 845b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectexec_cmd= 846b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 84735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_append var value 84835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Append VALUE to the end of shell variable VAR. 84935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_append () 85035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 85135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "${1}=\$${1}\${2}" 85235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_append may be replaced by extended shell implementation 853b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 85435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_append_quoted var value 85535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Quote VALUE and append to the end of shell variable VAR, separated 85635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# by a space. 85735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_append_quoted () 85835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 85935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "${2}" 86035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 86135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_append_quoted may be replaced by extended shell implementation 862b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 863b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 86435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_arith arithmetic-term... 86535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_arith () 86635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 86735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith_result=`expr "${@}"` 86835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_arith may be replaced by extended shell implementation 869b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 870b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 87135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_len string 87235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# STRING may not start with a hyphen. 87335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_len () 87435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 87535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 87635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_len may be replaced by extended shell implementation 877b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 878b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 87935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_lo2o object 88035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_lo2o () 88135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 88235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 88335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_lo2o may be replaced by extended shell implementation 884b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 885b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 88635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_xform libobj-or-source 88735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_xform () 88835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 88935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 89035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} # func_xform may be replaced by extended shell implementation 891b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 892b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 89335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_fatal_configuration arg... 89435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echo program name prefixed message to standard error, followed by 89535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# a configuration failure hint, and exit. 89635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_fatal_configuration () 89735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 89835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error ${1+"$@"} 89935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "See the $PACKAGE documentation for more information." 90035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "Fatal configuration error." 90135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 902b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 903b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 90435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_config 90535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Display the configuration for all the tags in this script. 90635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_config () 90735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 90835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes re_begincf='^# ### BEGIN LIBTOOL' 90935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes re_endcf='^# ### END LIBTOOL' 910b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 91135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Default configuration. 91235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 913b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 91435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now print the configurations for the tags. 91535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for tagname in $taglist; do 91635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 91735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 918b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 91935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $? 92035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 921b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 92235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_features 92335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Display the features supported by this script. 92435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_features () 92535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 92635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "host: $host" 92735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = yes; then 92835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "enable shared libraries" 92935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 93035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "disable shared libraries" 93135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 93235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_old_libs" = yes; then 93335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "enable static libraries" 93435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 93535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "disable static libraries" 93635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 937b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 93835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $? 93935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 940b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 94135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_enable_tag tagname 94235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Verify that TAGNAME is valid, and either flag an error and exit, or 94335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 94435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# variable here. 94535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_enable_tag () 94635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 94735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Global variable: 94835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tagname="$1" 949b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 95035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 95135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 95235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sed_extractcf="/$re_begincf/,/$re_endcf/p" 953b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 95435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Validate tagname. 95535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $tagname in 95635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[!-_A-Za-z0-9,/]*) 95735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "invalid tag name: $tagname" 95835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 95935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 960b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 96135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Don't test for the "default" C tag, as we know it's 96235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # there but not specially marked. 96335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $tagname in 96435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes CC) ;; 965b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *) 96635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 96735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes taglist="$taglist $tagname" 96835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 96935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Evaluate the configuration. Be careful to quote the path 97035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # and the sed script, to avoid splitting on whitespace, but 97135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # also don't use non-portable quotes within backquotes within 97235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # quotes we have to do it in 2 steps: 97335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 97435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$extractedcf" 97535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 97635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "ignoring unknown tag $tagname" 97735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 978b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 97935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 98035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 981b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 98235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_check_version_match 98335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Ensure that we are using m4 macros, and libtool script from the same 98435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# release of libtool. 98535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_check_version_match () 98635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 98735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$package_revision" != "$macro_revision"; then 98835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$VERSION" != "$macro_version"; then 98935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$macro_version"; then 99035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat >&2 <<_LT_EOF 99135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 99235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: definition of this LT_INIT comes from an older release. 99335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 99435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: and run autoconf again. 99535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes_LT_EOF 99635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 99735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat >&2 <<_LT_EOF 99835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 99935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 100035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 100135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: and run autoconf again. 100235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes_LT_EOF 100335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 1004b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 100535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat >&2 <<_LT_EOF 100635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 100735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: but the definition of this LT_INIT comes from revision $macro_revision. 100835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: You should recreate aclocal.m4 with macros from revision $package_revision 100935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$progname: of $PACKAGE $VERSION and run autoconf again. 101035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes_LT_EOF 1011b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 1012b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 101335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_MISMATCH 101435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 101535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1016b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1017b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 101835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Shorthand for --mode=foo, only valid as the first argument 101935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescase $1 in 102035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesclean|clea|cle|cl) 102135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift; set dummy --mode clean ${1+"$@"}; shift 102235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 102335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescompile|compil|compi|comp|com|co|c) 102435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift; set dummy --mode compile ${1+"$@"}; shift 102535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 102635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesexecute|execut|execu|exec|exe|ex|e) 102735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift; set dummy --mode execute ${1+"$@"}; shift 102835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 102935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfinish|finis|fini|fin|fi|f) 103035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift; set dummy --mode finish ${1+"$@"}; shift 103135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 103235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesinstall|instal|insta|inst|ins|in|i) 103335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift; set dummy --mode install ${1+"$@"}; shift 103435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 103535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslink|lin|li|l) 103635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift; set dummy --mode link ${1+"$@"}; shift 103735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 103835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 103935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift; set dummy --mode uninstall ${1+"$@"}; shift 104035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 104135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesesac 1042b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1043b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1044b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 104535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Option defaults: 104635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_debug=: 104735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_dry_run=false 104835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_config=false 104935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_preserve_dup_deps=false 105035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_features=false 105135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_finish=false 105235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_help=false 105335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_help_all=false 105435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_silent=: 105535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_verbose=: 105635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_silent=false 105735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_verbose=false 1058b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1059b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 106035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Parse options once, thoroughly. This comes as soon as possible in the 106135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# script to make things like `--version' happen as quickly as we can. 106235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 106335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # this just eases exit handling 106435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while test $# -gt 0; do 106535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt="$1" 106635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 106735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $opt in 106835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --debug|-x) opt_debug='set -x' 106935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_echo "enabling shell trace mode" 107035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 107135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 107235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --dry-run|--dryrun|-n) 107335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_dry_run=: 107435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 107535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --config) 107635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_config=: 107735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_config 107835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 107935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --dlopen|-dlopen) 108035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes optarg="$1" 108135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_dlopen="${opt_dlopen+$opt_dlopen 108235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes}$optarg" 108335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 108435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 108535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --preserve-dup-deps) 108635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_preserve_dup_deps=: 108735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 108835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --features) 108935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_features=: 109035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_features 109135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 109235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --finish) 109335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_finish=: 109435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesset dummy --mode finish ${1+"$@"}; shift 109535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 109635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --help) 109735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_help=: 109835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 109935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --help-all) 110035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_help_all=: 110135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_help=': help-all' 110235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 110335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --mode) 110435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test $# = 0 && func_missing_arg $opt && break 110535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes optarg="$1" 110635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_mode="$optarg" 110735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescase $optarg in 110835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Valid mode arguments: 110935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes clean|compile|execute|finish|install|link|relink|uninstall) ;; 111035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 111135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Catch anything else as an error 111235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_error "invalid argument for $opt" 111335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit_cmd=exit 111435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 111535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 111635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesesac 111735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 111835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 111935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --no-silent|--no-quiet) 112035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_silent=false 112135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_append preserve_args " $opt" 112235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 112335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --no-verbose) 112435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_verbose=false 112535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_append preserve_args " $opt" 112635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 112735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --silent|--quiet) 112835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_silent=: 112935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_append preserve_args " $opt" 113035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_verbose=false 113135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 113235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --verbose|-v) 113335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_verbose=: 113435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_append preserve_args " $opt" 113535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesopt_silent=false 113635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 113735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --tag) 113835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test $# = 0 && func_missing_arg $opt && break 113935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes optarg="$1" 114035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_tag="$optarg" 114135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_append preserve_args " $opt $optarg" 114235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_enable_tag "$optarg" 114335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 114435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 1145b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 114635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -\?|-h) func_usage ;; 114735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --help) func_help ;; 114835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --version) func_version ;; 1149b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 115035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Separate optargs to long options: 115135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --*=*) 115235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_split_long_opt "$opt" 115335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 115435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 115535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 1156b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 115735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Separate non-argument short options: 115835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -\?*|-h*|-n*|-v*) 115935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_split_short_opt "$opt" 116035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 116135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 116235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 1163b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 116435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --) break ;; 116535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -*) func_fatal_help "unrecognized option \`$opt'" ;; 116635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) set dummy "$opt" ${1+"$@"}; shift; break ;; 116735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 116835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 1169b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 117035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Validate options: 1171b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 117235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # save first non-option argument 117335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$#" -gt 0; then 117435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonopt="$opt" 117535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 117635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 1177b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 117835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # preserve --debug 117935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$opt_debug" = : || func_append preserve_args " --debug" 1180b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 118135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 118235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | *mingw* | *pw32* | *cegcc*) 118335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # don't eliminate duplications in $postdeps and $predeps 118435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_duplicate_compiler_generated_deps=: 118535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 118635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 118735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 118835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 118935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 1190b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 119135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_help || { 119235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Sanity checks first: 119335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_check_version_match 1194b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 119535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 119635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_configuration "not configured to build any kind of library" 119735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 1198b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 119935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Darwin sucks 120035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval std_shrext=\"$shrext_cmds\" 1201b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 120235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Only execute mode is allowed to have -dlopen flags. 120335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 120435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "unrecognized option \`-dlopen'" 120535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$help" 1>&2 120635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_FAILURE 120735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 1208b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 120935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Change the help message to a mode-specific one. 121035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes generic_help="$help" 121135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes help="Try \`$progname --help --mode=$opt_mode' for more information." 121235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 1213b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1214b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 121535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Bail if the options were screwed 121635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $exit_cmd $EXIT_FAILURE 121735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1218b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1219b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1220b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1221b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 122235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes## ----------- ## 122335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes## Main. ## 122435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes## ----------- ## 1225b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 122635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_lalib_p file 122735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# True iff FILE is a libtool `.la' library or `.lo' object file. 122835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This function is only a basic sanity check; it will hardly flush out 122935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# determined imposters. 123035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_lalib_p () 123135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 123235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -f "$1" && 123335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -e 4q "$1" 2>/dev/null \ 123435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 123535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1236b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 123735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_lalib_unsafe_p file 123835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# True iff FILE is a libtool `.la' library or `.lo' object file. 123935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This function implements the same check as func_lalib_p without 124035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# resorting to external programs. To this end, it redirects stdin and 124135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# closes it afterwards, without saving the original file descriptor. 124235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# As a safety measure, use it only where a negative result would be 124335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# fatal anyway. Works if `file' does not exist. 124435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_lalib_unsafe_p () 124535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 124635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lalib_p=no 124735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 124835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lalib_p_l in 1 2 3 4 124935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 125035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes read lalib_p_line 125135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$lalib_p_line" in 125235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 125335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 125435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 125535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exec 0<&5 5<&- 125635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 125735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$lalib_p" = yes 125835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1259b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 126035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_ltwrapper_script_p file 126135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# True iff FILE is a libtool wrapper script 126235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This function is only a basic sanity check; it will hardly flush out 126335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# determined imposters. 126435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_ltwrapper_script_p () 126535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 126635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lalib_p "$1" 126735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1268b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 126935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_ltwrapper_executable_p file 127035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# True iff FILE is a libtool wrapper executable 127135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This function is only a basic sanity check; it will hardly flush out 127235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# determined imposters. 127335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_ltwrapper_executable_p () 127435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 127535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_ltwrapper_exec_suffix= 127635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $1 in 127735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.exe) ;; 127835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_ltwrapper_exec_suffix=.exe ;; 127935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 128035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 128135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1282b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 128335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_ltwrapper_scriptname file 128435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Assumes file is an ltwrapper_executable 128535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# uses $file to determine the appropriate filename for a 128635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# temporary ltwrapper_script. 128735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_ltwrapper_scriptname () 128835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 128935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname_and_basename "$1" "" "." 129035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '.exe' "$func_basename_result" 129135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 129235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1293b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 129435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_ltwrapper_p file 129535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# True iff FILE is a libtool wrapper script or wrapper executable 129635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This function is only a basic sanity check; it will hardly flush out 129735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# determined imposters. 129835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_ltwrapper_p () 129935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 130035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 130135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1302b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1303b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 130435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_execute_cmds commands fail_cmd 130535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Execute tilde-delimited COMMANDS. 130635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# If FAIL_CMD is given, eval that upon failure. 130735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# FAIL_CMD may read-access the current command in variable CMD! 130835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_execute_cmds () 130935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 131035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 131135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_ifs=$IFS; IFS='~' 131235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for cmd in $1; do 131335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS=$save_ifs 131435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval cmd=\"$cmd\" 131535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$cmd" "${2-:}" 131635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 131735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS=$save_ifs 131835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1319b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1320b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 132135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_source file 132235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Source FILE, adding directory component if necessary. 132335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Note that it is not necessary on cygwin/mingw to append a dot to 132435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 132535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# behavior happens only for exec(3), not for open(2)! Also, sourcing 132635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# `FILE.' does not work on cygwin managed mounts. 132735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_source () 132835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 132935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 133035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $1 in 133135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes */* | *\\*) . "$1" ;; 133235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) . "./$1" ;; 133335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 133435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1335b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1336b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 133735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_resolve_sysroot PATH 133835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Replace a leading = in PATH with a sysroot. Store the result into 133935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_resolve_sysroot_result 134035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_resolve_sysroot () 134135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 134235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot_result=$1 134335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $func_resolve_sysroot_result in 134435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes =*) 134535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '=' '' "$func_resolve_sysroot_result" 134635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 1347b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 134835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 134935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1350b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 135135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_replace_sysroot PATH 135235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# If PATH begins with the sysroot, replace it with = and 135335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# store the result into func_replace_sysroot_result. 135435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_replace_sysroot () 135535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 135635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$lt_sysroot:$1" in 135735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ?*:"$lt_sysroot"*) 135835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname "$lt_sysroot" '' "$1" 135935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_replace_sysroot_result="=$func_stripname_result" 136035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 136135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 136235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Including no sysroot. 136335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_replace_sysroot_result=$1 136435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 136535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 136635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1367b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 136835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_infer_tag arg 136935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Infer tagged configuration to use if any are available and 137035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# if one wasn't chosen via the "--tag" command line option. 137135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Only attempt this if the compiler in the base compile 137235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# command doesn't match the default compiler. 137335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# arg is usually of the form 'gcc ...' 137435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_infer_tag () 137535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 137635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 137735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$available_tags" && test -z "$tagname"; then 137835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes CC_quoted= 137935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for arg in $CC; do 138035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append_quoted CC_quoted "$arg" 138135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 138235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes CC_expanded=`func_echo_all $CC` 138335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes CC_quoted_expanded=`func_echo_all $CC_quoted` 138435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $@ in 138535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Blanks in the command may have been stripped by the calling shell, 138635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # but not from the CC environment variable when configure was run. 138735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 138835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 138935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Blanks at the start of $base_compile will cause this to fail 139035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # if we don't check for them as well. 139135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 139235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for z in $available_tags; do 139335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 139435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Evaluate the configuration. 139535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 139635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes CC_quoted= 139735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for arg in $CC; do 139835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Double-quote args containing other shell metacharacters. 139935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append_quoted CC_quoted "$arg" 140035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 140135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes CC_expanded=`func_echo_all $CC` 140235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes CC_quoted_expanded=`func_echo_all $CC_quoted` 140335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$@ " in 140435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 140535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 140635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The compiler in the base compile command matches 140735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the one in the tagged configuration. 140835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Assume this is the tagged configuration we want. 140935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tagname=$z 141035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 141135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 141235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 1413b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 141435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 141535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If $tagname still isn't set, then no tagged configuration 141635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # was found and let the user know that the "--tag" command 141735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # line option must be used. 141835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$tagname"; then 141935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_echo "unable to infer tagged configuration" 142035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "specify a tag with \`--tag'" 142135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# else 142235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_verbose "using $tagname tagged configuration" 1423b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 1424b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 1425b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 142635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 142735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1428b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1429b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1430b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 143135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_write_libtool_object output_name pic_name nonpic_name 143235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Create a libtool object file (analogous to a ".la" file), 143335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# but don't create it if we're doing a dry run. 143435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_write_libtool_object () 143535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 143635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes write_libobj=${1} 143735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = yes; then 143835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes write_lobj=\'${2}\' 143935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 144035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes write_lobj=none 144135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 1442b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 144335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_old_libs" = yes; then 144435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes write_oldobj=\'${3}\' 144535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 144635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes write_oldobj=none 144735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 1448b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 144935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 145035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat >${write_libobj}T <<EOF 145135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $write_libobj - a libtool object file 145235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 145335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 145435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Please DO NOT delete this file! 145535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# It is necessary for linking the library. 1456b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 145735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Name of the PIC object. 145835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughespic_object=$write_lobj 1459b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 146035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Name of the non-PIC object 146135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesnon_pic_object=$write_oldobj 1462b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 146335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 146435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $MV "${write_libobj}T" "${write_libobj}" 146535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 146635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1467b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1468b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 146935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes################################################## 147035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 147135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes################################################## 1472b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 147335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_core_file_wine_to_w32 ARG 147435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Helper function used by file name conversion functions when $build is *nix, 147535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# and $host is mingw, cygwin, or some other w32 environment. Relies on a 147635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# correctly configured wine environment available, with the winepath program 147735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# in $build's $PATH. 147835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 147935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ARG is the $build file name to be converted to w32 format. 148035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Result is available in $func_convert_core_file_wine_to_w32_result, and will 148135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# be empty on error (or when ARG is empty) 148235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_core_file_wine_to_w32 () 148335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 148435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 148535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_file_wine_to_w32_result="$1" 148635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 148735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Unfortunately, winepath does not exit with a non-zero error code, so we 148835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # are forced to check the contents of stdout. On the other hand, if the 148935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # command is not found, the shell will set an exit code of 127 and print 149035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # *an error message* to stdout. So we must check for both error code of 149135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # zero AND non-empty stdout, which explains the odd construction: 149235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 149335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 149435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 149535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -e "$lt_sed_naive_backslashify"` 149635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 149735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_file_wine_to_w32_result= 149835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 149935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 150035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 150135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end: func_convert_core_file_wine_to_w32 1502b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1503b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 150435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_core_path_wine_to_w32 ARG 150535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Helper function used by path conversion functions when $build is *nix, and 150635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 150735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# configured wine environment available, with the winepath program in $build's 150835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $PATH. Assumes ARG has no leading or trailing path separator characters. 150935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 151035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ARG is path to be converted from $build format to win32. 151135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Result is available in $func_convert_core_path_wine_to_w32_result. 151235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Unconvertible file (directory) names in ARG are skipped; if no directory names 151335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# are convertible, then the result may be empty. 151435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_core_path_wine_to_w32 () 151535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 151635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 151735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # unfortunately, winepath doesn't convert paths, only file names 151835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_path_wine_to_w32_result="" 151935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 152035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldIFS=$IFS 152135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS=: 152235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for func_convert_core_path_wine_to_w32_f in $1; do 152335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS=$oldIFS 152435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 152535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$func_convert_core_file_wine_to_w32_result" ; then 152635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$func_convert_core_path_wine_to_w32_result"; then 152735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 152835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 152935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 153035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 153135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 153235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 153335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS=$oldIFS 153435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 153535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 153635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end: func_convert_core_path_wine_to_w32 153735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 153835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 153935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_cygpath ARGS... 154035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 154135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 154235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 154335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# (2), returns the Cygwin file name or path in func_cygpath_result (input 154435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# file name or path is assumed to be in w32 format, as previously converted 154535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# from $build's *nix or MSYS format). In case (3), returns the w32 file name 154635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# or path in func_cygpath_result (input file name or path is assumed to be in 154735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Cygwin format). Returns an empty string on error. 154835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 154935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ARGS are passed to cygpath, with the last one being the file name or path to 155035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# be converted. 155135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 155235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 155335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# environment variable; do not put it in $PATH. 155435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_cygpath () 155535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 155635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 155735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 155835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 155935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$?" -ne 0; then 156035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # on failure, ensure result is empty 156135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_cygpath_result= 156235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 156335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 156435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_cygpath_result= 156535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 156635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 156735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 156835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#end: func_cygpath 1569b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1570b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 157135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_core_msys_to_w32 ARG 157235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert file name or path ARG from MSYS format to w32 format. Return 157335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# result in func_convert_core_msys_to_w32_result. 157435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_core_msys_to_w32 () 157535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 157635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 157735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # awkward: cmd appends spaces to result 157835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 157935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 158035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 158135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#end: func_convert_core_msys_to_w32 1582b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1583b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 158435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_file_check ARG1 ARG2 158535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Verify that ARG1 (a file name in $build format) was converted to $host 158635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# format in ARG2. Otherwise, emit an error message, but continue (resetting 158735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_to_host_file_result to ARG1). 158835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_file_check () 158935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 159035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 159135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$2" && test -n "$1" ; then 159235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "Could not determine host file name corresponding to" 159335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error " \`$1'" 159435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "Continuing, but uninstalled executables may not work." 159535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Fallback: 159635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$1" 159735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 159835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 159935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_file_check 1600b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1601b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 160235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 160335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Verify that FROM_PATH (a path in $build format) was converted to $host 160435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 160535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_to_host_file_result to a simplistic fallback value (see below). 160635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_path_check () 160735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 160835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 160935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$4" && test -n "$3"; then 161035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "Could not determine the host path corresponding to" 161135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error " \`$3'" 161235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "Continuing, but uninstalled executables may not work." 161335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Fallback. This is a deliberately simplistic "conversion" and 161435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # should not be "improved". See libtool.info. 161535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "x$1" != "x$2"; then 161635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_replace_pathsep_chars="s|$1|$2|g" 161735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result=`echo "$3" | 161835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -e "$lt_replace_pathsep_chars"` 161935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 162035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$3" 162135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 162235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 162335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 162435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_path_check 1625b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1626b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 162735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 162835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 162935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# and appending REPL if ORIG matches BACKPAT. 163035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_path_front_back_pathsep () 163135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 163235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 163335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $4 in 163435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $1 ) func_to_host_path_result="$3$func_to_host_path_result" 163535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 163635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 163735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $4 in 163835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $2 ) func_append func_to_host_path_result "$3" 163935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 164035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 164135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 164235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_path_front_back_pathsep 1643b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1644b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 164535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes################################################## 164635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $build to $host FILE NAME CONVERSION FUNCTIONS # 164735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes################################################## 164835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# invoked via `$to_host_file_cmd ARG' 164935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 165035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# In each case, ARG is the path to be converted from $build to $host format. 165135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Result will be available in $func_to_host_file_result. 1652b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1653b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 165435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_to_host_file ARG 165535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Converts the file name ARG from $build format to $host format. Return result 165635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# in func_to_host_file_result. 165735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_to_host_file () 165835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 165935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 166035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $to_host_file_cmd "$1" 166135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 166235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_to_host_file 1663b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1664b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 166535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_to_tool_file ARG LAZY 166635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# converts the file name ARG from $build format to toolchain format. Return 166735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# result in func_to_tool_file_result. If the conversion in use is listed 166835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# in (the comma separated) LAZY, no conversion takes place. 166935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_to_tool_file () 167035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 167135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 167235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case ,$2, in 167335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *,"$to_tool_file_cmd",*) 167435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file_result=$1 167535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 167635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 167735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $to_tool_file_cmd "$1" 167835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file_result=$func_to_host_file_result 167935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 168035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 168135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 168235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_to_tool_file 1683b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1684b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 168535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_file_noop ARG 168635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Copy ARG to func_to_host_file_result. 168735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_file_noop () 168835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 168935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$1" 169035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 169135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_file_noop 1692b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1693b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 169435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_file_msys_to_w32 ARG 169535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 169635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# conversion to w32 is not available inside the cwrapper. Returns result in 169735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_to_host_file_result. 169835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_file_msys_to_w32 () 169935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 170035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 170135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$1" 170235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 170335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_msys_to_w32 "$1" 170435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$func_convert_core_msys_to_w32_result" 170535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 170635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_file_check "$1" "$func_to_host_file_result" 170735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 170835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_file_msys_to_w32 1709b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1710b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 171135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_file_cygwin_to_w32 ARG 171235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert file name ARG from Cygwin to w32 format. Returns result in 171335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_to_host_file_result. 171435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_file_cygwin_to_w32 () 171535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 171635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 171735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$1" 171835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 171935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 172035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # LT_CYGPATH in this case. 172135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result=`cygpath -m "$1"` 172235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 172335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_file_check "$1" "$func_to_host_file_result" 172435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 172535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_file_cygwin_to_w32 1726b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1727b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 172835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_file_nix_to_w32 ARG 172935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert file name ARG from *nix to w32 format. Requires a wine environment 173035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# and a working winepath. Returns result in func_to_host_file_result. 173135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_file_nix_to_w32 () 173235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 173335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 173435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$1" 173535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 173635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_file_wine_to_w32 "$1" 173735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 173835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 173935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_file_check "$1" "$func_to_host_file_result" 174035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 174135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_file_nix_to_w32 1742b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1743b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 174435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_file_msys_to_cygwin ARG 174535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 174635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Returns result in func_to_host_file_result. 174735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_file_msys_to_cygwin () 174835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 174935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 175035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$1" 175135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 175235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_msys_to_w32 "$1" 175335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_cygpath -u "$func_convert_core_msys_to_w32_result" 175435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$func_cygpath_result" 175535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 175635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_file_check "$1" "$func_to_host_file_result" 175735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 175835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_file_msys_to_cygwin 1759b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1760b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 176135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_file_nix_to_cygwin ARG 176235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 176335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 176435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# in func_to_host_file_result. 176535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_file_nix_to_cygwin () 176635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 176735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 176835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$1" 176935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 177035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 177135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_file_wine_to_w32 "$1" 177235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 177335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_file_result="$func_cygpath_result" 177435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 177535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_file_check "$1" "$func_to_host_file_result" 177635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 177735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_file_nix_to_cygwin 1778b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 1779b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 178035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes############################################# 178135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $build to $host PATH CONVERSION FUNCTIONS # 178235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes############################################# 178335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# invoked via `$to_host_path_cmd ARG' 178435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 178535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# In each case, ARG is the path to be converted from $build to $host format. 178635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# The result will be available in $func_to_host_path_result. 178735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 178835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Path separators are also converted from $build format to $host format. If 178935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ARG begins or ends with a path separator character, it is preserved (but 179035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# converted to $host format) on output. 179135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 179235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# All path conversion functions are named using the following convention: 179335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# file name conversion function : func_convert_file_X_to_Y () 179435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# path conversion function : func_convert_path_X_to_Y () 179535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# where, for any given $build/$host combination the 'X_to_Y' value is the 179635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# same. If conversion functions are added for new $build/$host combinations, 179735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# the two new functions must follow this pattern, or func_init_to_host_path_cmd 179835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# will break. 179935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 180035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 180135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_init_to_host_path_cmd 180235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Ensures that function "pointer" variable $to_host_path_cmd is set to the 180335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# appropriate value, based on the value of $to_host_file_cmd. 180435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesto_host_path_cmd= 180535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_init_to_host_path_cmd () 180635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 180735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 180835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$to_host_path_cmd"; then 180935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 181035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes to_host_path_cmd="func_convert_path_${func_stripname_result}" 181135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 181235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 1813b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 181435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 181535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_to_host_path ARG 181635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Converts the path ARG from $build format to $host format. Return result 181735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# in func_to_host_path_result. 181835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_to_host_path () 181935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 182035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 182135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_init_to_host_path_cmd 182235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $to_host_path_cmd "$1" 182335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 182435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_to_host_path 182535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 182635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 182735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_path_noop ARG 182835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Copy ARG to func_to_host_path_result. 182935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_path_noop () 183035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 183135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$1" 183235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 183335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_path_noop 183435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 183535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 183635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_path_msys_to_w32 ARG 183735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 183835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# conversion to w32 is not available inside the cwrapper. Returns result in 183935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_to_host_path_result. 184035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_path_msys_to_w32 () 184135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 184235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 184335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$1" 184435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 184535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remove leading and trailing path separator characters from ARG. MSYS 184635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 184735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # and winepath ignores them completely. 184835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname : : "$1" 184935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_tmp1=$func_stripname_result 185035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 185135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$func_convert_core_msys_to_w32_result" 185235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_path_check : ";" \ 185335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "$func_to_host_path_tmp1" "$func_to_host_path_result" 185435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 185535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 185635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 185735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_path_msys_to_w32 185835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 185935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 186035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_path_cygwin_to_w32 ARG 186135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert path ARG from Cygwin to w32 format. Returns result in 186235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_to_host_file_result. 186335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_path_cygwin_to_w32 () 186435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 186535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 186635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$1" 186735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 186835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # See func_convert_path_msys_to_w32: 186935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname : : "$1" 187035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_tmp1=$func_stripname_result 187135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 187235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_path_check : ";" \ 187335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "$func_to_host_path_tmp1" "$func_to_host_path_result" 187435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 187535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 187635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 187735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_path_cygwin_to_w32 187835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 187935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 188035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_path_nix_to_w32 ARG 188135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert path ARG from *nix to w32 format. Requires a wine environment and 188235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# a working winepath. Returns result in func_to_host_file_result. 188335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_path_nix_to_w32 () 188435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 188535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 188635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$1" 188735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 188835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # See func_convert_path_msys_to_w32: 188935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname : : "$1" 189035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_tmp1=$func_stripname_result 189135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 189235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 189335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_path_check : ";" \ 189435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "$func_to_host_path_tmp1" "$func_to_host_path_result" 189535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 189635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 189735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 189835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_path_nix_to_w32 189935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 190035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 190135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_path_msys_to_cygwin ARG 190235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 190335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Returns result in func_to_host_file_result. 190435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_path_msys_to_cygwin () 190535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 190635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 190735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$1" 190835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 190935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # See func_convert_path_msys_to_w32: 191035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname : : "$1" 191135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_tmp1=$func_stripname_result 191235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 191335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 191435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$func_cygpath_result" 191535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_path_check : : \ 191635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "$func_to_host_path_tmp1" "$func_to_host_path_result" 191735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_path_front_back_pathsep ":*" "*:" : "$1" 191835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 191935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 192035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_path_msys_to_cygwin 192135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 192235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 192335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_convert_path_nix_to_cygwin ARG 192435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 192535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 192635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_to_host_file_result. 192735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_convert_path_nix_to_cygwin () 192835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 192935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 193035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$1" 193135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 193235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remove leading and trailing path separator characters from 193335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # ARG. msys behavior is inconsistent here, cygpath turns them 193435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # into '.;' and ';.', and winepath ignores them completely. 193535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname : : "$1" 193635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_tmp1=$func_stripname_result 193735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 193835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 193935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path_result="$func_cygpath_result" 194035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_path_check : : \ 194135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "$func_to_host_path_tmp1" "$func_to_host_path_result" 194235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_convert_path_front_back_pathsep ":*" "*:" : "$1" 194335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 194435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 194535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end func_convert_path_nix_to_cygwin 194635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 194735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 194835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_mode_compile arg... 194935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_mode_compile () 195035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 195135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 195235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Get the compilation command and the source file. 195335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes base_compile= 195435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes srcfile="$nonopt" # always keep a non-empty value in "srcfile" 195535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes suppress_opt=yes 195635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes suppress_output= 195735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg_mode=normal 195835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobj= 195935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes later= 196035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pie_flag= 196135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 196235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for arg 196335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 196435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg_mode in 196535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg ) 196635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # do not "continue". Instead, add this to base_compile 196735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lastarg="$arg" 196835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg_mode=normal 1969b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 1970b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 197135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes target ) 197235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobj="$arg" 197335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg_mode=normal 1974b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project continue 1975b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 1976b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 197735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes normal ) 197835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Accept any command-line options. 197935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg in 198035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -o) 198135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$libobj" && \ 198235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "you cannot specify \`-o' more than once" 198335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg_mode=target 198435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 1985b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 1986b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 198735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -pie | -fpie | -fPIE) 198835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append pie_flag " $arg" 198935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 199035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 1991b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 199235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -shared | -static | -prefer-pic | -prefer-non-pic) 199335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append later " $arg" 199435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 199535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 1996b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 199735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -no-suppress) 199835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes suppress_opt=no 199935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 200035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 2001b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 200235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Xcompiler) 200335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg_mode=arg # the next one goes into the "base_compile" arg list 200435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue # The current "srcfile" will either be retained or 200535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; # replaced later. I would guess that would be a bug. 2006b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 200735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Wc,*) 200835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '-Wc,' '' "$arg" 200935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes args=$func_stripname_result 201035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lastarg= 201135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_ifs="$IFS"; IFS=',' 201235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for arg in $args; do 201335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 201435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append_quoted lastarg "$arg" 201535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 2016b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project IFS="$save_ifs" 201735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname ' ' '' "$lastarg" 201835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lastarg=$func_stripname_result 201935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 202035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add the arguments to base_compile. 202135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append base_compile " $lastarg" 202235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 202335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 202435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 202535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 202635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Accept the current argument as the source file. 202735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The previous "srcfile" becomes the current argument. 202835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # 202935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lastarg="$srcfile" 203035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes srcfile="$arg" 203135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 203235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac # case $arg 2033b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 203435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac # case $arg_mode 2035b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 203635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Aesthetically quote the previous argument. 203735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append_quoted base_compile "$lastarg" 203835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done # for arg 203935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 204035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg_mode in 204135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg) 204235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "you must specify an argument for -Xcompile" 204335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 204435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes target) 204535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "you must specify a target with \`-o'" 204635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 204735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 204835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Get the name of the library object. 204935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$libobj" && { 205035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$srcfile" 205135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobj="$func_basename_result" 205235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 205335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 205435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 205535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 205635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Recognize several different file suffixes. 205735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the user specifies -o file.o, it is replaced with file.lo 205835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $libobj in 205935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.[cCFSifmso] | \ 206035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.ada | *.adb | *.ads | *.asm | \ 206135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 206235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) 206335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_xform "$libobj" 206435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobj=$func_xform_result 206535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 206635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 206735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 206835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $libobj in 206935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 207035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 207135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot determine name of library object from \`$libobj'" 207235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 207335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 207435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 207535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_infer_tag $base_compile 207635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 207735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for arg in $later; do 207835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg in 207935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -shared) 208035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$build_libtool_libs" != yes && \ 208135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_configuration "can not build a shared library" 208235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_old_libs=no 2083b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project continue 2084b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 2085b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 208635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -static) 208735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=no 208835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_old_libs=yes 2089b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project continue 2090b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 2091b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 209235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -prefer-pic) 209335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_mode=yes 2094b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project continue 2095b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 2096b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 209735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -prefer-non-pic) 209835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_mode=no 209935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 2100b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 210135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 210235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 2103b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 210435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$libobj" 210535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$libobj" != "X$func_quote_for_eval_result" \ 210635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 210735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes && func_warning "libobj name \`$libobj' may not contain shell special characters." 210835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname_and_basename "$obj" "/" "" 210935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes objname="$func_basename_result" 211035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes xdir="$func_dirname_result" 211135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lobj=${xdir}$objdir/$objname 2112b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 211335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$base_compile" && \ 211435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "you must specify a compilation command" 2115b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 211635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Delete any leftover library objects. 211735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_old_libs" = yes; then 211835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes removelist="$obj $lobj $libobj ${libobj}T" 211935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 212035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes removelist="$lobj $libobj ${libobj}T" 212135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2122b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 212335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # On Cygwin there's no "real" PIC flag so we must build both object types 212435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host_os in 212535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cygwin* | mingw* | pw32* | os2* | cegcc*) 212635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_mode=default 212735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 212835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 212935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 213035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # non-PIC code in shared libraries is not supported 213135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_mode=default 213235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2133b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 213435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Calculate the filename of the output object if compiler does 213535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # not support -o with -c 213635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$compiler_c_o" = no; then 213735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 213835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lockfile="$output_obj.lock" 213935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 214035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output_obj= 214135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes need_locks=no 214235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lockfile= 214335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2144b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 214535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Lock this critical section if it is needed 214635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We use this script file to make the link, it avoids creating a new file 214735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$need_locks" = yes; then 214835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 214935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_echo "Waiting for $lockfile to be removed" 215035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sleep 2 215135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 215235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$need_locks" = warn; then 215335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$lockfile"; then 215435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 215535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes*** ERROR, $lockfile exists and contains: 215635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes`cat $lockfile 2>/dev/null` 2157b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 215835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThis indicates that another process is trying to use the same 215935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestemporary object file, and libtool could not work around it because 216035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesyour compiler does not support \`-c' and \`-o' together. If you 216135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesrepeat this compilation, it may succeed, by chance, but you had better 216235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesavoid parallel builds (make -j) in this platform, or get a better 216335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescompiler." 2164b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 216535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM $removelist 216635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_FAILURE 216735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 216835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append removelist " $output_obj" 216935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$srcfile" > "$lockfile" 217035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2171b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 217235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM $removelist 217335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append removelist " $lockfile" 217435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 2175b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 217635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 217735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes srcfile=$func_to_tool_file_result 217835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$srcfile" 217935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes qsrcfile=$func_quote_for_eval_result 2180b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 218135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Only build a PIC object if we are building libtool libraries. 218235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = yes; then 218335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Without this assignment, base_compile gets emptied. 218435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fbsd_hideous_sh_bug=$base_compile 2185b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 218635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pic_mode" != no; then 218735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes command="$base_compile $qsrcfile $pic_flag" 218835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 218935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Don't build PIC code 219035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes command="$base_compile $qsrcfile" 219135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2192b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 219335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_mkdir_p "$xdir$objdir" 2194b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 219535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$output_obj"; then 219635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Place PIC objects in $objdir 219735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append command " -o $lobj" 219835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2199b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 220035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval_locale "$command" \ 220135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 2202b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 220335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$need_locks" = warn && 220435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 220535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 220635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes*** ERROR, $lockfile contains: 220735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes`cat $lockfile 2>/dev/null` 2208b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 220935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesbut it should contain: 221035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$srcfile 2211b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 221235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThis indicates that another process is trying to use the same 221335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestemporary object file, and libtool could not work around it because 221435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesyour compiler does not support \`-c' and \`-o' together. If you 221535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesrepeat this compilation, it may succeed, by chance, but you had better 221635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesavoid parallel builds (make -j) in this platform, or get a better 221735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescompiler." 2218b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 221935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM $removelist 222035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_FAILURE 2221b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2222b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 222335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Just move the object if needed, then go on to compile the next one 222435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 222535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '$MV "$output_obj" "$lobj"' \ 222635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 222735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2228b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 222935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Allow error messages only from the first compilation. 223035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$suppress_opt" = yes; then 223135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes suppress_output=' >/dev/null 2>&1' 223235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2233b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2234b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 223535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Only build a position-dependent object if we build old libraries. 223635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_old_libs" = yes; then 223735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pic_mode" != yes; then 223835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Don't build PIC code 223935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes command="$base_compile $qsrcfile$pie_flag" 224035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 224135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes command="$base_compile $qsrcfile $pic_flag" 224235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 224335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$compiler_c_o" = yes; then 224435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append command " -o $obj" 224535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2246b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 224735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Suppress compiler output if we already did a PIC compilation. 224835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append command "$suppress_output" 224935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval_locale "$command" \ 225035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 2251b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 225235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$need_locks" = warn && 225335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 225435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 225535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes*** ERROR, $lockfile contains: 225635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes`cat $lockfile 2>/dev/null` 2257b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 225835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesbut it should contain: 225935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$srcfile 2260b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 226135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThis indicates that another process is trying to use the same 226235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestemporary object file, and libtool could not work around it because 226335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesyour compiler does not support \`-c' and \`-o' together. If you 226435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesrepeat this compilation, it may succeed, by chance, but you had better 226535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesavoid parallel builds (make -j) in this platform, or get a better 226635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescompiler." 2267b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 226835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM $removelist 226935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_FAILURE 2270b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2271b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 227235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Just move the object if needed 227335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 227435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '$MV "$output_obj" "$obj"' \ 227535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2276b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2277b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2278b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 227935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 228035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 228135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 228235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Unlock the critical section if it was locked 228335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$need_locks" != no; then 228435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes removelist=$lockfile 228535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM "$lockfile" 2286b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 228735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 2288b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 228935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 229035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 2291b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 229235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes$opt_help || { 229335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 229435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 2295b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 229635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_mode_help () 229735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 229835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We need to display help for each of the modes. 229935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $opt_mode in 230035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "") 230135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Generic help is extracted from the usage comments 230235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # at the start of this file. 230335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_help 230435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 2305b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 230635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes clean) 230735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO \ 230835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 2309b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 231035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesRemove files from the build directory. 2311b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 231235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesRM is the name of the program to use to delete files associated with each FILE 231335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 231435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesto RM. 2315b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 231635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesIf FILE is a libtool library, object or program, all the files associated 231735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheswith it are deleted. Otherwise, only FILE itself is deleted using RM." 231835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 2319b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 232035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile) 232135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO \ 232235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2323b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 232435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesCompile a source file into a libtool library object. 2325b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 232635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThis mode accepts the following additional options: 2327b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 232835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -o OUTPUT-FILE set the output file name to OUTPUT-FILE 232935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -no-suppress do not suppress compiler output for multiple passes 233035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -prefer-pic try to build PIC objects only 233135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -prefer-non-pic try to build non-PIC objects only 233235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -shared do not build a \`.o' file suitable for static linking 233335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -static only build a \`.o' file suitable for static linking 233435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Wc,FLAG pass FLAG directly to the compiler 2335b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 233635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 233735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfrom the given SOURCEFILE. 2338b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 233935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThe output file name is determined by removing the directory component from 234035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesSOURCEFILE, then substituting the C source code suffix \`.c' with the 234135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslibrary object suffix, \`.lo'." 234235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 2343b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 234435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes execute) 234535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO \ 234635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 2347b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 234835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesAutomatically set library path, then run a program. 2349b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 235035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThis mode accepts the following additional options: 2351b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 235235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -dlopen FILE add the directory containing FILE to the library path 2353b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 235435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThis mode sets the library path environment variable according to \`-dlopen' 235535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesflags. 2356b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 235735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesIf any of the ARGS are libtool executable wrappers, then they are translated 235835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesinto their corresponding uninstalled binary, and any of their required library 235935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesdirectories are added to the library path. 2360b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 236135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThen, COMMAND is executed, with ARGS as arguments." 236235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 2363b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 236435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finish) 236535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO \ 236635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 2367b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 236835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesComplete the installation of libtool libraries. 2369b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 237035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEach LIBDIR is a directory that contains libtool libraries. 2371b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 237235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThe commands that this mode executes may require superuser privileges. Use 237335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesthe \`--dry-run' option if you just want to see what would be executed." 237435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 2375b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 237635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes install) 237735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO \ 237835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 2379b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 238035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesInstall executables or libraries. 2381b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 238235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesINSTALL-COMMAND is the installation command. The first component should be 238335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheseither the \`install' or \`cp' program. 2384b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 238535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThe following components of INSTALL-COMMAND are treated specially: 2386b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 238735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 2388b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 238935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThe rest of the components are interpreted as arguments to that command (only 239035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesBSD-compatible install options are recognized)." 239135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 2392b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 239335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link) 239435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO \ 239535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 2396b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 239735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesLink object files or libraries together to form another library, or to 239835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescreate an executable program. 2399b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 240035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesLINK-COMMAND is a command using the C compiler that you would use to create 240135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesa program from several object files. 2402b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 240335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesThe following components of LINK-COMMAND are treated specially: 2404b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 240535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -all-static do not do any dynamic linking at all 240635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -avoid-version do not add a version suffix if possible 240735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -bindir BINDIR specify path to binaries directory (for systems where 240835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libraries must be found in the PATH setting at runtime) 240935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 241035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 241135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 241235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -export-symbols SYMFILE 241335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes try to export only the symbols listed in SYMFILE 241435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -export-symbols-regex REGEX 241535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes try to export only the symbols matching REGEX 241635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -LLIBDIR search LIBDIR for required installed libraries 241735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -lNAME OUTPUT-FILE requires the installed library libNAME 241835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -module build a library that can dlopened 241935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -no-fast-install disable the fast-install mode 242035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -no-install link a not-installable executable 242135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -no-undefined declare that a library does not refer to external symbols 242235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 242335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -objectlist FILE Use a list of object files found in FILE to specify objects 242435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -precious-files-regex REGEX 242535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes don't remove output files matching REGEX 242635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -release RELEASE specify package release information 242735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -rpath LIBDIR the created library will eventually be installed in LIBDIR 242835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 242935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -shared only do dynamic linking of libtool libraries 243035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -shrext SUFFIX override the standard shared library file extension 243135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -static do not do any dynamic linking of uninstalled libtool libraries 243235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -static-libtool-libs 243335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do not do any dynamic linking of libtool libraries 243435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -version-info CURRENT[:REVISION[:AGE]] 243535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes specify library version info [each variable defaults to 0] 243635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -weak LIBNAME declare that the target provides the LIBNAME interface 243735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Wc,FLAG 243835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 243935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Wl,FLAG 244035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Xlinker FLAG pass linker-specific FLAG directly to the linker 244135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 2442b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 244335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesAll other options (arguments beginning with \`-') are ignored. 244435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 244535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEvery other argument is treated as a filename. Files ending in \`.la' are 244635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestreated as uninstalled libtool libraries, other files are standard or library 244735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesobject files. 244835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 244935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 245035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesonly library objects (\`.lo' files) may be specified, and \`-rpath' is 245135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesrequired, except when creating a convenience library. 245235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 245335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 245435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesusing \`ar' and \`ranlib', or on Windows using \`lib'. 245535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 245635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 245735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesis created, otherwise an executable program is created." 245835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 245935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 246035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes uninstall) 246135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO \ 246235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 246335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 246435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesRemove libraries from an installation directory. 246535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 246635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesRM is the name of the program to use to delete files associated with each FILE 246735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 246835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesto RM. 246935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 247035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesIf FILE is a libtool library, all the files associated with it are deleted. 247135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesOtherwise, only FILE itself is deleted using RM." 247235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 247335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 247435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 247535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "invalid operation mode \`$opt_mode'" 247635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 247735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 247835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 247935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 248035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "Try \`$progname --help' for more information about other modes." 248135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 248235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 248335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Now that we've collected a possible --mode arg, show help if necessary 248435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesif $opt_help; then 248535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$opt_help" = :; then 248635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_mode_help 248735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 248835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 248935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_help noexit 249035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for opt_mode in compile link execute install finish uninstall clean; do 249135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_mode_help 249235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 249335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } | sed -n '1p; 2,$s/^Usage:/ or: /p' 249435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 249535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_help noexit 249635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for opt_mode in compile link execute install finish uninstall clean; do 249735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 249835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_mode_help 249935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 250035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } | 250135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sed '1d 250235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /^When reporting/,/^Report/{ 250335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes H 250435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes d 250535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 250635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $x 250735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /information about other modes/d 250835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /more detailed .*MODE/d 250935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 251035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 251135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $? 251235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfi 251335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 251435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 251535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_mode_execute arg... 251635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_mode_execute () 251735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 251835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 251935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The first argument is the command name. 252035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmd="$nonopt" 252135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$cmd" && \ 252235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "you must specify a COMMAND" 252335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 252435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Handle -dlopen flags immediately. 252535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for file in $opt_dlopen; do 252635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -f "$file" \ 252735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes || func_fatal_help "\`$file' is not a file" 252835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 252935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir= 253035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $file in 253135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) 253235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$file" 253335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file=$func_resolve_sysroot_result 253435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 253535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check to see that this really is a libtool archive. 253635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lalib_unsafe_p "$file" \ 253735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes || func_fatal_help "\`$lib' is not a valid libtool archive" 253835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 253935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Read the libtool library. 254035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlname= 254135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes library_names= 254235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$file" 254335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 254435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Skip this library if it cannot be dlopened. 254535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$dlname"; then 254635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Warn if it was a shared library. 254735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$library_names" && \ 254835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`$file' was not linked with \`-export-dynamic'" 254935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 2550b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2551b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 255235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$file" "" "." 255335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir="$func_dirname_result" 255435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 255535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$dir/$objdir/$dlname"; then 255635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dir "/$objdir" 2557b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 255835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test ! -f "$dir/$dlname"; then 255935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 256035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2561b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 256235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 2563b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 256435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.lo) 256535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Just add the directory containing the .lo file. 256635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$file" "" "." 256735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir="$func_dirname_result" 256835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 2569b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 257035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 257135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 257235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 257335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 257435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 2575b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 257635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Get the absolute pathname. 257735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes absdir=`cd "$dir" && pwd` 257835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$absdir" && dir="$absdir" 2579b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 258035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now add the directory to shlibpath_var. 258135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if eval "test -z \"\$$shlibpath_var\""; then 258235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$shlibpath_var=\"\$dir\"" 258335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 258435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2585b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 258635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 2587b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 258835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # This variable tells wrapper scripts just to set shlibpath_var 258935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # rather than running their programs. 259035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libtool_execute_magic="$magic" 259135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 259235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check if any of the arguments is a wrapper script. 259335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes args= 259435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for file 259535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 259635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $file in 259735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -* | *.la | *.lo ) ;; 259835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 259935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do a test to see if this is really a libtool program. 260035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_ltwrapper_script_p "$file"; then 260135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$file" 260235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Transform arg to wrapped name. 260335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file="$progdir/$program" 260435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif func_ltwrapper_executable_p "$file"; then 260535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_ltwrapper_scriptname "$file" 260635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$func_ltwrapper_scriptname_result" 260735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Transform arg to wrapped name. 260835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file="$progdir/$program" 260935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 261035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 261135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 261235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Quote arguments (to preserve shell metacharacters). 261335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append_quoted args "$file" 261435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 2615b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 261635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$opt_dry_run" = Xfalse; then 261735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$shlibpath_var"; then 261835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Export the shlibpath_var. 261935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "export $shlibpath_var" 2620b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2621b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 262235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Restore saved environment variables 262335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 262435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 262535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "if test \"\${save_$lt_var+set}\" = set; then 262635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $lt_var=\$save_$lt_var; export $lt_var 262735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 262835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $lt_unset $lt_var 262935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi" 263035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 263135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 263235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now prepare to actually exec the command. 263335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exec_cmd="\$cmd$args" 263435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 263535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Display what would be done. 263635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$shlibpath_var"; then 263735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 263835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "export $shlibpath_var" 2639b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 264035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$cmd$args" 264135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 264235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 264335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 2644b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 264535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 2646b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 2647b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 264835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_mode_finish arg... 264935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_mode_finish () 265035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 265135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 265235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libs= 265335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libdirs= 265435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes admincmds= 265535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 265635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for opt in "$nonopt" ${1+"$@"} 265735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 265835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -d "$opt"; then 265935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libdirs " $opt" 266035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 266135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test -f "$opt"; then 266235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_lalib_unsafe_p "$opt"; then 266335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libs " $opt" 2664b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 266535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`$opt' is not a valid libtool archive" 2666b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2667b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 266835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 266935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "invalid argument \`$opt'" 2670b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 267135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 2672b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 267335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$libs"; then 267435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$lt_sysroot"; then 267535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 267635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 267735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 267835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sysroot_cmd= 2679b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2680b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 268135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remove sysroot references 268235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $opt_dry_run; then 268335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lib in $libs; do 268435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 268535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 268635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 268735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmpdir=`func_mktempdir` 268835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lib in $libs; do 268935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 269035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes > $tmpdir/tmp-la 269135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes mv -f $tmpdir/tmp-la $lib 269235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 269335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ${RM}r "$tmpdir" 269435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 269535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2696b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 269735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 269835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for libdir in $libdirs; do 269935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$finish_cmds"; then 270035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do each command in the finish commands. 270135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 270235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes'"$cmd"'"' 2703b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 270435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$finish_eval"; then 270535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do the single finish_eval. 270635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval cmds=\"$finish_eval\" 270735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || eval "$cmds" || func_append admincmds " 270835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $cmds" 2709b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 271035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 271135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2712b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 271335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Exit here if they wanted silent mode. 271435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_silent && exit $EXIT_SUCCESS 2715b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 271635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 271735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "----------------------------------------------------------------------" 271835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "Libraries have been installed in:" 271935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for libdir in $libdirs; do 272035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO " $libdir" 272135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 272235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 272335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "If you ever happen to want to link against installed libraries" 272435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "in a given directory, LIBDIR, you must either use libtool, and" 272535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 272635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "flag during linking and do at least one of the following:" 272735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$shlibpath_var"; then 272835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 272935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo " during execution" 273035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 273135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$runpath_var"; then 273235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo " - add LIBDIR to the \`$runpath_var' environment variable" 273335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo " during linking" 273435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 273535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_flag_spec"; then 273635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libdir=LIBDIR 273735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval flag=\"$hardcode_libdir_flag_spec\" 2738b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 273935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO " - use the \`$flag' linker flag" 274035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 274135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$admincmds"; then 274235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO " - have your system administrator run these commands:$admincmds" 274335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 274435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f /etc/ld.so.conf; then 274535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 274635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 274735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 2748b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 274935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "See any operating system documentation about shared libraries for" 275035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 275135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes solaris2.[6789]|solaris2.1[0-9]) 275235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 275335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "pages." 2754b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 2755b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *) 275635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "more information, such as the ld(1) and ld.so(8) manual pages." 2757b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 275835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 275935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "----------------------------------------------------------------------" 276035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 276135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 276235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 2763b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 276435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 2765b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 2766b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 276735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_mode_install arg... 276835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_mode_install () 276935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 277035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 277135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # There may be an optional sh(1) argument at the beginning of 277235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # install_prog (especially on Windows NT). 277335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 277435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Allow the use of GNU shtool's install command. 277535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $nonopt in *shtool*) :;; *) false;; esac; then 277635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Aesthetically quote it. 277735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$nonopt" 277835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes install_prog="$func_quote_for_eval_result " 277935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg=$1 278035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 278135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 278235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes install_prog= 278335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg=$nonopt 278435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2785b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 278635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The real first argument should be the name of the installation program. 278735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Aesthetically quote it. 278835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$arg" 278935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append install_prog "$func_quote_for_eval_result" 279035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes install_shared_prog=$install_prog 279135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $install_prog " in 279235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[\\\ /]cp\ *) install_cp=: ;; 279335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) install_cp=false ;; 279435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 2795b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 279635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We need to accept at least all the BSD install flags. 279735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dest= 279835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes files= 279935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes opts= 280035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 280135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes install_type= 280235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes isdir=no 280335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes stripme= 280435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes no_mode=: 280535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for arg 280635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 280735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg2= 280835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dest"; then 280935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append files " $dest" 281035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dest=$arg 281135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 281235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2813b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 281435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg in 281535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -d) isdir=yes ;; 281635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -f) 281735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $install_cp; then :; else 281835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=$arg 281935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 282035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 282135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -g | -m | -o) 282235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=$arg 282335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 282435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -s) 282535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes stripme=" -s" 282635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 282735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 282835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -*) 282935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 283035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 283135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the previous option needed an argument, then skip it. 283235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$prev"; then 283335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "x$prev" = x-m && test -n "$install_override_mode"; then 283435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg2=$install_override_mode 283535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes no_mode=false 283635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 283735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 283835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 283935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dest=$arg 284035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 284135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 284235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 284335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 2844b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 284535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Aesthetically quote the argument. 284635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$arg" 284735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append install_prog " $func_quote_for_eval_result" 284835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$arg2"; then 284935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$arg2" 285035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 285135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append install_shared_prog " $func_quote_for_eval_result" 285235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 2853b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 285435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$install_prog" && \ 285535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "you must specify an install program" 2856b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 285735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$prev" && \ 285835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "the \`$prev' option requires an argument" 2859b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 286035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$install_override_mode" && $no_mode; then 286135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $install_cp; then :; else 286235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$install_override_mode" 286335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append install_shared_prog " -m $func_quote_for_eval_result" 286435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 286535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2866b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 286735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$files"; then 286835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$dest"; then 286935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "no file or destination specified" 287035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 287135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "you must specify a destination" 287235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 287335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 2874b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 287535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Strip any trailing slash from the destination. 287635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '/' "$dest" 287735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dest=$func_stripname_result 287835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 287935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check to see that the destination is a directory. 288035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -d "$dest" && isdir=yes 288135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$isdir" = yes; then 288235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destdir="$dest" 288335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destname= 288435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 288535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname_and_basename "$dest" "" "." 288635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destdir="$func_dirname_result" 288735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destname="$func_basename_result" 288835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 288935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Not a directory, so check to see that there is only one file specified. 289035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $files; shift 289135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$#" -gt 1 && \ 289235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "\`$dest' is not a directory" 289335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 289435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $destdir in 289535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]*) ;; 289635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 289735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for file in $files; do 289835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $file in 289935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.lo) ;; 290035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 290135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "\`$destdir' must be an absolute directory name" 2902b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 290335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 290435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 290535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 290635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 2907b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 290835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # This variable tells wrapper scripts just to set variables rather 290935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # than running their programs. 291035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libtool_install_magic="$magic" 2911b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 291235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes staticlibs= 291335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes future_libdirs= 291435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes current_libdirs= 291535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for file in $files; do 2916b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 291735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do each installation. 291835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $file in 291935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.$libext) 292035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do the static libraries later. 292135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append staticlibs " $file" 292235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 2923b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 292435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) 292535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$file" 292635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file=$func_resolve_sysroot_result 2927b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 292835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check to see that this really is a libtool archive. 292935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lalib_unsafe_p "$file" \ 293035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes || func_fatal_help "\`$file' is not a valid libtool archive" 2931b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 293235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes library_names= 293335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes old_library= 293435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command= 293535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$file" 2936b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 293735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add the libdir to current_libdirs if it is the destination. 293835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$destdir" = "X$libdir"; then 293935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$current_libdirs " in 294035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $libdir "*) ;; 294135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append current_libdirs " $libdir" ;; 294235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 294335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 294435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Note the libdir as a future libdir. 294535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$future_libdirs " in 294635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $libdir "*) ;; 294735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append future_libdirs " $libdir" ;; 2948b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 2949b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2950b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 295135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$file" "/" "" 295235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir="$func_dirname_result" 295335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dir "$objdir" 2954b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 295535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$relink_command"; then 295635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Determine the prefix the user has applied to our future dir. 295735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 295835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 295935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Don't allow the user to place us outside of our expected 296035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # location b/c this prevents finding dependent libraries that 296135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # are installed to the same prefix. 296235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # At present, this check doesn't affect windows .dll's that 296335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # are installed into $libdir/../bin (currently, that works fine) 296435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # but it's something to keep an eye on. 296535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$inst_prefix_dir" = "$destdir" && \ 296635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 296735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 296835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$inst_prefix_dir"; then 296935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Stick the inst_prefix_dir data into the link command. 297035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 297135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 297235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2973b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2974b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 297535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "relinking \`$file'" 297635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$relink_command" \ 297735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2978b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 2979b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 298035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # See the names of the shared library. 298135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $library_names; shift 298235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$1"; then 298335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes realname="$1" 298435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 2985b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 298635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes srcname="$realname" 298735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$relink_command" && srcname="$realname"T 2988b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 298935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Install the shared library and build the symlinks. 299035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 299135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 'exit $?' 299235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tstripme="$stripme" 299335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host_os in 299435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cygwin* | mingw* | pw32* | cegcc*) 299535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $realname in 299635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.dll.a) 299735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tstripme="" 299835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 299935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 300035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 3001b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 300235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$tstripme" && test -n "$striplib"; then 300335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$striplib $destdir/$realname" 'exit $?' 300435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 300535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 300635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$#" -gt 0; then 300735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Delete the old symlinks, and create new ones. 300835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Try `ln -sf' first, because the `ln' binary might depend on 300935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the symlink we replace! Solaris /bin/ln does not understand -f, 301035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # so we also need to try rm && ln -s. 301135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for linkname 301235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 301335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$linkname" != "$realname" \ 301435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 301535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 301635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 301735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 301835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do each command in the postinstall commands. 301935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib="$destdir/$realname" 302035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$postinstall_cmds" 'exit $?' 3021b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 3022b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 302335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Install the pseudo-library for information purposes. 302435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$file" 302535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name="$func_basename_result" 302635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes instname="$dir/$name"i 302735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 3028b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 302935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Maybe install the static library, too. 303035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$old_library" && func_append staticlibs " $dir/$old_library" 303135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 303235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 303335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.lo) 303435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Install (i.e. copy) a libtool object. 303535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 303635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Figure out destination file name, if it wasn't already specified. 303735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$destname"; then 303835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destfile="$destdir/$destname" 303935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 304035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$file" 304135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destfile="$func_basename_result" 304235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destfile="$destdir/$destfile" 304335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 304435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 304535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Deduce the name of the destination old-style object file. 304635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $destfile in 304735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.lo) 304835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lo2o "$destfile" 304935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes staticdest=$func_lo2o_result 305035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 305135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.$objext) 305235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes staticdest="$destfile" 305335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destfile= 305435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 305535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 305635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "cannot copy a libtool object to \`$destfile'" 305735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 3058b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 3059b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 306035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Install the libtool object if requested. 306135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$destfile" && \ 306235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$install_prog $file $destfile" 'exit $?' 306335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 306435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Install the old object if enabled. 306535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_old_libs" = yes; then 306635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Deduce the name of the old-style object file. 306735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lo2o "$file" 306835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes staticobj=$func_lo2o_result 306935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 307035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 307135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 307235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 307335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 307435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 307535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Figure out destination file name, if it wasn't already specified. 307635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$destname"; then 307735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destfile="$destdir/$destname" 307835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 307935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$file" 308035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destfile="$func_basename_result" 308135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destfile="$destdir/$destfile" 308235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 308335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 308435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the file is missing, and there is a .exe on the end, strip it 308535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # because it is most likely a libtool script we actually want to 308635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # install 308735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes stripped_ext="" 308835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $file in 308935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.exe) 309035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test ! -f "$file"; then 309135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '.exe' "$file" 309235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file=$func_stripname_result 309335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes stripped_ext=".exe" 309435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 3095b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 309635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 309735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 309835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do a test to see if this is really a libtool program. 309935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 310035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | *mingw*) 310135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_ltwrapper_executable_p "$file"; then 310235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_ltwrapper_scriptname "$file" 310335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes wrapper=$func_ltwrapper_scriptname_result 310435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 310535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '.exe' "$file" 310635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes wrapper=$func_stripname_result 310735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 3108b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 310935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 311035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes wrapper=$file 3111b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 311235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 311335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_ltwrapper_script_p "$wrapper"; then 311435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes notinst_deplibs= 311535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command= 311635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 311735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$wrapper" 311835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 311935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check the variables that should have been set. 312035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$generated_by_libtool_version" && \ 312135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "invalid libtool wrapper script \`$wrapper'" 312235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 312335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize=yes 312435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lib in $notinst_deplibs; do 312535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check to see that each library is installed. 312635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libdir= 312735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$lib"; then 312835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$lib" 3129b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 313035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 313135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$libdir" && test ! -f "$libfile"; then 313235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`$lib' has not been installed in \`$libdir'" 313335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize=no 313435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 313535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 3136b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 313735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command= 313835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$wrapper" 313935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 314035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes outputname= 314135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$fast_install" = no && test -n "$relink_command"; then 314235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 314335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$finalize" = yes; then 314435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmpdir=`func_mktempdir` 314535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$file$stripped_ext" 314635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file="$func_basename_result" 314735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes outputname="$tmpdir/$file" 314835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Replace the output file specification. 314935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 315035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 315135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_silent || { 315235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_expand "$relink_command" 315335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "func_echo $func_quote_for_expand_result" 315435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 315535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if eval "$relink_command"; then : 315635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 315735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "error: relink \`$file' with the above command before installing it" 315835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || ${RM}r "$tmpdir" 315935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 3160b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 316135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file="$outputname" 3162b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 316335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "cannot relink \`$file'" 3164b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 316535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 3166b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 316735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Install the binary that we compiled earlier. 316835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 3169b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 317035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 317135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 317235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # remove .exe since cygwin /usr/bin/install will append another 317335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # one anyway 317435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $install_prog,$host in 317535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes */usr/bin/install*,*cygwin*) 317635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $file:$destfile in 317735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.exe:*.exe) 317835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # this is ok 317935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 318035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.exe:*) 318135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destfile=$destfile.exe 318235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 318335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *:*.exe) 318435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '.exe' "$destfile" 318535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destfile=$func_stripname_result 318635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 318735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 3188b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 3189b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 319035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 319135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || if test -n "$outputname"; then 319235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ${RM}r "$tmpdir" 319335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 319435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 319535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 319635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 3197b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 319835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for file in $staticlibs; do 319935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$file" 320035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name="$func_basename_result" 3201b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 320235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Set up the ranlib parameters. 320335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldlib="$destdir/$name" 3204b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 320535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 320635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 320735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$stripme" && test -n "$old_striplib"; then 320835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$old_striplib $oldlib" 'exit $?' 3209b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 3210b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 321135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do each command in the postinstall commands. 321235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$old_postinstall_cmds" 'exit $?' 321335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 3214b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 321535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$future_libdirs" && \ 321635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "remember to run \`$progname --finish$future_libdirs'" 3217b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 321835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$current_libdirs"; then 321935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Maybe just do a dry run. 322035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run && current_libdirs=" -n$current_libdirs" 322135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 322235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 322335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 322435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 322535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3226b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 322735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestest "$opt_mode" = install && func_mode_install ${1+"$@"} 3228b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 3229b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 323035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_generate_dlsyms outputname originator pic_p 323135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Extract symbols from dlprefiles and create ${outputname}S.o with 323235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# a dlpreopen symbol table. 323335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_generate_dlsyms () 323435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 323535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 323635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_outputname="$1" 323735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_originator="$2" 323835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_pic_p="${3-no}" 323935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 324035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_dlsyms= 324135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 324235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 324335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$NM" && test -n "$global_symbol_pipe"; then 324435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_dlsyms="${my_outputname}S.c" 324535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 324635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "not configured to extract global symbols from dlpreopened files" 324735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 324835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 3249b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 325035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$my_dlsyms"; then 325135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $my_dlsyms in 325235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "") ;; 325335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.c) 325435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Discover the nlist of each of the dlfiles. 325535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nlist="$output_objdir/${my_outputname}.nm" 3256b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 325735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 3258b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 325935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Parse the name list into a source file. 326035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "creating $output_objdir/$my_dlsyms" 3261b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 326235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 326335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 326435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 3265b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 326635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifdef __cplusplus 326735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesextern \"C\" { 326835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 3269b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 327035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 327135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 327235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 3273b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 327435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 327535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 327635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* DATA imports from DLLs on WIN32 con't be const, because runtime 327735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relocations are performed -- see ld's documentation on pseudo-relocs. */ 327835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define LT_DLSYM_CONST 327935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#elif defined(__osf__) 328035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* This system does not cope well with relocations in const data. */ 328135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define LT_DLSYM_CONST 328235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#else 328335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define LT_DLSYM_CONST const 328435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 3285b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 328635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* External symbol declarations for the compiler. */\ 328735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes" 3288b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 328935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$dlself" = yes; then 329035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "generating symbol list for \`$output'" 3291b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 329235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 3293b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 329435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add our own program objects to the symbol list. 329535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 329635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for progfile in $progfiles; do 329735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$progfile" func_convert_file_msys_to_w32 329835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 329935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 3300b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 3301b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 330235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$exclude_expsyms"; then 330335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 330435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 330535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval '$MV "$nlist"T "$nlist"' 330635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 330735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 3308b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 330935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols_regex"; then 331035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 331135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 331235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval '$MV "$nlist"T "$nlist"' 331335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 3314b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 3315b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 331635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Prepare the list of exported symbols 331735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$export_symbols"; then 331835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols="$output_objdir/$outputname.exp" 331935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 332035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM $export_symbols 332135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 332235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 332335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | *mingw* | *cegcc* ) 332435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 332535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 332635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 332735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 332835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 3329b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 333035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 333135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 333235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 333335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval '$MV "$nlist"T "$nlist"' 333435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 333535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | *mingw* | *cegcc* ) 333635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 333735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 333835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 333935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 334035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 3341b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 3342b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 3343b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 334435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for dlprefile in $dlprefiles; do 334535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "extracting global C symbols from \`$dlprefile'" 334635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$dlprefile" 334735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name="$func_basename_result" 334835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 334935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | *mingw* | *cegcc* ) 335035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # if an import library, we need to obtain dlname 335135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_win32_import_lib_p "$dlprefile"; then 335235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_tr_sh "$dlprefile" 335335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "curr_lafile=\$libfile_$func_tr_sh_result" 335435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlprefile_dlbasename="" 335535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 335635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Use subshell, to avoid clobbering current variable values 335735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 335835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dlprefile_dlname" ; then 335935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$dlprefile_dlname" 336035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlprefile_dlbasename="$func_basename_result" 336135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 336235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # no lafile. user explicitly requested -dlpreopen <import library>. 336335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $sharedlib_from_linklib_cmd "$dlprefile" 336435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlprefile_dlbasename=$sharedlib_from_linklib_result 336535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 336635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 336735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 336835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dlprefile_dlbasename" ; then 336935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 337035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 337135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "Could not compute DLL name from $name" 337235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval '$ECHO ": $name " >> "$nlist"' 337335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 337435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 337535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 337635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 337735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 337835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else # not an import lib 337935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 338035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval '$ECHO ": $name " >> "$nlist"' 338135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 338235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 338335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 338435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 338535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 338635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 338735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 338835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval '$ECHO ": $name " >> "$nlist"' 338935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 339035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 339135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 339235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 339335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 3394b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 3395b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 339635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 339735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make sure we have at least an empty file. 339835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -f "$nlist" || : > "$nlist" 3399b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 340035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$exclude_expsyms"; then 340135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 340235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $MV "$nlist"T "$nlist" 3403b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 3404b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 340535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Try sorting and uniquifying the output. 340635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $GREP -v "^: " < "$nlist" | 340735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if sort -k 3 </dev/null >/dev/null 2>&1; then 340835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sort -k 3 340935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 341035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sort +2 341135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi | 341235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes uniq > "$nlist"S; then 341335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes : 341435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 341535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $GREP -v "^: " < "$nlist" > "$nlist"S 341635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 3417b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 341835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$nlist"S; then 341935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 342035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 342135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 3422b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 3423b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 342435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo >> "$output_objdir/$my_dlsyms" "\ 3425b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 342635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* The mapping between symbol names and symbols. */ 342735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestypedef struct { 342835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes const char *name; 342935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes void *address; 343035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} lt_dlsymlist; 343135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesextern LT_DLSYM_CONST lt_dlsymlist 343235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_${my_prefix}_LTX_preloaded_symbols[]; 343335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesLT_DLSYM_CONST lt_dlsymlist 343435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_${my_prefix}_LTX_preloaded_symbols[] = 343535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{\ 343635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { \"$my_originator\", (void *) 0 }," 3437b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 343835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $need_lib_prefix in 343935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes no) 344035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 344135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 344235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 344335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 344435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 344535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 344635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo >> "$output_objdir/$my_dlsyms" "\ 344735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes {0, (void *) 0} 344835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes}; 3449b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 345035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* This works around a problem in FreeBSD linker */ 345135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifdef FREEBSD_WORKAROUND 345235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstatic const void *lt_preloaded_setup() { 345335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return lt_${my_prefix}_LTX_preloaded_symbols; 345435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 345535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 3456b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 345735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifdef __cplusplus 345835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 345935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif\ 346035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes" 346135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } # !$opt_dry_run 3462b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 346335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_flag_for_symtable= 346435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$compile_command " in 346535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" -static "*) ;; 346635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 346735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 346835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # compiling the symbol table file with pic_flag works around 346935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # a FreeBSD bug that causes programs to crash when -lm is 347035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # linked before any other PIC object. But we must not use 347135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # pic_flag when linking with -static. The problem exists in 347235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 347335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 347435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 347535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-hpux*) 347635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_flag_for_symtable=" $pic_flag" ;; 347735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 347835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$my_pic_p" != Xno; then 347935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_flag_for_symtable=" $pic_flag" 348035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 348135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 348235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 348335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 348435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 348535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes symtab_cflags= 348635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for arg in $LTCFLAGS; do 348735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg in 348835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -pie | -fpie | -fPIE) ;; 348935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append symtab_cflags " $arg" ;; 349035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 349135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 3492b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 349335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now compile the dynamic symbol file. 349435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 3495b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 349635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Clean up the generated files. 349735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 349835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 349935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Transform the symbol file into the correct name. 350035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes symfileobj="$output_objdir/${my_outputname}S.$objext" 350135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 350235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | *mingw* | *cegcc* ) 350335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$output_objdir/$my_outputname.def"; then 350435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 350535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 350635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 350735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 350835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 350935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 351035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 351135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 351235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 351535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 3516b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 3517b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *) 351835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "unknown suffix for \`$my_dlsyms'" 3519b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 3520b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 352135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 352235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We keep going just in case the user didn't refer to 352335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 352435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # really was required. 3525b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 352635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Nullify the symbol file. 352735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 352835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 352935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 353035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3531b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 353235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_win32_libid arg 353335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# return the library type of file 'arg' 353435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 353535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Need a lot of goo to handle *both* DLLs and import libs 353635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Has to be a shell function in order to 'eat' the argument 353735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# that is supplied when $file_magic_command is called. 353835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Despite the name, also deal with 64 bit binaries. 353935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_win32_libid () 354035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 354135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 354235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes win32_libid_type="unknown" 354335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes win32_fileres=`file -L $1 2>/dev/null` 354435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $win32_fileres in 354535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *ar\ archive\ import\ library*) # definitely import 354635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes win32_libid_type="x86 archive import" 354735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 354835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *ar\ archive*) # could be an import, or static 354935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 355035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 355135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 355235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$1" func_convert_file_msys_to_w32 355335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 355435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -n -e ' 355535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 1,100{ 355635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes / I /{ 355735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s,.*,import, 355835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes p 355935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes q 356035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 356135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes }'` 356235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $win32_nmres in 356335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes import*) win32_libid_type="x86 archive import";; 356435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) win32_libid_type="x86 archive static";; 356535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 356635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 356735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 356835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *DLL*) 356935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes win32_libid_type="x86 DLL" 357035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 357135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *executable*) # but shell scripts are "executable" too... 357235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $win32_fileres in 357335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *MS\ Windows\ PE\ Intel*) 357435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes win32_libid_type="x86 DLL" 357535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 357635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 357735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 357835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 357935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$win32_libid_type" 358035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3581b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 358235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_cygming_dll_for_implib ARG 358335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 358435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Platform-specific function to extract the 358535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# name of the DLL associated with the specified 358635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# import library ARG. 358735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Invoked by eval'ing the libtool variable 358835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $sharedlib_from_linklib_cmd 358935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Result is available in the variable 359035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $sharedlib_from_linklib_result 359135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_cygming_dll_for_implib () 359235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 359335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 359435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 359535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3596b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 359735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 359835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 359935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# The is the core of a fallback implementation of a 360035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# platform-specific function to extract the name of the 360135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# DLL associated with the specified import library LIBNAME. 360235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 360335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# SECTION_NAME is either .idata$6 or .idata$7, depending 360435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# on the platform and compiler that created the implib. 360535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 360635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Echos the name of the DLL associated with the 360735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# specified import library. 360835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_cygming_dll_for_implib_fallback_core () 360935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 361035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 361135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 361235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 361335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED '/^Contents of section '"$match_literal"':/{ 361435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Place marker at beginning of archive member dllname section 361535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/.*/====MARK====/ 361635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes p 361735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes d 361835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 361935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # These lines can sometimes be longer than 43 characters, but 362035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # are always uninteresting 362135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /:[ ]*file format pe[i]\{,1\}-/d 362235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /^In archive [^:]*:/d 362335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Ensure marker is printed 362435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /^====MARK====/p 362535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remove all lines with less than 43 characters 362635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /^.\{43\}/!d 362735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # From remaining lines, remove first 43 characters 362835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/^.\{43\}//' | 362935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -n ' 363035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Join marker and all lines until next marker into a single line 363135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /^====MARK====/ b para 363235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes H 363335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ b para 363435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes b 363535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes :para 363635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes x 363735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/\n//g 363835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remove the marker 363935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/^====MARK====// 364035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remove trailing dots and whitespace 364135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes s/[\. \t]*$// 364235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Print 364335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /./p' | 364435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # we now have a list, one entry per line, of the stringified 364535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # contents of the appropriate section of all members of the 364635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # archive which possess that section. Heuristic: eliminate 364735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # all those which have a first or second character that is 364835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # a '.' (that is, objdump's representation of an unprintable 364935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # character.) This should work for all archives with less than 365035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # 0x302f exports -- but will fail for DLLs whose name actually 365135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # begins with a literal '.' or a single character followed by 365235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # a '.'. 365335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # 365435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Of those that remain, print the first one. 365535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -e '/^\./d;/^.\./d;q' 365635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3657b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 365835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_cygming_gnu_implib_p ARG 365935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This predicate returns with zero status (TRUE) if 366035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ARG is a GNU/binutils-style import library. Returns 366135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# with nonzero status (FALSE) otherwise. 366235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_cygming_gnu_implib_p () 366335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 366435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 366535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$1" func_convert_file_msys_to_w32 366635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 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)$'` 366735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$func_cygming_gnu_implib_tmp" 366835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3669b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 367035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_cygming_ms_implib_p ARG 367135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This predicate returns with zero status (TRUE) if 367235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ARG is an MS-style import library. Returns 367335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# with nonzero status (FALSE) otherwise. 367435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_cygming_ms_implib_p () 367535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 367635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 367735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$1" func_convert_file_msys_to_w32 367835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 367935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$func_cygming_ms_implib_tmp" 368035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3681b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 368235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_cygming_dll_for_implib_fallback ARG 368335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Platform-specific function to extract the 368435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# name of the DLL associated with the specified 368535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# import library ARG. 368635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 368735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This fallback implementation is for use when $DLLTOOL 368835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# does not support the --identify-strict option. 368935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Invoked by eval'ing the libtool variable 369035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $sharedlib_from_linklib_cmd 369135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Result is available in the variable 369235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $sharedlib_from_linklib_result 369335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_cygming_dll_for_implib_fallback () 369435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 369535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 369635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_cygming_gnu_implib_p "$1" ; then 369735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # binutils import library 369835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 369935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif func_cygming_ms_implib_p "$1" ; then 370035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # ms-generated import library 370135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 370235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 370335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # unknown 370435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sharedlib_from_linklib_result="" 370535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 370635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3707b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 3708b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 370935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_extract_an_archive dir oldlib 371035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_extract_an_archive () 371135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 371235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 371335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes f_ex_an_ar_dir="$1"; shift 371435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes f_ex_an_ar_oldlib="$1" 371535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$lock_old_archive_extraction" = yes; then 371635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lockfile=$f_ex_an_ar_oldlib.lock 371735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 371835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_echo "Waiting for $lockfile to be removed" 371935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sleep 2 372035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 372135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 372235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 372335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 'stat=$?; rm -f "$lockfile"; exit $stat' 372435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$lock_old_archive_extraction" = yes; then 372535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || rm -f "$lockfile" 372635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 372735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 372835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes : 372935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 373035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 373135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 373235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3733b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 3734b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 373535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_extract_archives gentop oldlib ... 373635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_extract_archives () 373735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 373835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 373935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_gentop="$1"; shift 374035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_oldlibs=${1+"$@"} 374135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_oldobjs="" 374235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_xlib="" 374335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_xabs="" 374435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_xdir="" 3745b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 374635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for my_xlib in $my_oldlibs; do 374735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Extract the objects. 374835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $my_xlib in 374935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 375035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) my_xabs=`pwd`"/$my_xlib" ;; 3751b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 375235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$my_xlib" 375335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_xlib="$func_basename_result" 375435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_xlib_u=$my_xlib 375535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while :; do 375635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $extracted_archives " in 375735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $my_xlib_u "*) 375835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $extracted_serial + 1 375935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes extracted_serial=$func_arith_result 376035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_xlib_u=lt$extracted_serial-$my_xlib ;; 376135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) break ;; 376235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 376335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 376435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes extracted_archives="$extracted_archives $my_xlib_u" 376535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_xdir="$my_gentop/$my_xlib_u" 3766b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 376735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_mkdir_p "$my_xdir" 3768b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 3769b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project case $host in 377035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-darwin*) 377135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "Extracting $my_xabs" 377235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do not bother doing anything if just a dry run 377335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 377435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_orig_dir=`pwd` 377535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cd $my_xdir || exit $? 377635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_archive=$my_xabs 377735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_curdir=`pwd` 377835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_base_archive=`basename "$darwin_archive"` 377935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 378035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$darwin_arches"; then 378135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 378235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_arch= 378335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 378435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for darwin_arch in $darwin_arches ; do 378535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 378635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 378735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 378835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_extract_an_archive "`pwd`" "${darwin_base_archive}" 378935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cd "$darwin_curdir" 379035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 379135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done # $darwin_arches 379235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ## Okay now we've a bunch of thin objects, gotta fatten them up :) 379335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 379435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_file= 379535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_files= 379635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for darwin_file in $darwin_filelist; do 379735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 379835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $LIPO -create -output "$darwin_file" $darwin_files 379935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done # $darwin_filelist 380035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM -rf unfat-$$ 380135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cd "$darwin_orig_dir" 380235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 380335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cd $darwin_orig_dir 380435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_extract_an_archive "$my_xdir" "$my_xabs" 380535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # $darwin_arches 380635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } # !$opt_dry_run 380735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 380835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 380935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_extract_an_archive "$my_xdir" "$my_xabs" 3810b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 3811b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 381235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 381335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 3814b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 381535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_extract_archives_result="$my_oldobjs" 381635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3817b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 3818b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 381935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_emit_wrapper [arg=no] 382035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 382135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Emit a libtool wrapper script on stdout. 382235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Don't directly open a file because we may want to 382335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# incorporate the script contents within a cygwin/mingw 382435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# wrapper executable. Must ONLY be called from within 382535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_mode_link because it depends on a number of variables 382635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# set therein. 382735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 382835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 382935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# variable will take. If 'yes', then the emitted script 383035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# will assume that the directory in which it is stored is 383135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# the $objdir directory. This is a cygwin/mingw-specific 383235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# behavior. 383335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_emit_wrapper () 383435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 383535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_emit_wrapper_arg1=${1-no} 3836b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 383735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 383835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#! $SHELL 3839b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 384035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $output - temporary wrapper script for $objdir/$outputname 384135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 384235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 384335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# The $output program cannot be directly executed until all the libtool 384435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# libraries that it depends on are installed. 384535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 384635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This wrapper script should never be moved out of the build directory. 384735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# If it is, it will not operate correctly. 3848b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 384935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Sed substitution that helps us do robust quoting. It backslashifies 385035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# metacharacters that are still active within double-quoted strings. 385135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughessed_quote_subst='$sed_quote_subst' 3852b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 385335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Be Bourne compatible 385435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 385535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes emulate sh 385635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes NULLCMD=: 385735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 385835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # is contrary to our usage. Disable this feature. 385935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes alias -g '\${1+\"\$@\"}'='\"\$@\"' 386035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes setopt NO_GLOB_SUBST 386135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheselse 386235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 386335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfi 386435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesBIN_SH=xpg4; export BIN_SH # for Tru64 386535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesDUALCASE=1; export DUALCASE # for MKS sh 3866b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 386735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# The HP-UX ksh and POSIX shell print the target directory to stdout 386835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# if CDPATH is set. 386935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3870b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 387135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesrelink_command=\"$relink_command\" 3872b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 387335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# This environment variable determines our operation mode. 387435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesif test \"\$libtool_install_magic\" = \"$magic\"; then 387535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # install mode needs the following variables: 387635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes generated_by_libtool_version='$macro_version' 387735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes notinst_deplibs='$notinst_deplibs' 387835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheselse 387935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # When we are sourced in execute mode, \$file and \$ECHO are already set. 388035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test \"\$libtool_execute_magic\" != \"$magic\"; then 388135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file=\"\$0\"" 3882b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 388335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 388435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 3885b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 388635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# A function that is used when there is no print builtin or printf. 388735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_fallback_echo () 388835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 388935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval 'cat <<_LTECHO_EOF 389035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes\$1 389135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes_LTECHO_EOF' 389235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 389335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ECHO=\"$qECHO\" 389435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 3895b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 389635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Very basic option parsing. These options are (a) specific to 389735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# the libtool wrapper, (b) are identical between the wrapper 389835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# /script/ and the wrapper /executable/ which is used only on 389935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# windows platforms, and (c) all begin with the string "--lt-" 390035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# (application programs are unlikely to have options which match 390135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# this pattern). 390235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 390335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# There are only two supported options: --lt-debug and 390435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# --lt-dump-script. There is, deliberately, no --lt-help. 390535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 390635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# The first argument to this parsing function should be the 390735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# script's $0 value, followed by "$@". 390835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_option_debug= 390935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_parse_lt_options () 391035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 391135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_script_arg0=\$0 391235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 391335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lt_opt 391435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 391535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case \"\$lt_opt\" in 391635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --lt-debug) lt_option_debug=1 ;; 391735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --lt-dump-script) 391835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 391935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 392035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 392135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat \"\$lt_dump_D/\$lt_dump_F\" 392235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit 0 392335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 392435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --lt-*) 392535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 392635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit 1 392735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 392835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 392935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 3930b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 393135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Print the debug banner immediately: 393235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n \"\$lt_option_debug\"; then 393335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 393435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 393535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3936b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 393735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Used when --lt-debug. Prints its arguments to stdout 393835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# (redirection is the responsibility of the caller) 393935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_lt_dump_args () 394035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 394135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_dump_args_N=1; 394235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lt_arg 394335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 394435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 394535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 394635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 394735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 3948b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 394935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Core function for launching the target application 395035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_exec_program_core () 395135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 3952b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project" 395335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 395435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Backslashes separate directories on plain windows 395535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-mingw | *-*-os2* | *-cegcc*) 395635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 395735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n \"\$lt_option_debug\"; then 395835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 395935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lt_dump_args \${1+\"\$@\"} 1>&2 396035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 396135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 3962b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project" 396335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 3964b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 396535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 396635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 396735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n \"\$lt_option_debug\"; then 396835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 396935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lt_dump_args \${1+\"\$@\"} 1>&2 397035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 397135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exec \"\$progdir/\$program\" \${1+\"\$@\"} 3972b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project" 397335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 397435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 397535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 397635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 397735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit 1 3978b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 3979b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 398035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# A function to encapsulate launching the target application 398135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Strips options in the --lt-* namespace from \$@ and 398235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# launches target application with the remaining arguments. 398335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_exec_program () 398435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 398535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lt_wr_arg 398635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 398735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case \$lt_wr_arg in 398835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes --lt-*) ;; 398935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 399035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 399135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 399235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 399335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_exec_program_core \${1+\"\$@\"} 3994b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 3995b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 399635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Parse options 399735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_parse_lt_options \"\$0\" \${1+\"\$@\"} 3998b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 399935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Find the directory that this script lives in. 400035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 400135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test \"x\$thisdir\" = \"x\$file\" && thisdir=. 4002b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 400335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Follow symbolic links until we get to the real thisdir. 400435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 400535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while test -n \"\$file\"; do 400635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 4007b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 400835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If there was a directory component, then change thisdir. 400935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test \"x\$destdir\" != \"x\$file\"; then 401035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case \"\$destdir\" in 401135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 401235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) thisdir=\"\$thisdir/\$destdir\" ;; 401335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 401435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 4015b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 401635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 401735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 401835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 4019b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 402035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Usually 'no', except on cygwin/mingw when embedded into 402135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the cwrapper. 402235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 402335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 402435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # special case for '.' 402535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test \"\$thisdir\" = \".\"; then 402635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes thisdir=\`pwd\` 402735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 402835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # remove .libs from thisdir 402935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case \"\$thisdir\" in 403035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 403135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $objdir ) thisdir=. ;; 403235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 403335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 4034b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 403535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Try to get the absolute directory name. 403635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes absdir=\`cd \"\$thisdir\" && pwd\` 403735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n \"\$absdir\" && thisdir=\"\$absdir\" 403835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes" 4039b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 404035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$fast_install" = yes; then 404135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 404235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes program=lt-'$outputname'$exeext 404335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes progdir=\"\$thisdir/$objdir\" 4044b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 404535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test ! -f \"\$progdir/\$program\" || 404635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 404735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test \"X\$file\" != \"X\$progdir/\$program\"; }; then 4048b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 404935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file=\"\$\$-\$program\" 4050b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 405135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test ! -d \"\$progdir\"; then 405235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $MKDIR \"\$progdir\" 405335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 405435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM \"\$progdir/\$file\" 405535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi" 4056b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 405735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 4058b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 405935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # relink executable if necessary 406035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n \"\$relink_command\"; then 406135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if relink_command_output=\`eval \$relink_command 2>&1\`; then : 406235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 406335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO \"\$relink_command_output\" >&2 406435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM \"\$progdir/\$file\" 406535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit 1 4066b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 406735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 4068b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 406935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 407035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { $RM \"\$progdir/\$program\"; 407135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 407235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM \"\$progdir/\$file\" 407335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi" 4074b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 407535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 407635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes program='$outputname' 407735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes progdir=\"\$thisdir/$objdir\" 407835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes" 4079b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 4080b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 408135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 4082b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 408335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f \"\$progdir/\$program\"; then" 4084b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 408535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # fixup the dll searchpath if we need to. 408635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # 408735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Fix the DLL searchpath if we need to. Do this before prepending 408835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # to shlibpath, because on Windows, both are PATH and uninstalled 408935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # libraries must come first. 409035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dllsearchpath"; then 409135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 409235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add the dll search path components to the executable PATH 409335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes PATH=$dllsearchpath:\$PATH 409435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes" 409535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 4096b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 409735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Export our shlibpath_var if we have one. 409835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 409935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 410035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add our own library path to $shlibpath_var 410135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 4102b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 410335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Some systems cannot cope with colon-terminated $shlibpath_var 410435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The second colon is a workaround for a bug in BeOS R4 sed 410535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 4106b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 410735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export $shlibpath_var 410835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes" 410935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 411035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 411135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "\ 411235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test \"\$libtool_execute_magic\" != \"$magic\"; then 411335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Run the actual program with our arguments. 411435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_exec_program \${1+\"\$@\"} 411535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 411635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 411735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The program doesn't exist. 411835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 411935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 412035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 412135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit 1 412235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 412335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfi\ 412435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes" 412535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 4126b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4127b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 412835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_emit_cwrapperexe_src 412935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# emit the source code for a wrapper executable on stdout 413035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Must ONLY be called from within func_mode_link because 413135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# it depends on a number of variable set therein. 413235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_emit_cwrapperexe_src () 413335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 413435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<EOF 4135b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4136b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 413735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 4138b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4139b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project The $output program cannot be directly executed until all the libtool 4140b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project libraries that it depends on are installed. 4141b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4142b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project This wrapper executable should never be moved out of the build directory. 4143b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project If it is, it will not operate correctly. 4144b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project*/ 4145b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectEOF 414635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 414735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifdef _MSC_VER 414835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define _CRT_SECURE_NO_DEPRECATE 1 414935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 4150b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <stdio.h> 4151b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <stdlib.h> 415235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifdef _MSC_VER 415335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# include <direct.h> 415435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# include <process.h> 415535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# include <io.h> 415635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#else 415735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# include <unistd.h> 415835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# include <stdint.h> 415935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ifdef __CYGWIN__ 416035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# include <io.h> 416135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# endif 416235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 4163b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <malloc.h> 4164b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <stdarg.h> 4165b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <assert.h> 4166b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <string.h> 4167b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <ctype.h> 416835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#include <errno.h> 416935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#include <fcntl.h> 4170b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#include <sys/stat.h> 4171b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 417235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* declarations of non-ANSI functions */ 417335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#if defined(__MINGW32__) 417435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ifdef __STRICT_ANSI__ 417535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesint _putenv (const char *); 417635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# endif 417735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#elif defined(__CYGWIN__) 417835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ifdef __STRICT_ANSI__ 417935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschar *realpath (const char *, char *); 418035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesint putenv (char *); 418135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesint setenv (const char *, const char *, int); 418235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# endif 418335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* #elif defined (other platforms) ... */ 418435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 418535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 418635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* portability defines, excluding path handling macros */ 418735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#if defined(_MSC_VER) 418835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define setmode _setmode 418935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define stat _stat 419035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define chmod _chmod 419135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define getcwd _getcwd 419235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define putenv _putenv 419335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define S_IXUSR _S_IEXEC 419435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# ifndef _INTPTR_T_DEFINED 419535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define _INTPTR_T_DEFINED 419635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define intptr_t int 419735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# endif 419835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#elif defined(__MINGW32__) 419935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define setmode _setmode 420035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define stat _stat 420135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define chmod _chmod 420235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define getcwd _getcwd 420335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define putenv _putenv 420435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#elif defined(__CYGWIN__) 420535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define HAVE_SETENV 420635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define FOPEN_WB "wb" 420735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* #elif defined (other platforms) ... */ 420835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 420935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 4210b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#if defined(PATH_MAX) 4211b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define LT_PATHMAX PATH_MAX 4212b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#elif defined(MAXPATHLEN) 4213b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define LT_PATHMAX MAXPATHLEN 4214b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#else 4215b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define LT_PATHMAX 1024 4216b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif 4217b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 421835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifndef S_IXOTH 421935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define S_IXOTH 0 422035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 422135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifndef S_IXGRP 422235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define S_IXGRP 0 422335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 422435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 422535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* path handling portability macros */ 4226b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifndef DIR_SEPARATOR 4227b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define DIR_SEPARATOR '/' 4228b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define PATH_SEPARATOR ':' 4229b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif 4230b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4231b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4232b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project defined (__OS2__) 4233b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define HAVE_DOS_BASED_FILE_SYSTEM 423435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define FOPEN_WB "wb" 4235b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# ifndef DIR_SEPARATOR_2 4236b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define DIR_SEPARATOR_2 '\\' 4237b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# endif 4238b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# ifndef PATH_SEPARATOR_2 4239b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define PATH_SEPARATOR_2 ';' 4240b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# endif 4241b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif 4242b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4243b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifndef DIR_SEPARATOR_2 4244b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4245b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#else /* DIR_SEPARATOR_2 */ 4246b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define IS_DIR_SEPARATOR(ch) \ 424735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4248b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif /* DIR_SEPARATOR_2 */ 4249b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4250b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#ifndef PATH_SEPARATOR_2 4251b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4252b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#else /* PATH_SEPARATOR_2 */ 4253b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4254b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif /* PATH_SEPARATOR_2 */ 4255b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 425635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifndef FOPEN_WB 425735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define FOPEN_WB "w" 425835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 425935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifndef _O_BINARY 426035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# define _O_BINARY 0 426135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 426235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 4263b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 4264b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#define XFREE(stale) do { \ 4265b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (stale) { free ((void *) stale); stale = 0; } \ 4266b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} while (0) 4267b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 426835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#if defined(LT_DEBUGWRAPPER) 426935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstatic int lt_debug = 1; 4270b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#else 427135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstatic int lt_debug = 0; 4272b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif 4273b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 427435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 427535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 427635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid *xmalloc (size_t num); 427735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschar *xstrdup (const char *string); 427835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char *base_name (const char *name); 427935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschar *find_executable (const char *wrapper); 428035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschar *chase_symlinks (const char *pathspec); 428135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesint make_executable (const char *path); 428235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesint check_executable (const char *path); 428335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschar *strendzap (char *str, const char *pat); 428435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 428535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid lt_fatal (const char *file, int line, const char *message, ...); 428635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstatic const char *nonnull (const char *s); 428735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstatic const char *nonempty (const char *s); 428835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid lt_setenv (const char *name, const char *value); 428935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschar *lt_extend_str (const char *orig_value, const char *add, int to_end); 429035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid lt_update_exe_path (const char *name, const char *value); 429135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid lt_update_lib_path (const char *name, const char *value); 429235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschar **prepare_spawn (char **argv); 429335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid lt_dump_script (FILE *f); 429435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 4295b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 429635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<EOF 429735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvolatile const char * MAGIC_EXE = "$magic_exe"; 429835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 429935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 430035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 430135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 430235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path "$temp_rpath" 430335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<EOF 430435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 430535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 430635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 430735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 430835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char * LIB_PATH_VALUE = ""; 430935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 431035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 431135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 431235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dllsearchpath"; then 431335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_host_path "$dllsearchpath:" 431435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<EOF 431535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char * EXE_PATH_VARNAME = "PATH"; 431635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 431735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 431835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 431935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 432035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char * EXE_PATH_VARNAME = ""; 432135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char * EXE_PATH_VALUE = ""; 432235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 432335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 432435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 432535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$fast_install" = yes; then 432635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<EOF 432735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 432835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 432935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 433035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<EOF 433135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 433235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 433335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 433435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 433535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 433635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 433735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 433835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#define LTWRAPPER_OPTION_PREFIX "--lt-" 433935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 434035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 434135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 434235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 4343b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4344b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint 4345b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectmain (int argc, char *argv[]) 4346b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 4347b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project char **newargz; 434835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes int newargc; 434935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *tmp_pathspec; 435035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *actual_cwrapper_path; 435135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *actual_cwrapper_name; 435235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *target_name; 435335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *lt_argv_zero; 435435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes intptr_t rval = 127; 435535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 4356b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int i; 4357b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4358b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project program_name = (char *) xstrdup (base_name (argv[0])); 435935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newargz = XMALLOC (char *, argc + 1); 436035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 436135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* very simple arg parsing; don't want to rely on getopt 436235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes * also, copy all non cwrapper options to newargz, except 436335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes * argz[0], which is handled differently 436435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes */ 436535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newargc=0; 436635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for (i = 1; i < argc; i++) 436735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 436835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (strcmp (argv[i], dumpscript_opt) == 0) 436935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 437035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 437135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$host" in 437235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *mingw* | *cygwin* ) 437335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # make stdout use "unix" line endings 437435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo " setmode(1,_O_BINARY);" 437535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 437635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 437735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 437835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 437935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_dump_script (stdout); 438035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return 0; 438135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 438235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (strcmp (argv[i], debug_opt) == 0) 438335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 438435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debug = 1; 438535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue; 438635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 438735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 438835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 438935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 439035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes namespace, but it is not one of the ones we know about and 439135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes have already dealt with, above (inluding dump-script), then 439235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes report an error. Otherwise, targets might begin to believe 439335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 439435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes namespace. The first time any user complains about this, we'll 439535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes need to make LTWRAPPER_OPTION_PREFIX a configure-time option 439635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes or a configure.ac-settable value. 439735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes */ 439835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_fatal (__FILE__, __LINE__, 439935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "unrecognized %s option: '%s'", 440035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ltwrapper_option_prefix, argv[i]); 440135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 440235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* otherwise ... */ 440335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newargz[++newargc] = xstrdup (argv[i]); 440435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 440535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newargz[++newargc] = NULL; 440635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 440735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 440835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<EOF 440935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* The GNU banner must be the first non-error debug message */ 441035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 441135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 441235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 441335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 441435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 441535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 441635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec = find_executable (argv[0]); 441735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (tmp_pathspec == NULL) 441835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 441935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, 442035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "(main) found exe (before symlink chase) at: %s\n", 442135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec); 442235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 442335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes actual_cwrapper_path = chase_symlinks (tmp_pathspec); 442435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, 442535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "(main) found exe (after symlink chase) at: %s\n", 442635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes actual_cwrapper_path); 442735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (tmp_pathspec); 442835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 442935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 443035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strendzap (actual_cwrapper_path, actual_cwrapper_name); 443135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 443235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* wrapper name transforms */ 443335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strendzap (actual_cwrapper_name, ".exe"); 443435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 443535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (actual_cwrapper_name); 443635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes actual_cwrapper_name = tmp_pathspec; 443735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec = 0; 443835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 443935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* target_name transforms -- use actual target program name; might have lt- prefix */ 444035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 444135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strendzap (target_name, ".exe"); 444235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 444335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (target_name); 444435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes target_name = tmp_pathspec; 444535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec = 0; 444635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 444735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, 444835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "(main) libtool target name: %s\n", 444935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes target_name); 4450b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectEOF 4451b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 445235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<EOF 445335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newargz[0] = 445435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XMALLOC (char, (strlen (actual_cwrapper_path) + 445535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 445635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strcpy (newargz[0], actual_cwrapper_path); 445735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strcat (newargz[0], "$objdir"); 445835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strcat (newargz[0], "/"); 4459b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectEOF 4460b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 446135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 446235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* stop here, and copy so we don't have to do this twice */ 446335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec = xstrdup (newargz[0]); 446435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 446535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 446635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strcat (newargz[0], actual_cwrapper_name); 4467b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 446835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* DO want the lt- prefix here if it exists, so use target_name */ 446935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 447035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (tmp_pathspec); 447135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec = NULL; 447235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 447335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 447435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host_os in 447535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes mingw*) 447635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 4477b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project { 447835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char* p; 447935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while ((p = strchr (newargz[0], '\\')) != NULL) 448035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 448135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *p = '/'; 448235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 448335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while ((p = strchr (lt_argv_zero, '\\')) != NULL) 448435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 448535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *p = '/'; 448635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 4487b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project } 448835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 448935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 449035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 449135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 449235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 449335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (target_name); 449435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (actual_cwrapper_path); 449535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (actual_cwrapper_name); 449635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 449735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 449835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 449935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 450035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 450135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes because on Windows, both *_VARNAMEs are PATH but uninstalled 450235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libraries must come first. */ 450335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 450435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 450535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 450635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 450735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonnull (lt_argv_zero)); 450835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for (i = 0; i < newargc; i++) 450935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 451035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 451135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes i, nonnull (newargz[i])); 451235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 4513b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4514b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectEOF 4515b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 451635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host_os in 451735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes mingw*) 451835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 451935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* execv doesn't actually work on mingw as expected on unix */ 452035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newargz = prepare_spawn (newargz); 452135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 452235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (rval == -1) 452335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 452435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* failed to start process */ 452535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, 452635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "(main) failed to launch target \"%s\": %s\n", 452735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_argv_zero, nonnull (strerror (errno))); 452835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return 127; 452935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 453035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return rval; 4531b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectEOF 453235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 453335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 453435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 453535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes execv (lt_argv_zero, newargz); 453635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return rval; /* =127, but avoids unused variable warning */ 4537b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectEOF 453835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 453935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 4540b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 454135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 4542b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 4543b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4544b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectvoid * 4545b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectxmalloc (size_t num) 4546b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 454735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes void *p = (void *) malloc (num); 4548b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (!p) 454935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_fatal (__FILE__, __LINE__, "memory exhausted"); 4550b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4551b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return p; 4552b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 4553b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4554b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectchar * 4555b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectxstrdup (const char *string) 4556b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 455735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 455835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes string) : NULL; 4559b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 4560b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4561b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectconst char * 4562b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectbase_name (const char *name) 4563b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 4564b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project const char *base; 4565b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4566b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4567b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project /* Skip over the disk name in MSDOS pathnames. */ 456835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (isalpha ((unsigned char) name[0]) && name[1] == ':') 4569b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project name += 2; 4570b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif 4571b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4572b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project for (base = name; *name; name++) 4573b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (IS_DIR_SEPARATOR (*name)) 4574b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project base = name + 1; 4575b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return base; 4576b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 4577b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4578b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectint 457935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescheck_executable (const char *path) 4580b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 4581b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project struct stat st; 4582b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 458335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 458435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonempty (path)); 4585b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if ((!path) || (!*path)) 4586b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return 0; 4587b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 458835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if ((stat (path, &st) >= 0) 458935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 4590b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return 1; 4591b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 4592b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return 0; 4593b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 4594b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 459535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesint 459635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesmake_executable (const char *path) 459735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 459835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes int rval = 0; 459935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes struct stat st; 460035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 460135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 460235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonempty (path)); 460335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if ((!path) || (!*path)) 460435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return 0; 460535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 460635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (stat (path, &st) >= 0) 460735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 460835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 460935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 461035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return rval; 461135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 461235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 4613b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project/* Searches for the full path of the wrapper. Returns 461435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newly allocated full path name if found, NULL otherwise 461535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes Does not chase symlinks, even on platforms that support them. 461635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes*/ 4617b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectchar * 461835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfind_executable (const char *wrapper) 4619b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 4620b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int has_slash = 0; 462135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes const char *p; 462235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes const char *p_next; 4623b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project /* static buffer for getcwd */ 4624b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project char tmp[LT_PATHMAX + 1]; 4625b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project int tmp_len; 462635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *concat_name; 4627b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 462835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 462935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonempty (wrapper)); 4630b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4631b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if ((wrapper == NULL) || (*wrapper == '\0')) 4632b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return NULL; 4633b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4634b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project /* Absolute path? */ 4635b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 463635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 4637b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project { 4638b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project concat_name = xstrdup (wrapper); 463935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (check_executable (concat_name)) 464035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return concat_name; 464135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (concat_name); 4642b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project } 464335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 464435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 464535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 464635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (IS_DIR_SEPARATOR (wrapper[0])) 464735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 464835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes concat_name = xstrdup (wrapper); 464935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (check_executable (concat_name)) 465035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return concat_name; 465135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (concat_name); 465235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 4653b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 465435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 4655b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project#endif 4656b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4657b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project for (p = wrapper; *p; p++) 4658b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (*p == '/') 4659b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project { 466035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes has_slash = 1; 466135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break; 4662b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project } 466335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (!has_slash) 466435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 466535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* no slashes; search PATH */ 466635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes const char *path = getenv ("PATH"); 466735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (path != NULL) 466835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 466935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for (p = path; *p; p = p_next) 467035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 467135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes const char *q; 467235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes size_t p_len; 467335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for (q = p; *q; q++) 467435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (IS_PATH_SEPARATOR (*q)) 467535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break; 467635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes p_len = q - p; 467735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes p_next = (*q == '\0' ? q : q + 1); 467835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (p_len == 0) 467935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 468035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* empty path: current directory */ 468135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (getcwd (tmp, LT_PATHMAX) == NULL) 468235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 468335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonnull (strerror (errno))); 468435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_len = strlen (tmp); 468535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes concat_name = 468635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 468735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes memcpy (concat_name, tmp, tmp_len); 468835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes concat_name[tmp_len] = '/'; 468935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strcpy (concat_name + tmp_len + 1, wrapper); 469035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 469135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 469235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 469335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes concat_name = 469435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 469535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes memcpy (concat_name, p, p_len); 469635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes concat_name[p_len] = '/'; 469735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strcpy (concat_name + p_len + 1, wrapper); 469835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 469935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (check_executable (concat_name)) 470035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return concat_name; 470135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (concat_name); 470235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 470335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 470435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* not found in PATH; assume curdir */ 4705b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project } 4706b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project /* Relative path | not found in path: prepend cwd */ 4707b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (getcwd (tmp, LT_PATHMAX) == NULL) 470835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 470935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonnull (strerror (errno))); 471035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_len = strlen (tmp); 471135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4712b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project memcpy (concat_name, tmp, tmp_len); 4713b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project concat_name[tmp_len] = '/'; 4714b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project strcpy (concat_name + tmp_len + 1, wrapper); 4715b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 471635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (check_executable (concat_name)) 4717b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return concat_name; 471835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (concat_name); 4719b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return NULL; 4720b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 4721b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4722b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectchar * 472335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschase_symlinks (const char *pathspec) 472435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 472535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifndef S_ISLNK 472635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return xstrdup (pathspec); 472735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#else 472835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char buf[LT_PATHMAX]; 472935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes struct stat s; 473035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *tmp_pathspec = xstrdup (pathspec); 473135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *p; 473235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes int has_symlinks = 0; 473335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while (strlen (tmp_pathspec) && !has_symlinks) 473435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 473535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, 473635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "checking path component for symlinks: %s\n", 473735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec); 473835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (lstat (tmp_pathspec, &s) == 0) 473935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 474035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (S_ISLNK (s.st_mode) != 0) 474135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 474235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes has_symlinks = 1; 474335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break; 474435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 474535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 474635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* search backwards for last DIR_SEPARATOR */ 474735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes p = tmp_pathspec + strlen (tmp_pathspec) - 1; 474835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 474935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes p--; 475035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 475135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 475235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* no more DIR_SEPARATORS left */ 475335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break; 475435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 475535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *p = '\0'; 475635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 475735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 475835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 475935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_fatal (__FILE__, __LINE__, 476035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "error accessing file \"%s\": %s", 476135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec, nonnull (strerror (errno))); 476235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 476335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 476435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (tmp_pathspec); 476535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 476635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (!has_symlinks) 476735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 476835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return xstrdup (pathspec); 476935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 477035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 477135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_pathspec = realpath (pathspec, buf); 477235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (tmp_pathspec == 0) 477335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 477435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_fatal (__FILE__, __LINE__, 477535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "could not follow symlinks for %s", pathspec); 477635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 477735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return xstrdup (tmp_pathspec); 477835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 477935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 478035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 478135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschar * 478235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstrendzap (char *str, const char *pat) 4783b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 4784b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project size_t len, patlen; 4785b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 478635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes assert (str != NULL); 478735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes assert (pat != NULL); 4788b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 478935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len = strlen (str); 479035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes patlen = strlen (pat); 4791b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4792b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (patlen <= len) 479335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 479435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes str += len - patlen; 479535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (strcmp (str, pat) == 0) 479635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *str = '\0'; 479735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 4798b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project return str; 4799b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 4800b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 480135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid 480235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_debugprintf (const char *file, int line, const char *fmt, ...) 480335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 480435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes va_list args; 480535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (lt_debug) 480635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 480735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 480835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes va_start (args, fmt); 480935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes (void) vfprintf (stderr, fmt, args); 481035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes va_end (args); 481135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 481235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 481335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 4814b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectstatic void 481535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_error_core (int exit_status, const char *file, 481635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes int line, const char *mode, 481735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes const char *message, va_list ap) 4818b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 481935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 4820b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project vfprintf (stderr, message, ap); 4821b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fprintf (stderr, ".\n"); 4822b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4823b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if (exit_status >= 0) 4824b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project exit (exit_status); 4825b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 4826b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 4827b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectvoid 482835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_fatal (const char *file, int line, const char *message, ...) 4829b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project{ 4830b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project va_list ap; 4831b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project va_start (ap, message); 483235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 4833b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project va_end (ap); 4834b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project} 483535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 483635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstatic const char * 483735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesnonnull (const char *s) 483835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 483935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return s ? s : "(null)"; 484035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 484135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 484235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesstatic const char * 484335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesnonempty (const char *s) 484435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 484535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return (s && !*s) ? "(empty)" : nonnull (s); 484635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 484735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 484835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid 484935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_setenv (const char *name, const char *value) 485035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 485135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, 485235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "(lt_setenv) setting '%s' to '%s'\n", 485335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonnull (name), nonnull (value)); 485435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 485535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#ifdef HAVE_SETENV 485635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* always make a copy, for consistency with !HAVE_SETENV */ 485735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *str = xstrdup (value); 485835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes setenv (name, str, 1); 485935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#else 486035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes int len = strlen (name) + 1 + strlen (value) + 1; 486135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *str = XMALLOC (char, len); 486235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sprintf (str, "%s=%s", name, value); 486335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (putenv (str) != EXIT_SUCCESS) 486435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 486535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (str); 486635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 486735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#endif 486835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 486935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 487035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 487135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschar * 487235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_extend_str (const char *orig_value, const char *add, int to_end) 487335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 487435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *new_value; 487535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (orig_value && *orig_value) 487635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 487735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes int orig_value_len = strlen (orig_value); 487835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes int add_len = strlen (add); 487935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_value = XMALLOC (char, add_len + orig_value_len + 1); 488035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (to_end) 488135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 488235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strcpy (new_value, orig_value); 488335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strcpy (new_value + orig_value_len, add); 488435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 488535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 488635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 488735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strcpy (new_value, add); 488835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes strcpy (new_value + add_len, orig_value); 488935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 489035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 489135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 489235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 489335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_value = xstrdup (add); 489435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 489535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return new_value; 489635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 489735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 489835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid 489935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_update_exe_path (const char *name, const char *value) 490035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 490135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, 490235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 490335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonnull (name), nonnull (value)); 490435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 490535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (name && *name && value && *value) 490635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 490735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *new_value = lt_extend_str (getenv (name), value, 0); 490835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* some systems can't cope with a ':'-terminated path #' */ 490935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes int len = strlen (new_value); 491035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 491135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 491235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_value[len-1] = '\0'; 491335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 491435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_setenv (name, new_value); 491535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (new_value); 491635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 491735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 491835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 491935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid 492035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslt_update_lib_path (const char *name, const char *value) 492135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 492235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_debugprintf (__FILE__, __LINE__, 492335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 492435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonnull (name), nonnull (value)); 492535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 492635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (name && *name && value && *value) 492735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 492835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *new_value = lt_extend_str (getenv (name), value, 0); 492935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_setenv (name, new_value); 493035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes XFREE (new_value); 493135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 493235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 493335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 4934b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source ProjectEOF 493535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host_os in 493635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes mingw*) 493735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 493835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 493935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes/* Prepares an argument vector before calling spawn(). 494035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes Note that spawn() does not by itself call the command interpreter 494135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 494235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 494335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes GetVersionEx(&v); 494435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes v.dwPlatformId == VER_PLATFORM_WIN32_NT; 494535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes }) ? "cmd.exe" : "command.com"). 494635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes Instead it simply concatenates the arguments, separated by ' ', and calls 494735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes CreateProcess(). We must quote the arguments since Win32 CreateProcess() 494835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 494935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes special way: 495035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes - Space and tab are interpreted as delimiters. They are not treated as 495135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes delimiters if they are surrounded by double quotes: "...". 495235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes - Unescaped double quotes are removed from the input. Their only effect is 495335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes that within double quotes, space and tab are treated like normal 495435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes characters. 495535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes - Backslashes not followed by double quotes are not special. 495635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes - But 2*n+1 backslashes followed by a double quote become 495735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes n backslashes followed by a double quote (n >= 0): 495835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \" -> " 495935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \\\" -> \" 496035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes \\\\\" -> \\" 496135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes */ 496235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#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" 496335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes#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" 496435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheschar ** 496535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesprepare_spawn (char **argv) 496635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 496735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes size_t argc; 496835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char **new_argv; 496935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes size_t i; 4970b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 497135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* Count number of arguments. */ 497235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for (argc = 0; argv[argc] != NULL; argc++) 497335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ; 4974b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 497535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* Allocate new argument vector. */ 497635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_argv = XMALLOC (char *, argc + 1); 4977b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 497835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes /* Put quoted arguments into the new argument vector. */ 497935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for (i = 0; i < argc; i++) 498035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 498135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes const char *string = argv[i]; 498235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 498335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (string[0] == '\0') 498435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_argv[i] = xstrdup ("\"\""); 498535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 498635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 498735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 498835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes size_t length; 498935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes unsigned int backslashes; 499035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes const char *s; 499135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *quoted_string; 499235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char *p; 499335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 499435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes length = 0; 499535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes backslashes = 0; 499635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (quote_around) 499735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes length++; 499835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for (s = string; *s != '\0'; s++) 499935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 500035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char c = *s; 500135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (c == '"') 500235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes length += backslashes + 1; 500335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes length++; 500435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (c == '\\') 500535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes backslashes++; 500635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 500735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes backslashes = 0; 500835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 500935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (quote_around) 501035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes length += backslashes + 1; 501135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 501235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes quoted_string = XMALLOC (char, length + 1); 501335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 501435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes p = quoted_string; 501535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes backslashes = 0; 501635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (quote_around) 501735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *p++ = '"'; 501835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for (s = string; *s != '\0'; s++) 501935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 502035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes char c = *s; 502135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (c == '"') 502235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 502335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes unsigned int j; 502435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for (j = backslashes + 1; j > 0; j--) 502535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *p++ = '\\'; 502635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 502735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *p++ = c; 502835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (c == '\\') 502935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes backslashes++; 503035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 503135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes backslashes = 0; 503235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 503335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (quote_around) 503435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { 503535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes unsigned int j; 503635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for (j = backslashes; j > 0; j--) 503735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *p++ = '\\'; 503835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *p++ = '"'; 503935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 504035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *p = '\0'; 5041b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 504235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_argv[i] = quoted_string; 504335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 504435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 504535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_argv[i] = (char *) string; 504635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 504735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_argv[argc] = NULL; 5048b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 504935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes return new_argv; 505035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 505135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 505235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 505335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 5054b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 505535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 505635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesvoid lt_dump_script (FILE* f) 505735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 505835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 505935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_emit_wrapper yes | 506035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -e 's/\([\\"]\)/\\\1/g' \ 506135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' 5062b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 506335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat <<"EOF" 506435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 506535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 506635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 506735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# end: func_emit_cwrapperexe_src 5068b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 506935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_win32_import_lib_p ARG 507035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# True if ARG is an import lib, as indicated by $file_magic_cmd 507135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_win32_import_lib_p () 507235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 507335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 507435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 507535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *import*) : ;; 507635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) false ;; 507735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 507835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 5079b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 508035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_mode_link arg... 508135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_mode_link () 508235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 508335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 508435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 508535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 508635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # It is impossible to link a dll without this setting, and 508735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # we shouldn't force the makefile maintainer to figure out 508835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # which system we are compiling for in order to pass an extra 508935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # flag for every libtool invocation. 509035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # allow_undefined=no 5091b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 509235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # FIXME: Unfortunately, there are problems with the above when trying 509335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # to make a dll which has undefined symbols, in which case not 509435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # even a static library is built. For now, we need to specify 509535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -no-undefined on the libtool link line when we can be certain 509635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # that all symbols are satisfied, otherwise we get a static library. 509735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes allow_undefined=yes 509835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 509935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 510035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes allow_undefined=yes 510135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 510235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 510335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libtool_args=$nonopt 510435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes base_compile="$nonopt $@" 510535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_command=$nonopt 510635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_command=$nonopt 5107b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 510835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_rpath= 510935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_rpath= 511035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_shlibpath= 511135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_shlibpath= 511235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes convenience= 511335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes old_convenience= 511435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs= 511535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes old_deplibs= 511635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compiler_flags= 511735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes linker_flags= 511835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dllsearchpath= 511935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib_search_path=`pwd` 512035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes inst_prefix_dir= 512135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_inherited_linker_flags= 512235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 512335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes avoid_version=no 512435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes bindir= 512535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlfiles= 512635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlprefiles= 512735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlself=no 512835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_dynamic=no 512935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols= 513035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols_regex= 513135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes generated= 513235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobjs= 513335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ltlibs= 513435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes module=no 513535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes no_install=no 513635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes objs= 513735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes non_pic_objects= 513835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes precious_files_regex= 513935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prefer_static_libs=no 514035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes preload=no 514135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 514235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prevarg= 514335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes release= 514435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes rpath= 514535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes xrpath= 514635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes perm_rpath= 514735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes temp_rpath= 514835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes thread_safe=no 514935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes vinfo= 515035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes vinfo_number=no 515135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes weak_libs= 515235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes single_module="${wl}-single_module" 515335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_infer_tag $base_compile 515435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 515535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We need to know -static, to get the right output filenames. 515635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for arg 515735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 515835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg in 515935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -shared) 516035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$build_libtool_libs" != yes && \ 516135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_configuration "can not build a shared library" 516235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_old_libs=no 516335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 516435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 516535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -all-static | -static | -static-libtool-libs) 516635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg in 516735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -all-static) 516835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 516935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "complete static linking is impossible in this configuration" 517035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 517135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$link_static_flag"; then 517235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlopen_self=$dlopen_self_static 517335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 517435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prefer_static_libs=yes 517535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 517635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -static) 517735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$pic_flag" && test -n "$link_static_flag"; then 517835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlopen_self=$dlopen_self_static 517935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 518035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prefer_static_libs=built 518135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 518235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -static-libtool-libs) 518335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$pic_flag" && test -n "$link_static_flag"; then 518435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlopen_self=$dlopen_self_static 518535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 518635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prefer_static_libs=yes 518735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 518835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 518935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=no 519035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_old_libs=yes 519135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 519235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 519335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 519435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 519535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 519635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # See if our shared archives depend on static archives. 519735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$old_archive_from_new_cmds" && build_old_libs=yes 519835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 519935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Go through the arguments, transforming them on the way. 520035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while test "$#" -gt 0; do 520135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg="$1" 520235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 520335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$arg" 520435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes qarg=$func_quote_for_eval_unquoted_result 520535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libtool_args " $func_quote_for_eval_result" 520635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 520735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the previous option needs an argument, assign it. 520835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$prev"; then 520935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $prev in 521035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output) 521135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " @OUTPUT@" 521235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " @OUTPUT@" 521335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 521435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 521535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 521635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $prev in 521735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes bindir) 521835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes bindir="$arg" 521935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 522035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 522135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 522235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlfiles|dlprefiles) 522335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$preload" = no; then 522435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add the symbol object into the linking commands. 522535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " @SYMFILE@" 522635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " @SYMFILE@" 522735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes preload=yes 522835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 522935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg in 523035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la | *.lo) ;; # We handle these cases below. 523135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes force) 523235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$dlself" = no; then 523335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlself=needless 523435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_dynamic=yes 523535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 523635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 523735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 523835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 523935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes self) 524035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$prev" = dlprefiles; then 524135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlself=yes 524235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 524335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlself=yes 524435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 524535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlself=needless 524635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_dynamic=yes 524735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 524835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 524935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 525035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 525135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 525235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$prev" = dlfiles; then 525335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlfiles " $arg" 525435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 525535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlprefiles " $arg" 525635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 525735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 525835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 525935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 526035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 526135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 526235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes expsyms) 526335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols="$arg" 526435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -f "$arg" \ 526535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes || func_fatal_error "symbol file \`$arg' does not exist" 526635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 526735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 526835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 526935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes expsyms_regex) 527035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols_regex="$arg" 527135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 527235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 527335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 527435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes framework) 527535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 527635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-darwin*) 527735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$deplibs " in 527835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $qarg.ltframework "*) ;; 527935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append deplibs " $qarg.ltframework" # this is fixed later 528035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 528135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 528235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 528335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 528435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 528535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 528635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 528735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes inst_prefix) 528835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes inst_prefix_dir="$arg" 528935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 529035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 529135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 529235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes objectlist) 529335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$arg"; then 529435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_arg=$arg 529535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes moreargs= 529635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for fil in `cat "$save_arg"` 529735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 529835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_append moreargs " $fil" 529935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg=$fil 530035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # A libtool-controlled object. 530135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 530235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check to see that this really is a libtool object. 530335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_lalib_unsafe_p "$arg"; then 530435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_object= 530535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes non_pic_object= 530635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 530735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Read the .lo file 530835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$arg" 530935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 531035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$pic_object" || 531135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$non_pic_object" || 531235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$pic_object" = none && 531335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$non_pic_object" = none; then 531435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot find name of object for \`$arg'" 531535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 531635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 531735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Extract subdirectory from the argument. 531835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$arg" "/" "" 531935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes xdir="$func_dirname_result" 532035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 532135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pic_object" != none; then 532235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Prepend the subdirectory the object is found in. 532335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_object="$xdir$pic_object" 532435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 532535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$prev" = dlfiles; then 532635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 532735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlfiles " $pic_object" 532835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 532935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 533035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 533135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If libtool objects are unsupported, then we need to preload. 533235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=dlprefiles 533335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 533435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 533535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 533635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # CHECK ME: I think I busted this. -Ossama 533735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$prev" = dlprefiles; then 533835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Preload the old-style object. 533935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlprefiles " $pic_object" 534035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 534135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 534235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 534335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # A PIC object. 534435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libobjs " $pic_object" 534535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg="$pic_object" 534635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 534735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 534835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Non-PIC object. 534935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$non_pic_object" != none; then 535035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Prepend the subdirectory the object is found in. 535135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes non_pic_object="$xdir$non_pic_object" 535235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 535335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # A standard non-PIC object 535435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append non_pic_objects " $non_pic_object" 535535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$pic_object" || test "$pic_object" = none ; then 535635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg="$non_pic_object" 535735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 535835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 535935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the PIC object exists, use it instead. 536035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # $xdir was prepended to $pic_object above. 536135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes non_pic_object="$pic_object" 536235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append non_pic_objects " $non_pic_object" 536335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 536435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 536535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Only an error if not doing a dry-run. 536635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $opt_dry_run; then 536735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Extract subdirectory from the argument. 536835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$arg" "/" "" 536935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes xdir="$func_dirname_result" 537035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 537135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lo2o "$arg" 537235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_object=$xdir$objdir/$func_lo2o_result 537335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes non_pic_object=$xdir$func_lo2o_result 537435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libobjs " $pic_object" 537535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append non_pic_objects " $non_pic_object" 537635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 537735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$arg' is not a valid libtool object" 537835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 537935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 538035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 538135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 538235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "link input file \`$arg' does not exist" 538335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 538435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg=$save_arg 538535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 538635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 538735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 538835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes precious_regex) 538935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes precious_files_regex="$arg" 539035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 539135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 539235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 539335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes release) 539435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes release="-$arg" 539535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 539635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 539735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 539835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes rpath | xrpath) 539935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We need an absolute path. 540035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg in 540135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]*) ;; 540235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 540335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "only absolute run-paths are allowed" 540435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 540535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 540635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$prev" = rpath; then 540735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$rpath " in 540835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $arg "*) ;; 540935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append rpath " $arg" ;; 541035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 541135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 541235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$xrpath " in 541335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $arg "*) ;; 541435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append xrpath " $arg" ;; 541535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 541635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 541735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 541835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 541935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 542035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shrext) 542135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shrext_cmds="$arg" 542235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 542335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 542435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 542535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes weak) 542635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append weak_libs " $arg" 542735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 542835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 542935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 543035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes xcclinker) 543135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append linker_flags " $qarg" 543235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compiler_flags " $qarg" 543335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 543435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $qarg" 543535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $qarg" 543635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 543735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 543835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes xcompiler) 543935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compiler_flags " $qarg" 544035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 544135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $qarg" 544235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $qarg" 544335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 544435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 544535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes xlinker) 544635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append linker_flags " $qarg" 544735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compiler_flags " $wl$qarg" 544835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 544935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $wl$qarg" 545035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $wl$qarg" 545135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 545235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 545335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 545435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$prev=\"\$arg\"" 545535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 545635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 545735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 545835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 545935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # test -n "$prev" 546035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 546135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prevarg="$arg" 546235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 546335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $arg in 546435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -all-static) 546535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$link_static_flag"; then 546635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # See comment for -static flag below, for more details. 546735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $link_static_flag" 546835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $link_static_flag" 546935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 547035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 547135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 547235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 547335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -allow-undefined) 547435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # FIXME: remove this flag sometime in the future. 547535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`-allow-undefined' must not be used because it is the default" 547635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 547735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 547835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -avoid-version) 547935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes avoid_version=yes 548035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 548135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 548235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 548335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -bindir) 548435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=bindir 548535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 548635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 548735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 548835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -dlopen) 548935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=dlfiles 549035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 549135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 549235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 549335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -dlpreopen) 549435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=dlprefiles 549535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 549635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 549735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 549835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -export-dynamic) 549935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_dynamic=yes 550035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 550135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 550235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 550335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -export-symbols | -export-symbols-regex) 550435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 550535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "more than one -exported-symbols argument is not allowed" 550635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 550735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$arg" = "X-export-symbols"; then 550835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=expsyms 550935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 551035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=expsyms_regex 551135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 551235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 551335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 551435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 551535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -framework) 551635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=framework 551735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 551835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 551935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 552035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -inst-prefix-dir) 552135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=inst_prefix 552235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 552335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 552435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 552535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 552635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # so, if we see these flags be careful not to treat them like -L 552735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L[A-Z][A-Z]*:*) 552835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $with_gcc/$host in 552935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes no/*-*-irix* | /*-*-irix*) 553035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $arg" 553135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $arg" 553235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 553335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 553435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 553535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 553635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 553735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L*) 553835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname "-L" '' "$arg" 553935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$func_stripname_result"; then 554035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$#" -gt 0; then 554135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "require no space between \`-L' and \`$1'" 554235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 554335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "need path for \`-L' option" 554435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 554535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 554635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$func_stripname_result" 554735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir=$func_resolve_sysroot_result 554835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We need an absolute path. 554935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $dir in 555035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]*) ;; 555135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 555235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes absdir=`cd "$dir" && pwd` 555335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$absdir" && \ 555435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot determine absolute directory name of \`$dir'" 555535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir="$absdir" 555635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 555735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 555835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$deplibs " in 555935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" -L$dir "* | *" $arg "*) 556035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Will only happen for absolute or sysroot arguments 556135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 556235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 556335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Preserve sysroot, but never include relative directories 556435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $dir in 556535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 556635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append deplibs " -L$dir" ;; 556735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 556835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append lib_search_path " $dir" 556935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 557035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 557135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 557235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 557335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 557435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case :$dllsearchpath: in 557535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *":$dir:"*) ;; 557635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ::) dllsearchpath=$dir;; 557735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append dllsearchpath ":$dir";; 557835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 557935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case :$dllsearchpath: in 558035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *":$testbindir:"*) ;; 558135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ::) dllsearchpath=$testbindir;; 558235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append dllsearchpath ":$testbindir";; 558335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 558435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 558535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 558635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 558735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 558835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 558935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -l*) 559035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 559135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 559235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 559335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # These systems don't actually have a C or math library (as such) 559435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 559535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 559635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-os2*) 559735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # These systems don't actually have a C library (as such) 559835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$arg" = "X-lc" && continue 559935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 560035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 560135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do not include libc due to us having libc/libc_r. 560235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$arg" = "X-lc" && continue 560335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 560435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-rhapsody* | *-*-darwin1.[012]) 560535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Rhapsody C and math libraries are in the System framework 560635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append deplibs " System.ltframework" 560735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 560835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 560935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-sco3.2v5* | *-*-sco5v6*) 561035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Causes problems with __ctype 561135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$arg" = "X-lc" && continue 561235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 561335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 561435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Compiler inserts libc in the correct place for threads to work 561535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$arg" = "X-lc" && continue 561635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 561735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 561835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "X$arg" = "X-lc_r"; then 561935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 562035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 562135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do not include libc_r directly, use -pthread flag. 562235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 562335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 562435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 562535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 562635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append deplibs " $arg" 562735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 562835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 562935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 563035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -module) 563135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes module=yes 563235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 563335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 563435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 563535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Tru64 UNIX uses -model [arg] to determine the layout of C++ 563635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # classes, name mangling, and exception handling. 563735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Darwin uses the -arch flag to determine output architecture. 563835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -model|-arch|-isysroot|--sysroot) 563935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compiler_flags " $arg" 564035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $arg" 564135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $arg" 564235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=xcompiler 564335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 564435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 564535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 564635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 564735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compiler_flags " $arg" 564835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $arg" 564935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $arg" 565035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$new_inherited_linker_flags " in 565135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $arg "*) ;; 565235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes * ) func_append new_inherited_linker_flags " $arg" ;; 565335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 565435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 565535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 565635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 565735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -multi_module) 565835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes single_module="${wl}-multi_module" 565935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 566035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 566135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 566235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -no-fast-install) 566335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fast_install=no 566435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 566535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 566635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 566735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -no-install) 566835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 566935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 567035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The PATH hackery in wrapper scripts is required on Windows 567135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # and Darwin in order for the loader to find any dlls it needs. 567235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-no-install' is ignored for $host" 567335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "assuming \`-no-fast-install' instead" 567435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fast_install=no 567535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 567635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) no_install=yes ;; 567735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 567835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 567935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 568035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 568135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -no-undefined) 568235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes allow_undefined=no 568335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 568435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 568535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 568635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -objectlist) 568735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=objectlist 568835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 568935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 569035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 569135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -o) prev=output ;; 569235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 569335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -precious-files-regex) 569435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=precious_regex 569535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 569635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 569735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 569835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -release) 569935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=release 570035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 570135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 570235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 570335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -rpath) 570435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=rpath 570535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 570635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 570735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 570835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -R) 570935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=xrpath 571035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 571135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 571235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 571335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -R*) 571435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '-R' '' "$arg" 571535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir=$func_stripname_result 571635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We need an absolute path. 571735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $dir in 571835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]*) ;; 571935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes =*) 572035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '=' '' "$dir" 572135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir=$lt_sysroot$func_stripname_result 572235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 572335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 572435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "only absolute run-paths are allowed" 572535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 572635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 572735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$xrpath " in 572835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $dir "*) ;; 572935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append xrpath " $dir" ;; 573035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 573135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 573235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 573335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 573435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -shared) 573535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The effects of -shared are defined in a previous loop. 573635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 573735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 573835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 573935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -shrext) 574035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=shrext 574135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 574235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 574335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 574435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -static | -static-libtool-libs) 574535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The effects of -static are defined in a previous loop. 574635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We used to do the same as -all-static on platforms that 574735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # didn't have a PIC flag, but the assumption that the effects 574835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # would be equivalent was wrong. It would break on at least 574935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Digital Unix and AIX. 575035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 575135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 575235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 575335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -thread-safe) 575435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes thread_safe=yes 575535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 575635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 575735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 575835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -version-info) 575935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=vinfo 576035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 576135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 576235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 576335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -version-number) 576435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=vinfo 576535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes vinfo_number=yes 576635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 576735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 576835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 576935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -weak) 577035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=weak 577135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 577235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 577335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 577435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Wc,*) 577535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '-Wc,' '' "$arg" 577635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes args=$func_stripname_result 577735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg= 577835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_ifs="$IFS"; IFS=',' 577935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for flag in $args; do 578035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 578135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$flag" 578235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append arg " $func_quote_for_eval_result" 578335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compiler_flags " $func_quote_for_eval_result" 578435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 578535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 578635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname ' ' '' "$arg" 578735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg=$func_stripname_result 578835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 578935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 579035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Wl,*) 579135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '-Wl,' '' "$arg" 579235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes args=$func_stripname_result 579335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg= 579435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_ifs="$IFS"; IFS=',' 579535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for flag in $args; do 579635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 579735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$flag" 579835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append arg " $wl$func_quote_for_eval_result" 579935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compiler_flags " $wl$func_quote_for_eval_result" 580035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append linker_flags " $func_quote_for_eval_result" 580135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 580235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 580335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname ' ' '' "$arg" 580435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg=$func_stripname_result 580535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 580635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 580735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Xcompiler) 580835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=xcompiler 580935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 581035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 581135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 581235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -Xlinker) 581335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=xlinker 581435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 581535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 581635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 581735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -XCClinker) 581835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=xcclinker 581935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 582035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 582135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 582235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -msg_* for osf cc 582335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -msg_*) 582435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$arg" 582535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg="$func_quote_for_eval_result" 582635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 582735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 582835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Flags to be passed through unchanged, with rationale: 582935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 583035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -r[0-9][0-9]* specify processor for the SGI compiler 583135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 583235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # +DA*, +DD* enable 64-bit mode for the HP compiler 583335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -q* compiler args for the IBM compiler 583435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 583535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -F/path path to uninstalled frameworks, gcc on darwin 583635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 583735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # @file GCC response files 583835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -tp=* Portland pgcc target processor selection 583935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # --sysroot=* for sysroot support 584035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 584135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 584235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 584335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 584435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$arg" 584535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg="$func_quote_for_eval_result" 584635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $arg" 584735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $arg" 584835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compiler_flags " $arg" 584935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 585035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 585135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 585235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Some other compiler flag. 585335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -* | +*) 585435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$arg" 585535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg="$func_quote_for_eval_result" 585635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 585735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 585835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.$objext) 585935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # A standard object. 586035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append objs " $arg" 586135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 586235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 586335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.lo) 586435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # A libtool-controlled object. 586535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 586635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check to see that this really is a libtool object. 586735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_lalib_unsafe_p "$arg"; then 586835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_object= 586935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes non_pic_object= 587035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 587135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Read the .lo file 587235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$arg" 587335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 587435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$pic_object" || 587535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$non_pic_object" || 587635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$pic_object" = none && 587735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$non_pic_object" = none; then 587835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot find name of object for \`$arg'" 587935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 588035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 588135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Extract subdirectory from the argument. 588235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$arg" "/" "" 588335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes xdir="$func_dirname_result" 588435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 588535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pic_object" != none; then 588635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Prepend the subdirectory the object is found in. 588735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_object="$xdir$pic_object" 588835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 588935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$prev" = dlfiles; then 589035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 589135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlfiles " $pic_object" 589235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 589335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 589435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 589535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If libtool objects are unsupported, then we need to preload. 589635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev=dlprefiles 589735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 589835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 589935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 590035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # CHECK ME: I think I busted this. -Ossama 590135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$prev" = dlprefiles; then 590235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Preload the old-style object. 590335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlprefiles " $pic_object" 590435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 590535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 590635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 590735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # A PIC object. 590835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libobjs " $pic_object" 590935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg="$pic_object" 591035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 591135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 591235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Non-PIC object. 591335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$non_pic_object" != none; then 591435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Prepend the subdirectory the object is found in. 591535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes non_pic_object="$xdir$non_pic_object" 591635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 591735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # A standard non-PIC object 591835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append non_pic_objects " $non_pic_object" 591935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$pic_object" || test "$pic_object" = none ; then 592035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg="$non_pic_object" 592135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 592235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 592335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the PIC object exists, use it instead. 592435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # $xdir was prepended to $pic_object above. 592535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes non_pic_object="$pic_object" 592635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append non_pic_objects " $non_pic_object" 592735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 592835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 592935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Only an error if not doing a dry-run. 593035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $opt_dry_run; then 593135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Extract subdirectory from the argument. 593235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$arg" "/" "" 593335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes xdir="$func_dirname_result" 593435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 593535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lo2o "$arg" 593635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pic_object=$xdir$objdir/$func_lo2o_result 593735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes non_pic_object=$xdir$func_lo2o_result 593835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libobjs " $pic_object" 593935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append non_pic_objects " $non_pic_object" 594035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 594135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$arg' is not a valid libtool object" 594235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 594335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 594435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 594535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 594635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.$libext) 594735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # An archive. 594835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append deplibs " $arg" 594935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append old_deplibs " $arg" 595035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 595135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 595235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 595335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) 595435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # A libtool-controlled library. 595535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 595635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$arg" 595735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$prev" = dlfiles; then 595835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # This library was specified with -dlopen. 595935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlfiles " $func_resolve_sysroot_result" 596035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 596135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$prev" = dlprefiles; then 596235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The library was specified with -dlpreopen. 596335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlprefiles " $func_resolve_sysroot_result" 596435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prev= 596535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 596635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append deplibs " $func_resolve_sysroot_result" 596735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 596835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 596935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 597035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 597135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Some other compiler argument. 597235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 597335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Unknown arguments in both finalize_command and compile_command need 597435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # to be aesthetically quoted because they are evaled later. 597535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$arg" 597635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes arg="$func_quote_for_eval_result" 597735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 597835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac # arg 597935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 598035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now actually substitute the argument into the commands. 598135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$arg"; then 598235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $arg" 598335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $arg" 598435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 598535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done # argument parsing loop 598635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 598735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$prev" && \ 598835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "the \`$prevarg' option requires an argument" 598935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 599035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 599135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval arg=\"$export_dynamic_flag_spec\" 599235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $arg" 599335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $arg" 599435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 599535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 599635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldlibs= 599735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # calculate the name of the file, without its directory 599835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$output" 599935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes outputname="$func_basename_result" 600035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobjs_save="$libobjs" 600135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 600235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$shlibpath_var"; then 600335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # get the directories listed in $shlibpath_var 600435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 600535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 600635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shlib_search_path= 600735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 600835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 600935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 601035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 601135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$output" "/" "" 601235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output_objdir="$func_dirname_result$objdir" 601335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$output_objdir/" 601435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tool_output_objdir=$func_to_tool_file_result 601535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Create the object directory. 601635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_mkdir_p "$output_objdir" 601735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 601835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Determine the type of output 601935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $output in 602035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes "") 602135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "you must specify an output file" 602235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 602335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.$libext) linkmode=oldlib ;; 602435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.lo | *.$objext) linkmode=obj ;; 602535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) linkmode=lib ;; 602635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) linkmode=prog ;; # Anything else should be a program. 602735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 602835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 602935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes specialdeplibs= 603035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 603135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libs= 603235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Find all interdependent deplibs by searching for libraries 603335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # that are linked more than once (e.g. -la -lb -la) 603435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $deplibs; do 603535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $opt_preserve_dup_deps ; then 603635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$libs " in 603735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) func_append specialdeplibs " $deplib" ;; 603835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 603935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 604035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libs " $deplib" 604135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 604235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 604335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = lib; then 604435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libs="$predeps $libs $compiler_lib_search_path $postdeps" 604535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 604635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Compute libraries that are listed more than once in $predeps 604735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # $postdeps and mark them as special (i.e., whose duplicates are 604835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # not to be eliminated). 604935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pre_post_deps= 605035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $opt_duplicate_compiler_generated_deps; then 605135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for pre_post_dep in $predeps $postdeps; do 605235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$pre_post_deps " in 605335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 605435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 605535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append pre_post_deps " $pre_post_dep" 605635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 605735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 605835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pre_post_deps= 605935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 606035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 606135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs= 606235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdependency_libs= 606335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newlib_search_path= 606435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes need_relink=no # whether we're linking any uninstalled libtool libraries 606535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes notinst_deplibs= # not-installed libtool libraries 606635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes notinst_path= # paths that contain not-installed libtool libraries 606735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 606835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $linkmode in 606935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib) 607035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes passes="conv dlpreopen link" 607135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for file in $dlfiles $dlprefiles; do 607235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $file in 607335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) ;; 607435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 607535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 607635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 607735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 607835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 607935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 608035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prog) 608135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs= 608235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs= 608335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes alldeplibs=no 608435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdlfiles= 608535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdlprefiles= 608635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes passes="conv scan dlopen dlpreopen link" 608735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 608835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) passes="conv" 608935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 609035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 609135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 609235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for pass in $passes; do 609335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The preopen pass in lib mode reverses $deplibs; put it back here 609435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # so that -L comes before libs that need it for instance... 609535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode,$pass" = "lib,link"; then 609635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ## FIXME: Find the place where the list is rebuilt in the wrong 609735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ## order, and fix it there properly 609835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_deplibs= 609935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $deplibs; do 610035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_deplibs="$deplib $tmp_deplibs" 610135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 610235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$tmp_deplibs" 610335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 610435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 610535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode,$pass" = "lib,link" || 610635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$linkmode,$pass" = "prog,scan"; then 610735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libs="$deplibs" 610835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs= 610935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 611035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = prog; then 611135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $pass in 611235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlopen) libs="$dlfiles" ;; 611335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlpreopen) libs="$dlprefiles" ;; 611435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link) 611535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libs="$deplibs %DEPLIBS%" 611635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 611735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 611835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 611935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 612035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode,$pass" = "lib,dlpreopen"; then 612135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Collect and forward deplibs of preopened libtool libs 612235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lib in $dlprefiles; do 612335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Ignore non-libtool-libs 612435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dependency_libs= 612535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$lib" 612635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $lib in 612735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) func_source "$func_resolve_sysroot_result" ;; 612835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 612935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 613035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Collect preopened libtool deplibs, except any this library 613135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # has declared as weak libs 613235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $dependency_libs; do 613335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$deplib" 613435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplib_base=$func_basename_result 613535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $weak_libs " in 613635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib_base "*) ;; 613735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append deplibs " $deplib" ;; 613835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 613935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 614035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 614135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libs="$dlprefiles" 614235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 614335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = dlopen; then 614435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Collect dlpreopened libraries 614535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_deplibs="$deplibs" 614635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs= 614735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 614835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 614935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $libs; do 615035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib= 615135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes found=no 615235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplib in 615335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 615435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode,$pass" = "prog,link"; then 615535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$deplib $compile_deplibs" 615635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="$deplib $finalize_deplibs" 615735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 615835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compiler_flags " $deplib" 615935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = lib ; then 616035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$new_inherited_linker_flags " in 616135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) ;; 616235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes * ) func_append new_inherited_linker_flags " $deplib" ;; 616335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 616435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 616535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 616635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 616735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 616835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -l*) 616935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" != lib && test "$linkmode" != prog; then 617035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-l' is ignored for archives/objects" 617135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 617235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 617335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '-l' '' "$deplib" 617435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name=$func_stripname_result 617535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = lib; then 617635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 617735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 617835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 617935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 618035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for searchdir in $searchdirs; do 618135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for search_ext in .la $std_shrext .so .a; do 618235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Search the libtool library 618335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib="$searchdir/lib${name}${search_ext}" 618435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$lib"; then 618535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$search_ext" = ".la"; then 618635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes found=yes 618735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 618835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes found=no 618935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 619035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 2 619135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 619235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 619335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 619435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$found" != yes; then 619535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # deplib doesn't seem to be a libtool library 619635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode,$pass" = "prog,link"; then 619735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$deplib $compile_deplibs" 619835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="$deplib $finalize_deplibs" 619935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 620035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 620135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 620235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 620335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 620435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else # deplib is a libtool library 620535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 620635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We need to do some special things here, and not later. 620735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 620835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $predeps $postdeps " in 620935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) 621035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_lalib_p "$lib"; then 621135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes library_names= 621235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes old_library= 621335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$lib" 621435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for l in $old_library $library_names; do 621535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ll="$l" 621635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 621735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$ll" = "X$old_library" ; then # only static version available 621835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes found=no 621935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$lib" "" "." 622035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ladir="$func_dirname_result" 622135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib=$ladir/$old_library 622235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode,$pass" = "prog,link"; then 622335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$deplib $compile_deplibs" 622435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="$deplib $finalize_deplibs" 622535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 622635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 622735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 622835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 622935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 623035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 623135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 623235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 623335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) ;; 623435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 623535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 623635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 623735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; # -l 623835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.ltframework) 623935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode,$pass" = "prog,link"; then 624035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$deplib $compile_deplibs" 624135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="$deplib $finalize_deplibs" 624235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 624335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 624435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = lib ; then 624535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$new_inherited_linker_flags " in 624635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) ;; 624735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes * ) func_append new_inherited_linker_flags " $deplib" ;; 624835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 624935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 625035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 625135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 625235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 625335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L*) 625435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $linkmode in 625535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib) 625635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 625735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$pass" = conv && continue 625835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdependency_libs="$deplib $newdependency_libs" 625935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '-L' '' "$deplib" 626035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$func_stripname_result" 626135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newlib_search_path " $func_resolve_sysroot_result" 626235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 626335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prog) 626435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = conv; then 626535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 626635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 626735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 626835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = scan; then 626935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 627035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 627135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$deplib $compile_deplibs" 627235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="$deplib $finalize_deplibs" 627335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 627435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '-L' '' "$deplib" 627535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$func_stripname_result" 627635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newlib_search_path " $func_resolve_sysroot_result" 627735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 627835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 627935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-L' is ignored for archives/objects" 628035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 628135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac # linkmode 628235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 628335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; # -L 628435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -R*) 628535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = link; then 628635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '-R' '' "$deplib" 628735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$func_stripname_result" 628835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir=$func_resolve_sysroot_result 628935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make sure the xrpath contains only unique directories. 629035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$xrpath " in 629135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $dir "*) ;; 629235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append xrpath " $dir" ;; 629335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 629435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 629535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 629635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 629735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 629835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) 629935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$deplib" 630035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib=$func_resolve_sysroot_result 630135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 630235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.$libext) 630335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = conv; then 630435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 630535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 630635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 630735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $linkmode in 630835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib) 630935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Linking convenience modules into shared libraries is allowed, 631035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # but linking other static libraries is non-portable. 631135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $dlpreconveniencelibs " in 631235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) ;; 631335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 631435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes valid_a_lib=no 631535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplibs_check_method in 631635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes match_pattern*) 631735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $deplibs_check_method; shift 631835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 631935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 632035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes | $EGREP "$match_pattern_regex" > /dev/null; then 632135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes valid_a_lib=yes 632235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 632335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 632435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pass_all) 632535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes valid_a_lib=yes 632635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 632735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 632835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$valid_a_lib" != yes; then 632935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 633035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: Trying to link with static lib archive $deplib." 633135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** I have the capability to make that library automatically link in when" 633235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** you link to this library. But I can only do this if you have a" 633335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** shared version of the library, which you do not appear to have" 633435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** because the file extensions .$libext of this argument makes me believe" 633535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** that it is just a static archive that I should not use here." 633635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 633735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 633835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: Linking the shared library $output against the" 633935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** static library $deplib is not portable!" 634035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 634135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 634235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 634335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 634435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 634535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 634635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prog) 634735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" != link; then 634835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 634935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 635035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$deplib $compile_deplibs" 635135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="$deplib $finalize_deplibs" 635235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 635335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 635435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 635535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac # linkmode 635635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; # *.$libext 635735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.lo | *.$objext) 635835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = conv; then 635935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 636035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$linkmode" = prog; then 636135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 636235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If there is no dlopen support or we're linking statically, 636335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # we need to preload. 636435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlprefiles " $deplib" 636535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$deplib $compile_deplibs" 636635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="$deplib $finalize_deplibs" 636735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 636835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlfiles " $deplib" 636935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 637035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 637135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 637235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 637335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes %DEPLIBS%) 637435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes alldeplibs=yes 637535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 637635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 637735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac # case $deplib 637835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 637935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$found" = yes || test -f "$lib"; then : 638035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 638135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 638235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 638335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 638435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check to see that this really is a libtool archive. 638535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lalib_unsafe_p "$lib" \ 638635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes || func_fatal_error "\`$lib' is not a valid libtool archive" 638735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 638835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$lib" "" "." 638935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ladir="$func_dirname_result" 639035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 639135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlname= 639235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlopen= 639335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlpreopen= 639435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libdir= 639535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes library_names= 639635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes old_library= 639735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes inherited_linker_flags= 639835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the library was installed with an old release of libtool, 639935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # it will not redefine variables installed, or shouldnotlink 640035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes installed=yes 640135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shouldnotlink=no 640235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes avoidtemprpath= 640335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 640435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 640535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Read the .la file 640635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source "$lib" 640735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 640835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Convert "-framework foo" to "foo.ltframework" 640935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$inherited_linker_flags"; then 641035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 641135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 641235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $new_inherited_linker_flags " in 641335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $tmp_inherited_linker_flag "*) ;; 641435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 641535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 641635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 641735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 641835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 641935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode,$pass" = "lib,link" || 642035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$linkmode,$pass" = "prog,scan" || 642135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { test "$linkmode" != prog && test "$linkmode" != lib; }; then 642235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$dlopen" && func_append dlfiles " $dlopen" 642335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 642435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 642535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 642635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = conv; then 642735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Only check for convenience libraries 642835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$lib $deplibs" 642935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$libdir"; then 643035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$old_library"; then 643135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot find name of link library for \`$lib'" 643235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 643335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # It is a libtool convenience library, so add in its objects. 643435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append convenience " $ladir/$objdir/$old_library" 643535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append old_convenience " $ladir/$objdir/$old_library" 643635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_libs= 643735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $dependency_libs; do 643835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 643935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $opt_preserve_dup_deps ; then 644035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$tmp_libs " in 644135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) func_append specialdeplibs " $deplib" ;; 644235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 644335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 644435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append tmp_libs " $deplib" 644535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 644635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$linkmode" != prog && test "$linkmode" != lib; then 644735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$lib' is not a convenience library" 644835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 644935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 645035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # $pass = conv 645135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 645235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 645335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Get the name of the library we link against. 645435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes linklib= 645535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$old_library" && 645635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { test "$prefer_static_libs" = yes || 645735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$prefer_static_libs,$installed" = "built,no"; }; then 645835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes linklib=$old_library 645935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 646035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for l in $old_library $library_names; do 646135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes linklib="$l" 646235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 646335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 646435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$linklib"; then 646535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot find name of link library for \`$lib'" 646635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 646735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 646835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # This library was specified with -dlopen. 646935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = dlopen; then 647035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$libdir"; then 647135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 647235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 647335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$dlname" || 647435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$dlopen_support" != yes || 647535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$build_libtool_libs" = no; then 647635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If there is no dlname, no dlopen support or we're linking 647735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # statically, we need to preload. We also need to preload any 647835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # dependent libraries so libltdl's deplib preloader doesn't 647935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # bomb out in the load deplibs phase. 648035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlprefiles " $lib $dependency_libs" 648135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 648235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlfiles " $lib" 648335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 648435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 648535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # $pass = dlopen 648635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 648735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We need an absolute path. 648835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $ladir in 648935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 649035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 649135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes abs_ladir=`cd "$ladir" && pwd` 649235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$abs_ladir"; then 649335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "cannot determine absolute directory name of \`$ladir'" 649435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "passing it literally to the linker, although it might fail" 649535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes abs_ladir="$ladir" 649635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 649735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 649835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 649935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$lib" 650035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes laname="$func_basename_result" 650135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 650235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Find the relevant object directory and library name. 650335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$installed" = Xyes; then 650435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 650535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "library \`$lib' was moved." 650635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir="$ladir" 650735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes absdir="$abs_ladir" 650835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libdir="$abs_ladir" 650935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 651035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir="$lt_sysroot$libdir" 651135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes absdir="$lt_sysroot$libdir" 651235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 651335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 651435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 651535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 651635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir="$ladir" 651735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes absdir="$abs_ladir" 651835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remove this search path later 651935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append notinst_path " $abs_ladir" 652035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 652135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir="$ladir/$objdir" 652235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes absdir="$abs_ladir/$objdir" 652335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remove this search path later 652435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append notinst_path " $abs_ladir" 652535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 652635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # $installed = yes 652735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname 'lib' '.la' "$laname" 652835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name=$func_stripname_result 652935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 653035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # This library was specified with -dlpreopen. 653135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = dlpreopen; then 653235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$libdir" && test "$linkmode" = prog; then 653335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 653435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 653535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$host" in 653635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # special handling for platforms with PE-DLLs. 653735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | *mingw* | *cegcc* ) 653835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Linker will automatically link against shared library if both 653935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # static and shared are present. Therefore, ensure we extract 654035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # symbols from the import library if a shared library is present 654135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # (otherwise, the dlopen module name will be incorrect). We do 654235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # this by putting the import library name into $newdlprefiles. 654335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We recover the dlopen module name by 'saving' the la file 654435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # name in a special purpose variable, and (later) extracting the 654535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # dlname from the la file. 654635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dlname"; then 654735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_tr_sh "$dir/$linklib" 654835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 654935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlprefiles " $dir/$linklib" 655035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 655135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlprefiles " $dir/$old_library" 655235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Keep a list of preopened convenience libraries to check 655335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # that they are being used correctly in the link pass. 655435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$libdir" && \ 655535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlpreconveniencelibs " $dir/$old_library" 655635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 655735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 655835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes * ) 655935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Prefer using a static library (so that no silly _DYNAMIC symbols 656035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # are required to link). 656135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$old_library"; then 656235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlprefiles " $dir/$old_library" 656335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Keep a list of preopened convenience libraries to check 656435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # that they are being used correctly in the link pass. 656535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$libdir" && \ 656635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dlpreconveniencelibs " $dir/$old_library" 656735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Otherwise, use the dlname, so that lt_dlopen finds it. 656835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test -n "$dlname"; then 656935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlprefiles " $dir/$dlname" 657035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 657135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlprefiles " $dir/$linklib" 657235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 657335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 657435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 657535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # $pass = dlpreopen 657635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 657735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$libdir"; then 657835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Link the convenience library 657935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = lib; then 658035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$dir/$old_library $deplibs" 658135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$linkmode,$pass" = "prog,link"; then 658235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$dir/$old_library $compile_deplibs" 658335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="$dir/$old_library $finalize_deplibs" 658435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 658535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$lib $deplibs" # used for prog,scan pass 658635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 658735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 658835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 658935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 659035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 659135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = prog && test "$pass" != link; then 659235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newlib_search_path " $ladir" 659335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$lib $deplibs" 659435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 659535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes linkalldeplibs=no 659635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$link_all_deplibs" != no || test -z "$library_names" || 659735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$build_libtool_libs" = no; then 659835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes linkalldeplibs=yes 659935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 660035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 660135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_libs= 660235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $dependency_libs; do 660335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplib in 660435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L*) func_stripname '-L' '' "$deplib" 660535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$func_stripname_result" 660635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newlib_search_path " $func_resolve_sysroot_result" 660735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 660835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 660935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Need to link against all dependency_libs? 661035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkalldeplibs" = yes; then 661135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 661235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 661335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Need to hardcode shared library paths 661435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # or/and link against static libraries 661535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdependency_libs="$deplib $newdependency_libs" 661635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 661735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $opt_preserve_dup_deps ; then 661835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$tmp_libs " in 661935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) func_append specialdeplibs " $deplib" ;; 662035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 662135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 662235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append tmp_libs " $deplib" 662335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done # for deplib 662435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 662535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # $linkmode = prog... 662635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 662735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode,$pass" = "prog,link"; then 662835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$library_names" && 662935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { { test "$prefer_static_libs" = no || 663035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$prefer_static_libs,$installed" = "built,yes"; } || 663135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$old_library"; }; then 663235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We need to hardcode the library path 663335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 663435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make sure the rpath contains only unique directories. 663535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$temp_rpath:" in 663635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *"$absdir:"*) ;; 663735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append temp_rpath "$absdir:" ;; 663835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 663935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 664035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 664135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Hardcode the library path. 664235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Skip directories that are in the system default run-time 664335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # search path. 664435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $sys_lib_dlsearch_path " in 664535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $absdir "*) ;; 664635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 664735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$compile_rpath " in 664835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $absdir "*) ;; 664935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append compile_rpath " $absdir" ;; 665035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 665135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 665235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 665335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $sys_lib_dlsearch_path " in 665435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $libdir "*) ;; 665535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 665635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$finalize_rpath " in 665735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $libdir "*) ;; 665835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append finalize_rpath " $libdir" ;; 665935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 666035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 666135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 666235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # $linkmode,$pass = prog,link... 666335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 666435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$alldeplibs" = yes && 666535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { test "$deplibs_check_method" = pass_all || 666635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { test "$build_libtool_libs" = yes && 666735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$library_names"; }; }; then 666835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We only need to search for static libraries 666935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 667035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 667135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 667235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 667335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link_static=no # Whether the deplib will be linked statically 667435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes use_static_libs=$prefer_static_libs 667535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$use_static_libs" = built && test "$installed" = yes; then 667635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes use_static_libs=no 667735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 667835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$library_names" && 667935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { test "$use_static_libs" = no || test -z "$old_library"; }; then 668035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 668135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | *mingw* | *cegcc*) 668235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # No point in relinking DLLs because paths are not encoded 668335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append notinst_deplibs " $lib" 668435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes need_relink=no 668535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 668635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 668735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$installed" = no; then 668835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append notinst_deplibs " $lib" 668935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes need_relink=yes 669035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 669135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 669235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 669335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # This is a shared library 669435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 669535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Warn about portability, can't link against -module's on some 669635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # systems (darwin). Don't bleat about dlopened modules though! 669735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlopenmodule="" 669835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for dlpremoduletest in $dlprefiles; do 669935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$dlpremoduletest" = "X$lib"; then 670035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlopenmodule="$dlpremoduletest" 670135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 670235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 670335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 670435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 670535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 670635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = prog; then 670735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: Linking the executable $output against the loadable module" 670835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 670935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: Linking the shared library $output against the loadable module" 671035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 671135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** $linklib is not portable!" 671235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 671335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = lib && 671435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$hardcode_into_libs" = yes; then 671535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Hardcode the library path. 671635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Skip directories that are in the system default run-time 671735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # search path. 671835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $sys_lib_dlsearch_path " in 671935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $absdir "*) ;; 672035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 672135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$compile_rpath " in 672235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $absdir "*) ;; 672335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append compile_rpath " $absdir" ;; 672435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 672535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 672635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 672735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $sys_lib_dlsearch_path " in 672835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $libdir "*) ;; 672935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 673035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$finalize_rpath " in 673135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $libdir "*) ;; 673235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append finalize_rpath " $libdir" ;; 673335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 673435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 673535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 673635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 673735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 673835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$old_archive_from_expsyms_cmds"; then 673935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # figure out the soname 674035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $library_names 674135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 674235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes realname="$1" 674335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 674435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libname=`eval "\\$ECHO \"$libname_spec\""` 674535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # use dlname if we got it. it's perfectly good, no? 674635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dlname"; then 674735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes soname="$dlname" 674835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test -n "$soname_spec"; then 674935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # bleh windows 675035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 675135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | mingw* | *cegcc*) 675235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $current - $age 675335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=$func_arith_result 675435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix="-$major" 675535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 675635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 675735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval soname=\"$soname_spec\" 675835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 675935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes soname="$realname" 676035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 676135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 676235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make a new name for the extract_expsyms_cmds to use 676335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes soroot="$soname" 676435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$soroot" 676535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes soname="$func_basename_result" 676635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname 'lib' '.dll' "$soname" 676735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newlib=libimp-$func_stripname_result.a 676835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 676935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the library has no export list, then create one now 677035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$output_objdir/$soname-def"; then : 677135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 677235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "extracting exported symbol list from \`$soname'" 677335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 677435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 677535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 677635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Create $newlib 677735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$output_objdir/$newlib"; then :; else 677835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "generating import library for \`$soname'" 677935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 678035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 678135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # make sure the library variables are pointing to the new library 678235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir=$output_objdir 678335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes linklib=$newlib 678435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # test -n "$old_archive_from_expsyms_cmds" 678535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 678635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = prog || test "$opt_mode" != relink; then 678735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add_shlibpath= 678835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add_dir= 678935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add= 679035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib_linked=yes 679135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $hardcode_action in 679235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes immediate | unsupported) 679335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$hardcode_direct" = no; then 679435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="$dir/$linklib" 679535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 679635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 679735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-sysv4*uw2*) add_dir="-L$dir" ;; 679835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 679935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-unixware7*) add_dir="-L$dir" ;; 680035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-darwin* ) 680135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # if the lib is a (non-dlopened) module then we can not 680235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # link against it, someone is ignoring the earlier warnings 680335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if /usr/bin/file -L $add 2> /dev/null | 680435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $GREP ": [^:]* bundle" >/dev/null ; then 680535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$dlopenmodule" != "X$lib"; then 680635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: lib $linklib is a module, not a shared library" 680735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$old_library" ; then 680835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 680935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** And there doesn't seem to be a static archive available" 681035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** The link will probably fail, sorry" 681135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 681235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="$dir/$old_library" 681335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 681435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test -n "$old_library"; then 681535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="$dir/$old_library" 681635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 681735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 681835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 681935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$hardcode_minus_L" = no; then 682035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 682135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-sunos*) add_shlibpath="$dir" ;; 682235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 682335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add_dir="-L$dir" 682435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="-l$name" 682535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$hardcode_shlibpath_var" = no; then 682635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add_shlibpath="$dir" 682735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="-l$name" 682835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 682935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib_linked=no 683035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 683135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 683235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink) 683335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$hardcode_direct" = yes && 683435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$hardcode_direct_absolute" = no; then 683535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="$dir/$linklib" 683635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$hardcode_minus_L" = yes; then 683735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add_dir="-L$dir" 683835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Try looking first in the location we're being installed to. 683935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$inst_prefix_dir"; then 684035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $libdir in 684135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]*) 684235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append add_dir " -L$inst_prefix_dir$libdir" 684335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 684435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 684535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 684635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="-l$name" 684735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$hardcode_shlibpath_var" = yes; then 684835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add_shlibpath="$dir" 684935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="-l$name" 685035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 685135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib_linked=no 685235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 685335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 685435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) lib_linked=no ;; 685535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 685635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 685735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$lib_linked" != yes; then 685835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_configuration "unsupported hardcode properties" 685935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 686035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 686135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$add_shlibpath"; then 686235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case :$compile_shlibpath: in 686335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *":$add_shlibpath:"*) ;; 686435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append compile_shlibpath "$add_shlibpath:" ;; 686535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 686635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 686735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = prog; then 686835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 686935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$add" && compile_deplibs="$add $compile_deplibs" 687035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 687135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$add_dir" && deplibs="$add_dir $deplibs" 687235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$add" && deplibs="$add $deplibs" 687335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$hardcode_direct" != yes && 687435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$hardcode_minus_L" != yes && 687535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$hardcode_shlibpath_var" = yes; then 687635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case :$finalize_shlibpath: in 687735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *":$libdir:"*) ;; 687835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append finalize_shlibpath "$libdir:" ;; 687935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 688035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 688135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 688235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 688335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 688435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = prog || test "$opt_mode" = relink; then 688535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add_shlibpath= 688635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add_dir= 688735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add= 688835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Finalize command for both is simple: just hardcode it. 688935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$hardcode_direct" = yes && 689035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$hardcode_direct_absolute" = no; then 689135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="$libdir/$linklib" 689235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$hardcode_minus_L" = yes; then 689335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add_dir="-L$libdir" 689435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="-l$name" 689535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$hardcode_shlibpath_var" = yes; then 689635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case :$finalize_shlibpath: in 689735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *":$libdir:"*) ;; 689835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append finalize_shlibpath "$libdir:" ;; 689935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 690035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="-l$name" 690135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$hardcode_automatic" = yes; then 690235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$inst_prefix_dir" && 690335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -f "$inst_prefix_dir$libdir/$linklib" ; then 690435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="$inst_prefix_dir$libdir/$linklib" 690535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 690635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="$libdir/$linklib" 690735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 690835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 690935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We cannot seem to hardcode it, guess we'll fake it. 691035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add_dir="-L$libdir" 691135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Try looking first in the location we're being installed to. 691235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$inst_prefix_dir"; then 691335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $libdir in 691435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]*) 691535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append add_dir " -L$inst_prefix_dir$libdir" 691635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 691735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 691835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 691935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes add="-l$name" 692035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 692135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 692235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = prog; then 692335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 692435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 692535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 692635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$add_dir" && deplibs="$add_dir $deplibs" 692735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$add" && deplibs="$add $deplibs" 692835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 692935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 693035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$linkmode" = prog; then 693135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Here we assume that one of hardcode_direct or hardcode_minus_L 693235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # is not unsupported. This is valid on all known static and 693335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # shared platforms. 693435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$hardcode_direct" != unsupported; then 693535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$old_library" && linklib="$old_library" 693635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$dir/$linklib $compile_deplibs" 693735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="$dir/$linklib $finalize_deplibs" 693835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 693935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="-l$name -L$dir $compile_deplibs" 694035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="-l$name -L$dir $finalize_deplibs" 694135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 694235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test "$build_libtool_libs" = yes; then 694335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Not a shared library 694435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$deplibs_check_method" != pass_all; then 694535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We're trying link a shared library against a static one 694635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # but the system doesn't support it. 694735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 694835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Just print a warning and add the library to dependency_libs so 694935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # that the program can be linked against the static library. 695035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 695135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: This system can not link to static lib archive $lib." 695235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** I have the capability to make that library automatically link in when" 695335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** you link to this library. But I can only do this if you have a" 695435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** shared version of the library, which you do not appear to have." 695535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$module" = yes; then 695635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** But as you try to build a module library, libtool will still create " 695735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** a static module, that should work as long as the dlopening application" 695835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 695935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$global_symbol_pipe"; then 696035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 696135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** However, this would only work if libtool was able to extract symbol" 696235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 696335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** not find such a program. So, this module is probably useless." 696435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** \`nm' from GNU binutils and a full rebuild may help." 696535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 696635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_old_libs" = no; then 696735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=module 696835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_old_libs=yes 696935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 697035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=no 697135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 697235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 697335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 697435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$dir/$old_library $deplibs" 697535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link_static=yes 697635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 697735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # link shared/static library? 697835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 697935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = lib; then 698035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dependency_libs" && 698135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { test "$hardcode_into_libs" != yes || 698235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$build_old_libs" = yes || 698335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$link_static" = yes; }; then 698435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Extract -R from dependency_libs 698535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes temp_deplibs= 698635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for libdir in $dependency_libs; do 698735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $libdir in 698835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -R*) func_stripname '-R' '' "$libdir" 698935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes temp_xrpath=$func_stripname_result 699035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $xrpath " in 699135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $temp_xrpath "*) ;; 699235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append xrpath " $temp_xrpath";; 699335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac;; 699435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append temp_deplibs " $libdir";; 699535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 699635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 699735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dependency_libs="$temp_deplibs" 699835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 699935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 700035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newlib_search_path " $absdir" 700135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Link against this library 700235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 700335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # ... and its dependency_libs 700435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_libs= 700535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $dependency_libs; do 700635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdependency_libs="$deplib $newdependency_libs" 700735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplib in 700835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L*) func_stripname '-L' '' "$deplib" 700935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$func_stripname_result";; 701035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_resolve_sysroot "$deplib" ;; 701135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 701235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $opt_preserve_dup_deps ; then 701335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$tmp_libs " in 701435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $func_resolve_sysroot_result "*) 701535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append specialdeplibs " $func_resolve_sysroot_result" ;; 701635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 701735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 701835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append tmp_libs " $func_resolve_sysroot_result" 701935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 702035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 702135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$link_all_deplibs" != no; then 702235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add the search paths of all dependency libraries 702335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $dependency_libs; do 702435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes path= 702535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplib in 702635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L*) path="$deplib" ;; 702735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) 702835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_resolve_sysroot "$deplib" 702935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplib=$func_resolve_sysroot_result 703035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$deplib" "" "." 703135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir=$func_dirname_result 703235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We need an absolute path. 703335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $dir in 703435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 703535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 703635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes absdir=`cd "$dir" && pwd` 703735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$absdir"; then 703835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "cannot determine absolute directory name of \`$dir'" 703935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes absdir="$dir" 704035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 704135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 704235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 704335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $GREP "^installed=no" $deplib > /dev/null; then 704435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 704535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-darwin*) 704635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes depdepl= 704735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 704835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$deplibrary_names" ; then 704935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for tmp in $deplibrary_names ; do 705035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes depdepl=$tmp 705135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 705235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$absdir/$objdir/$depdepl" ; then 705335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes depdepl="$absdir/$objdir/$depdepl" 705435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 705535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$darwin_install_name"; then 705635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 705735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 705835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 705935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 706035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes path= 706135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 706235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 706335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 706435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 706535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes path="-L$absdir/$objdir" 706635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 706735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 706835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 706935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 707035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$libdir" && \ 707135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$deplib' is not a valid libtool archive" 707235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$absdir" != "$libdir" && \ 707335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`$deplib' seems to be moved" 707435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 707535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes path="-L$absdir" 707635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 707735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 707835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 707935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $deplibs " in 708035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $path "*) ;; 708135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) deplibs="$path $deplibs" ;; 708235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 708335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 708435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # link_all_deplibs != no 708535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi # linkmode = lib 708635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done # for deplib in $libs 708735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = link; then 708835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = "prog"; then 708935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 709035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 709135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 709235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 709335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 709435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 709535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dependency_libs="$newdependency_libs" 709635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" = dlpreopen; then 709735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Link the dlpreopened libraries before other libraries 709835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $save_deplibs; do 709935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$deplib $deplibs" 710035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 710135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 710235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" != dlopen; then 710335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$pass" != conv; then 710435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make sure lib_search_path contains only unique directories. 710535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib_search_path= 710635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for dir in $newlib_search_path; do 710735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$lib_search_path " in 710835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $dir "*) ;; 710935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append lib_search_path " $dir" ;; 711035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 711135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 711235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newlib_search_path= 711335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 711435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 711535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode,$pass" != "prog,link"; then 711635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes vars="deplibs" 711735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 711835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes vars="compile_deplibs finalize_deplibs" 711935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 712035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for var in $vars dependency_libs; do 712135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add libraries to $var in reverse order 712235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval tmp_libs=\"\$$var\" 712335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_libs= 712435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $tmp_libs; do 712535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # FIXME: Pedantically, this is the right thing to do, so 712635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # that some nasty dependency loop isn't accidentally 712735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # broken: 712835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes #new_libs="$deplib $new_libs" 712935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Pragmatically, this seems to cause very few problems in 713035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # practice: 713135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplib in 713235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L*) new_libs="$deplib $new_libs" ;; 713335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -R*) ;; 713435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 713535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # And here is the reason: when a library appears more 713635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # than once as an explicit dependence of a library, or 713735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # is implicitly linked in more than once by the 713835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # compiler, it is considered special, and multiple 713935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # occurrences thereof are not removed. Compare this 714035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # with having the same library being listed as a 714135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # dependency of multiple other libraries: in this case, 714235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # we know (pedantically, we assume) the library does not 714335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # need to be listed more than once, so we keep only the 714435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # last copy. This is not always right, but it is rare 714535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # enough that we require users that really mean to play 714635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # such unportable linking tricks to link the library 714735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # using -Wl,-lname, so that libtool does not consider it 714835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # for duplicate removal. 714935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $specialdeplibs " in 715035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) new_libs="$deplib $new_libs" ;; 715135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 715235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $new_libs " in 715335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) ;; 715435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) new_libs="$deplib $new_libs" ;; 715535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 715635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 715735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 715835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 715935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 716035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 716135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_libs= 716235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $new_libs; do 716335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplib in 716435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L*) 716535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $tmp_libs " in 716635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) ;; 716735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append tmp_libs " $deplib" ;; 716835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 716935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 717035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append tmp_libs " $deplib" ;; 717135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 717235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 717335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval $var=\"$tmp_libs\" 717435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done # for var 717535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 717635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Last step: remove runtime libs from dependency_libs 717735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # (they stay in deplibs) 717835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_libs= 717935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for i in $dependency_libs ; do 718035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $predeps $postdeps $compiler_lib_search_path " in 718135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $i "*) 718235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes i="" 718335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 718435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 718535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$i" ; then 718635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append tmp_libs " $i" 718735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 718835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 718935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dependency_libs=$tmp_libs 719035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done # for pass 719135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = prog; then 719235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlfiles="$newdlfiles" 719335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 719435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$linkmode" = prog || test "$linkmode" = lib; then 719535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlprefiles="$newdlprefiles" 719635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 719735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 719835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $linkmode in 719935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldlib) 720035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 720135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-dlopen' is ignored for archives" 720235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 720335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 720435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $deplibs" in 720535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *\ -l* | *\ -L*) 720635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-l' and \`-L' are ignored for archives" ;; 720735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 720835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 720935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$rpath" && \ 721035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-rpath' is ignored for archives" 721135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 721235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$xrpath" && \ 721335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-R' is ignored for archives" 721435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 721535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$vinfo" && \ 721635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-version-info/-version-number' is ignored for archives" 721735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 721835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$release" && \ 721935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-release' is ignored for archives" 722035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 722135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$export_symbols$export_symbols_regex" && \ 722235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-export-symbols' is ignored for archives" 722335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 722435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now set the variables for building old libraries. 722535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=no 722635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldlibs="$output" 722735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append objs "$old_deplibs" 722835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 722935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 723035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib) 723135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make sure we only generate libraries of the form `libNAME.la'. 723235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $outputname in 723335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib*) 723435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname 'lib' '.la' "$outputname" 723535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name=$func_stripname_result 723635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval shared_ext=\"$shrext_cmds\" 723735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval libname=\"$libname_spec\" 723835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 723935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 724035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$module" = no && \ 724135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "libtool library \`$output' must begin with \`lib'" 724235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 724335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$need_lib_prefix" != no; then 724435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add the "lib" prefix for modules if required 724535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '.la' "$outputname" 724635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name=$func_stripname_result 724735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval shared_ext=\"$shrext_cmds\" 724835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval libname=\"$libname_spec\" 724935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 725035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '.la' "$outputname" 725135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libname=$func_stripname_result 725235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 725335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 725435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 725535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 725635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$objs"; then 725735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$deplibs_check_method" != pass_all; then 725835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 725935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 726035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 726135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 726235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** objects $objs is not portable!" 726335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libobjs " $objs" 726435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 726535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 726635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 726735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$dlself" != no && \ 726835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-dlopen self' is ignored for libtool libraries" 726935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 727035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $rpath 727135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 727235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$#" -gt 1 && \ 727335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "ignoring multiple \`-rpath's for a libtool library" 727435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 727535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes install_libdir="$1" 727635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 727735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldlibs= 727835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$rpath"; then 727935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = yes; then 728035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Building a libtool convenience library. 728135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Some compilers have problems with a `.al' extension so 728235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # convenience libraries should have the same extension an 728335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # archive normally would. 728435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldlibs="$output_objdir/$libname.$libext $oldlibs" 728535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=convenience 728635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_old_libs=yes 728735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 728835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 728935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$vinfo" && \ 729035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 729135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 729235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$release" && \ 729335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-release' is ignored for convenience libraries" 729435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 729535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 729635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Parse the version information argument. 729735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_ifs="$IFS"; IFS=':' 729835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $vinfo 0 0 0 729935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 730035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 730135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 730235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$7" && \ 730335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "too many parameters to \`-version-info'" 730435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 730535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # convert absolute version numbers to libtool ages 730635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # this retains compatibility with .la files and attempts 730735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # to make the code below a bit more comprehensible 730835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 730935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $vinfo_number in 731035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes yes) 731135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes number_major="$1" 731235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes number_minor="$2" 731335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes number_revision="$3" 731435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # 731535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # There are really only two kinds -- those that 731635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # use the current revision as the major version 731735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # and those that subtract age and use age as 731835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # a minor version. But, then there is irix 731935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # which has an extra 1 added just for fun 732035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # 732135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $version_type in 732235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin|linux|osf|windows|none) 732335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $number_major + $number_minor 732435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes current=$func_arith_result 732535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes age="$number_minor" 732635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes revision="$number_revision" 732735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 732835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes freebsd-aout|freebsd-elf|qnx|sunos) 732935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes current="$number_major" 733035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes revision="$number_minor" 733135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes age="0" 733235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 733335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes irix|nonstopux) 733435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $number_major + $number_minor 733535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes current=$func_arith_result 733635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes age="$number_minor" 733735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes revision="$number_minor" 733835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_irix_increment=no 733935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 734035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 734135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_configuration "$modename: unknown library version type \`$version_type'" 734235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 734335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 734435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 734535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes no) 734635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes current="$1" 734735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes revision="$2" 734835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes age="$3" 734935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 735035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 735135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 735235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check that each of the things are valid numbers. 735335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $current in 735435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 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]) ;; 735535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 735635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "CURRENT \`$current' must be a nonnegative integer" 735735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$vinfo' is not valid version information" 735835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 735935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 736035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 736135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $revision in 736235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 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]) ;; 736335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 736435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "REVISION \`$revision' must be a nonnegative integer" 736535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$vinfo' is not valid version information" 736635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 736735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 736835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 736935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $age in 737035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 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]) ;; 737135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 737235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "AGE \`$age' must be a nonnegative integer" 737335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$vinfo' is not valid version information" 737435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 737535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 737635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 737735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$age" -gt "$current"; then 737835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_error "AGE \`$age' is greater than the current interface number \`$current'" 737935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$vinfo' is not valid version information" 738035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 738135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 738235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Calculate the version variables. 738335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major= 738435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix= 738535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes verstring= 738635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $version_type in 738735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes none) ;; 738835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 738935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin) 739035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Like Linux, but with the current version available in 739135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # verstring for coding it into the library header 739235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $current - $age 739335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=.$func_arith_result 739435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix="$major.$age.$revision" 739535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Darwin ld doesn't like 0 for these options... 739635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $current + 1 739735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes minor_current=$func_arith_result 739835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 739935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 740035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 740135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 740235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes freebsd-aout) 740335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=".$current" 740435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix=".$current.$revision"; 740535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 740635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 740735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes freebsd-elf) 740835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=".$current" 740935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix=".$current" 741035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 741135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 741235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes irix | nonstopux) 741335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$lt_irix_increment" = "Xno"; then 741435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $current - $age 741535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 741635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $current - $age + 1 741735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 741835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=$func_arith_result 741935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 742035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $version_type in 742135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes nonstopux) verstring_prefix=nonstopux ;; 742235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) verstring_prefix=sgi ;; 742335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 742435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes verstring="$verstring_prefix$major.$revision" 742535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 742635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add in all the interfaces that we are compatible with. 742735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes loop=$revision 742835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while test "$loop" -ne 0; do 742935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $revision - $loop 743035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes iface=$func_arith_result 743135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $loop - 1 743235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes loop=$func_arith_result 743335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes verstring="$verstring_prefix$major.$iface:$verstring" 743435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 743535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 743635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Before this point, $major must not contain `.'. 743735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=.$major 743835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix="$major.$revision" 743935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 744035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 744135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes linux) 744235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $current - $age 744335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=.$func_arith_result 744435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix="$major.$age.$revision" 744535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 744635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 744735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes osf) 744835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $current - $age 744935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=.$func_arith_result 745035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix=".$current.$age.$revision" 745135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes verstring="$current.$age.$revision" 745235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 745335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add in all the interfaces that we are compatible with. 745435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes loop=$age 745535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while test "$loop" -ne 0; do 745635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $current - $loop 745735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes iface=$func_arith_result 745835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $loop - 1 745935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes loop=$func_arith_result 746035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes verstring="$verstring:${iface}.0" 746135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 746235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 746335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make executables depend on our current version. 746435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append verstring ":${current}.0" 746535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 746635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 746735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes qnx) 746835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=".$current" 746935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix=".$current" 747035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 747135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 747235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes sunos) 747335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=".$current" 747435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix=".$current.$revision" 747535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 747635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 747735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes windows) 747835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Use '-' rather than '.', since we only want one 747935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # extension on DOS 8.3 filesystems. 748035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $current - $age 748135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=$func_arith_result 748235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix="-$major" 748335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 748435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 748535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 748635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_configuration "unknown library version type \`$version_type'" 748735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 748835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 748935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 749035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Clear the version info if we defaulted, and they specified a release. 749135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$vinfo" && test -n "$release"; then 749235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major= 749335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $version_type in 749435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes darwin) 749535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # we can't check for "0.0" in archive_cmds due to quoting 749635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # problems, so we reset it completely 749735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes verstring= 749835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 749935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 750035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes verstring="0.0" 750135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 750235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 750335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$need_version" = no; then 750435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix= 750535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 750635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix=".0.0" 750735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 750835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 750935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 751035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remove version info from name if versioning should be avoided 751135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$avoid_version" = yes && test "$need_version" = no; then 751235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major= 751335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix= 751435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes verstring="" 751535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 751635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 751735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Check to see if the archive will have undefined symbols. 751835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$allow_undefined" = yes; then 751935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$allow_undefined_flag" = unsupported; then 752035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "undefined symbols not allowed in $host shared libraries" 752135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=no 752235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_old_libs=yes 752335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 752435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 752535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Don't allow undefined symbols. 752635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes allow_undefined_flag="$no_undefined_flag" 752735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 752835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 752935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 753035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 753135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_generate_dlsyms "$libname" "$libname" "yes" 753235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libobjs " $symfileobj" 753335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$libobjs" = "X " && libobjs= 753435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 753535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$opt_mode" != relink; then 753635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remove our outputs, but don't remove object files since they 753735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # may have been created when compiling PIC objects. 753835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes removelist= 753935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tempremovelist=`$ECHO "$output_objdir/*"` 754035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for p in $tempremovelist; do 754135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $p in 754235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.$objext | *.gcno) 754335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 754435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 754535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$precious_files_regex" != "X"; then 754635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 754735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes then 754835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 754935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 755035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 755135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append removelist " $p" 755235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 755335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) ;; 755435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 755535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 755635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$removelist" && \ 755735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "${RM}r \$removelist" 755835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 755935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 756035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now set the variables for building old libraries. 756135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 756235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append oldlibs " $output_objdir/$libname.$libext" 756335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 756435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Transform .lo files to .o files. 756535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 756635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 756735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 756835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Eliminate all temporary directories. 756935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes #for path in $notinst_path; do 757035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 757135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 757235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 757335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes #done 757435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 757535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$xrpath"; then 757635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the user specified any rpath flags, then add them. 757735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes temp_xrpath= 757835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for libdir in $xrpath; do 757935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_replace_sysroot "$libdir" 758035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append temp_xrpath " -R$func_replace_sysroot_result" 758135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$finalize_rpath " in 758235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $libdir "*) ;; 758335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append finalize_rpath " $libdir" ;; 758435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 758535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 758635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 758735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dependency_libs="$temp_xrpath $dependency_libs" 758835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 758935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 759035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 759135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make sure dlfiles contains only unique files that won't be dlpreopened 759235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes old_dlfiles="$dlfiles" 759335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlfiles= 759435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lib in $old_dlfiles; do 759535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $dlprefiles $dlfiles " in 759635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $lib "*) ;; 759735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append dlfiles " $lib" ;; 759835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 759935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 760035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 760135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make sure dlprefiles contains only unique files 760235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes old_dlprefiles="$dlprefiles" 760335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlprefiles= 760435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lib in $old_dlprefiles; do 760535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$dlprefiles " in 760635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $lib "*) ;; 760735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append dlprefiles " $lib" ;; 760835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 760935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 761035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 761135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = yes; then 761235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$rpath"; then 761335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 761435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 761535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # these systems don't actually have a c library (as such)! 761635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 761735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-rhapsody* | *-*-darwin1.[012]) 761835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Rhapsody C library is in the System framework 761935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append deplibs " System.ltframework" 762035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 762135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-netbsd*) 762235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Don't link with libc until the a.out ld.so is fixed. 762335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 762435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 762535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do not include libc due to us having libc/libc_r. 762635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 762735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-sco3.2v5* | *-*-sco5v6*) 762835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Causes problems with __ctype 762935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 763035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 763135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Compiler inserts libc in the correct place for threads to work 763235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 763335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 763435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add libc to deplibs on all other systems if necessary. 763535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_need_lc" = "yes"; then 763635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append deplibs " -lc" 763735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 763835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 763935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 764035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 764135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 764235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Transform deplibs into only deplibs that can be linked in shared. 764335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name_save=$name 764435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libname_save=$libname 764535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes release_save=$release 764635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix_save=$versuffix 764735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major_save=$major 764835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # I'm not sure if I'm treating the release correctly. I think 764935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # release should show up in the -l (ie -lgmp5) so we don't want to 765035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # add it in twice. Is that correct? 765135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes release="" 765235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix="" 765335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major="" 765435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdeplibs= 765535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes droppeddeps=no 765635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplibs_check_method in 765735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes pass_all) 765835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Don't check for shared/static. Everything works. 765935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # This might be a little naive. We might want to check 766035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # whether the library exists or not. But this is on 766135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # osf3 & osf4 and I'm not really sure... Just 766235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # implementing what was already the behavior. 766335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdeplibs=$deplibs 766435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 766535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test_compile) 766635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # This code stresses the "libraries are programs" paradigm to its 766735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # limits. Maybe even breaks it. We compile a program, linking it 766835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # against the deplibs as a proxy for the library. Then we can check 766935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # whether they linked in statically or dynamically with ldd. 767035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM conftest.c 767135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cat > conftest.c <<EOF 767235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes int main() { return 0; } 767335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott HughesEOF 767435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM conftest 767535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 767635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ldd_output=`ldd conftest` 767735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for i in $deplibs; do 767835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $i in 767935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -l*) 768035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname -l '' "$i" 768135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name=$func_stripname_result 768235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 768335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $predeps $postdeps " in 768435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $i "*) 768535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $i" 768635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes i="" 768735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 768835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 768935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 769035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$i" ; then 769135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libname=`eval "\\$ECHO \"$libname_spec\""` 769235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 769335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $deplib_matches; shift 769435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplib_match=$1 769535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 769635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $i" 769735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 769835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes droppeddeps=yes 769935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 770035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: dynamic linker does not accept needed library $i." 770135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** I have the capability to make that library automatically link in when" 770235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** you link to this library. But I can only do this if you have a" 770335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** shared version of the library, which I believe you do not have" 770435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** because a test_compile did reveal that the linker did not use it for" 770535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** its dynamic dependency list that programs get resolved with at runtime." 770635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 770735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 770835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 770935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 771035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $i" 771135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 771235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 771335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 771435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 771535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Error occurred in the first compile. Let's try to salvage 771635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the situation: Compile a separate program for each library. 771735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for i in $deplibs; do 771835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $i in 771935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -l*) 772035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname -l '' "$i" 772135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name=$func_stripname_result 772235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM conftest 772335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 772435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ldd_output=`ldd conftest` 772535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 772635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $predeps $postdeps " in 772735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $i "*) 772835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $i" 772935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes i="" 773035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 773135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 773235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 773335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$i" ; then 773435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libname=`eval "\\$ECHO \"$libname_spec\""` 773535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 773635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $deplib_matches; shift 773735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplib_match=$1 773835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 773935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $i" 774035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 774135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes droppeddeps=yes 774235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 774335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: dynamic linker does not accept needed library $i." 774435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** I have the capability to make that library automatically link in when" 774535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** you link to this library. But I can only do this if you have a" 774635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** shared version of the library, which you do not appear to have" 774735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** because a test_compile did reveal that the linker did not use this one" 774835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** as a dynamic dependency that programs can get resolved with at runtime." 774935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 775035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 775135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 775235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes droppeddeps=yes 775335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 775435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 775535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** make it link in! You will probably need to install it or some" 775635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** library that it depends on before this library will be fully" 775735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** functional. Installing it before continuing would be even better." 775835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 775935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 776035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 776135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $i" 776235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 776335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 776435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 776535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 776635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 776735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file_magic*) 776835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $deplibs_check_method; shift 776935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 777035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for a_deplib in $deplibs; do 777135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $a_deplib in 777235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -l*) 777335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname -l '' "$a_deplib" 777435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name=$func_stripname_result 777535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 777635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $predeps $postdeps " in 777735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $a_deplib "*) 777835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $a_deplib" 777935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes a_deplib="" 778035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 778135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 778235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 778335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$a_deplib" ; then 778435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libname=`eval "\\$ECHO \"$libname_spec\""` 778535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$file_magic_glob"; then 778635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 778735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 778835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libnameglob=$libname 778935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 779035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 779135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 779235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$want_nocaseglob" = yes; then 779335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shopt -s nocaseglob 779435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 779535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $nocaseglob 779635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 779735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 779835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 779935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for potent_lib in $potential_libs; do 780035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Follow soft links. 780135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if ls -lLd "$potent_lib" 2>/dev/null | 780235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $GREP " -> " >/dev/null; then 780335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes continue 780435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 780535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The statement above tries to avoid entering an 780635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # endless loop below, in case of cyclic links. 780735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We might still enter an endless loop, since a link 780835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # loop can be closed while we follow links, 780935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # but so what? 781035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes potlib="$potent_lib" 781135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while test -h "$potlib" 2>/dev/null; do 781235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 781335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $potliblink in 781435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 781535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 781635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 781735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 781835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 781935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $SED -e 10q | 782035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $EGREP "$file_magic_regex" > /dev/null; then 782135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $a_deplib" 782235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes a_deplib="" 782335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 2 782435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 782535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 782635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 782735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 782835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$a_deplib" ; then 782935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes droppeddeps=yes 783035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 783135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 783235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** I have the capability to make that library automatically link in when" 783335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** you link to this library. But I can only do this if you have a" 783435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** shared version of the library, which you do not appear to have" 783535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** because I did check the linker path looking for a file starting" 783635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$potlib" ; then 783735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 783835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 783935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** with $libname and none of the candidates passed a file format test" 784035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** using a file magic. Last file checked: $potlib" 784135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 784235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 784335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 784435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 784535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add a -L argument. 784635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $a_deplib" 784735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 784835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 784935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done # Gone through all deplibs. 785035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 785135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes match_pattern*) 785235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $deplibs_check_method; shift 785335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 785435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for a_deplib in $deplibs; do 785535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $a_deplib in 785635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -l*) 785735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname -l '' "$a_deplib" 785835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name=$func_stripname_result 785935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 786035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $predeps $postdeps " in 786135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $a_deplib "*) 786235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $a_deplib" 786335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes a_deplib="" 786435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 786535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 786635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 786735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$a_deplib" ; then 786835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libname=`eval "\\$ECHO \"$libname_spec\""` 786935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 787035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 787135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for potent_lib in $potential_libs; do 787235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes potlib="$potent_lib" # see symlink-check above in file_magic test 787335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 787435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $EGREP "$match_pattern_regex" > /dev/null; then 787535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $a_deplib" 787635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes a_deplib="" 787735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 2 787835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 787935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 788035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 788135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 788235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$a_deplib" ; then 788335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes droppeddeps=yes 788435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 788535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 788635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** I have the capability to make that library automatically link in when" 788735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** you link to this library. But I can only do this if you have a" 788835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** shared version of the library, which you do not appear to have" 788935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** because I did check the linker path looking for a file starting" 789035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$potlib" ; then 789135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 789235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 789335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** with $libname and none of the candidates passed a file format test" 789435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** using a regex pattern. Last file checked: $potlib" 789535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 789635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 789735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 789835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 789935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add a -L argument. 790035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdeplibs " $a_deplib" 790135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 790235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 790335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done # Gone through all deplibs. 790435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 790535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes none | unknown | *) 790635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdeplibs="" 790735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 790835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 790935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for i in $predeps $postdeps ; do 791035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # can't use Xsed below, because $i might contain '/' 791135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 791235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 791335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 791435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $tmp_deplibs in 791535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[!\ \ ]*) 791635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 791735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$deplibs_check_method" = "Xnone"; then 791835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** Warning: inter-library dependencies are not supported in this platform." 791935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 792035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** Warning: inter-library dependencies are not known to be supported." 792135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 792235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** All declared inter-library dependencies are being dropped." 792335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes droppeddeps=yes 792435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 792535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 792635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 792735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 792835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes versuffix=$versuffix_save 792935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes major=$major_save 793035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes release=$release_save 793135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libname=$libname_save 793235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name=$name_save 7933b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 793435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 793535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-rhapsody* | *-*-darwin1.[012]) 793635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # On Rhapsody replace the C library with the System framework 793735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 793835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 793935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 7940b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 794135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$droppeddeps" = yes; then 794235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$module" = yes; then 794335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 794435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** Warning: libtool could not satisfy all declared inter-library" 794535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 794635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** a static module, that should work as long as the dlopening" 794735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** application is linked with the -dlopen flag." 794835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$global_symbol_pipe"; then 794935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 795035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** However, this would only work if libtool was able to extract symbol" 795135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 795235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** not find such a program. So, this module is probably useless." 795335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** \`nm' from GNU binutils and a full rebuild may help." 795435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 795535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_old_libs" = no; then 795635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldlibs="$output_objdir/$libname.$libext" 795735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=module 795835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_old_libs=yes 795935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 796035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=no 796135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 796235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 796335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** The inter-library dependencies that have been dropped here will be" 796435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** automatically added whenever a program is linked with this library" 796535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** or is declared to -dlopen it." 7966b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 796735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$allow_undefined" = no; then 796835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 796935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** Since this library must not contain undefined symbols," 797035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** because either the platform does not support them or" 797135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** it was explicitly requested with -no-undefined," 797235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "*** libtool will only create a static version of it." 797335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_old_libs" = no; then 797435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldlibs="$output_objdir/$libname.$libext" 797535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=module 797635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_old_libs=yes 797735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 797835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=no 797935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 798035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 798135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 798235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 798335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Done checking deplibs! 798435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs=$newdeplibs 798535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 798635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Time to change all our "foo.ltframework" stuff back to "-framework foo" 798735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 798835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-darwin*) 798935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 799035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 799135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 799235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 799335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 7994b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 799535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # move library search paths that coincide with paths to not yet 799635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # installed libraries to the beginning of the library search list 799735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_libs= 799835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for path in $notinst_path; do 799935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $new_libs " in 800035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" -L$path/$objdir "*) ;; 800135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 800235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $deplibs " in 800335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" -L$path/$objdir "*) 800435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append new_libs " -L$path/$objdir" ;; 800535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 800635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 800735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 800835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 800935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $deplibs; do 801035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplib in 801135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L*) 801235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $new_libs " in 801335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) ;; 801435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append new_libs " $deplib" ;; 801535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 801635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 801735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append new_libs " $deplib" ;; 801835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 801935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 802035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$new_libs" 8021b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 802235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # All the library-specific variables (install_libdir is set above). 802335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes library_names= 802435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes old_library= 802535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlname= 8026b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 802735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Test again, we may have decided not to build it any more 802835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = yes; then 802935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$hardcode_into_libs" = yes; then 803035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Hardcode the library paths 803135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes hardcode_libdirs= 803235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dep_rpath= 803335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes rpath="$finalize_rpath" 803435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 803535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for libdir in $rpath; do 803635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_flag_spec"; then 803735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_separator"; then 803835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_replace_sysroot "$libdir" 803935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libdir=$func_replace_sysroot_result 804035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$hardcode_libdirs"; then 804135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes hardcode_libdirs="$libdir" 804235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 804335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Just accumulate the unique libdirs. 804435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 804535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 804635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 804735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 804835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 804935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 805035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 805135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 805235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 805335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval flag=\"$hardcode_libdir_flag_spec\" 805435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append dep_rpath " $flag" 805535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 805635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test -n "$runpath_var"; then 805735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$perm_rpath " in 805835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $libdir "*) ;; 805935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_apped perm_rpath " $libdir" ;; 806035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 806135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 806235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 806335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Substitute the hardcoded libdirs into the rpath. 806435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_separator" && 806535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$hardcode_libdirs"; then 806635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libdir="$hardcode_libdirs" 806735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_flag_spec_ld"; then 806835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 806935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 807035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval dep_rpath=\"$hardcode_libdir_flag_spec\" 807135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 807235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 807335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$runpath_var" && test -n "$perm_rpath"; then 807435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We should set the runpath_var. 807535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes rpath= 807635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for dir in $perm_rpath; do 807735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rpath "$dir:" 807835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 807935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 808035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 808135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 8082b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 8083b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 808435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shlibpath="$finalize_shlibpath" 808535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 808635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$shlibpath"; then 808735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 808835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8089b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 809035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Get the real and link names of the library. 809135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval shared_ext=\"$shrext_cmds\" 809235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval library_names=\"$library_names_spec\" 809335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set dummy $library_names 809435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 809535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes realname="$1" 809635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 8097b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 809835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$soname_spec"; then 809935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval soname=\"$soname_spec\" 810035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 810135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes soname="$realname" 810235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 810335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$dlname"; then 810435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlname=$soname 810535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8106b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 810735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lib="$output_objdir/$realname" 810835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes linknames= 810935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for link 811035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 811135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append linknames " $link" 811235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 8113b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 811435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Use standard objects if they are pic 811535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 811635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$libobjs" = "X " && libobjs= 8117b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 811835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes delfiles= 811935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols" && test -n "$include_expsyms"; then 812035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 812135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols="$output_objdir/$libname.uexp" 812235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append delfiles " $export_symbols" 8123b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 8124b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 812535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes orig_export_symbols= 812635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host_os in 812735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cygwin* | mingw* | cegcc*) 812835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 812935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # exporting using user supplied symfile 813035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 813135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # and it's NOT already a .def file. Must figure out 813235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # which of the given symbols are data symbols and tag 813335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # them as such. So, trigger use of export_symbols_cmds. 813435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # export_symbols gets reassigned inside the "prepare 813535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the list of exported symbols" if statement, so the 813635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # include_expsyms logic still works. 813735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes orig_export_symbols="$export_symbols" 813835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols= 813935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes always_export_symbols=yes 814035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 814135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8142b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 8143b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 8144b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 814535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Prepare the list of exported symbols 814635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$export_symbols"; then 814735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 814835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "generating symbol list for \`$libname.la'" 814935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols="$output_objdir/$libname.exp" 815035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM $export_symbols 815135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$export_symbols_cmds 815235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_ifs="$IFS"; IFS='~' 815335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for cmd1 in $cmds; do 815435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 815535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Take the normal branch if the nm_file_list_spec branch 815635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # doesn't work or if tool conversion is not needed. 815735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $nm_file_list_spec~$to_tool_file_cmd in 815835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 815935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes try_normal_branch=yes 816035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval cmd=\"$cmd1\" 816135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_len " $cmd" 816235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len=$func_len_result 816335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 816435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 816535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes try_normal_branch=no 816635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 816735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 816835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$try_normal_branch" = yes \ 816935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes && { test "$len" -lt "$max_cmd_len" \ 817035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes || test "$max_cmd_len" -le -1; } 817135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes then 817235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$cmd" 'exit $?' 817335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes skipped_export=false 817435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test -n "$nm_file_list_spec"; then 817535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$output" 817635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output_la=$func_basename_result 817735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_libobjs=$libobjs 817835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_output=$output 817935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=${output_objdir}/${output_la}.nm 818035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$output" 818135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobjs=$nm_file_list_spec$func_to_tool_file_result 818235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append delfiles " $output" 818335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "creating $NM input file list: $output" 818435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for obj in $save_libobjs; do 818535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$obj" 818635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$func_to_tool_file_result" 818735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done > "$output" 818835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval cmd=\"$cmd1\" 818935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$cmd" 'exit $?' 819035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=$save_output 819135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobjs=$save_libobjs 819235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes skipped_export=false 819335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 819435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The command line is too long to execute in one step. 819535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "using reloadable object file for export list..." 819635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes skipped_export=: 819735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Break out early, otherwise skipped_export may be 819835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # set to false by a later but shorter cmd. 819935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 820035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 820135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 820235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 820335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 820435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 820535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 820635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 820735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8208b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 8209b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 821035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols" && test -n "$include_expsyms"; then 821135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_export_symbols="$export_symbols" 821235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 821335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 821435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8215b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 821635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 821735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The given exports_symbols file has to be filtered, so filter it. 821835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 821935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # FIXME: $output_objdir/$libname.filter potentially contains lots of 822035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # 's' commands which not all seds can handle. GNU sed should be fine 822135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # though. Also, the filter scales superlinearly with the number of 822235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # global variables. join(1) would be nice here, but unfortunately 822335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # isn't a blessed tool. 822435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 822535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append delfiles " $export_symbols $output_objdir/$libname.filter" 822635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols=$output_objdir/$libname.def 822735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 822835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8229b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 823035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_deplibs= 823135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for test_deplib in $deplibs; do 823235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $convenience " in 823335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $test_deplib "*) ;; 823435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 823535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append tmp_deplibs " $test_deplib" 823635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 823735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 823835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 823935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes deplibs="$tmp_deplibs" 8240b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 824135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$convenience"; then 824235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$whole_archive_flag_spec" && 824335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$compiler_needs_object" = yes && 824435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$libobjs"; then 824535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # extract the archives, so we have objects to list. 824635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # TODO: could optimize this to just extract one archive. 824735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes whole_archive_flag_spec= 824835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 824935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$whole_archive_flag_spec"; then 825035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_libobjs=$libobjs 825135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 825235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$libobjs" = "X " && libobjs= 825335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 8254b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project gentop="$output_objdir/${outputname}x" 825535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append generated " $gentop" 825635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 825735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_extract_archives $gentop $convenience 825835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libobjs " $func_extract_archives_result" 825935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$libobjs" = "X " && libobjs= 8260b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 826135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8262b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 826335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 826435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval flag=\"$thread_safe_flag_spec\" 826535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append linker_flags " $flag" 8266b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 8267b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 826835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make a backup of the uninstalled library when relinking 826935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$opt_mode" = relink; then 827035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 827135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8272b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 827335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do each of the archive commands. 827435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$module" = yes && test -n "$module_cmds" ; then 827535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 827635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval test_cmds=\"$module_expsym_cmds\" 827735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$module_expsym_cmds 827835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 827935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval test_cmds=\"$module_cmds\" 828035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$module_cmds 828135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8282b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 828335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 828435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval test_cmds=\"$archive_expsym_cmds\" 828535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$archive_expsym_cmds 8286b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 828735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval test_cmds=\"$archive_cmds\" 828835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$archive_cmds 8289b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 8290b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 8291b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 829235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$skipped_export" != "X:" && 829335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_len " $test_cmds" && 829435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len=$func_len_result && 829535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 829635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes : 8297b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 829835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The command line is too long to link in one step, link piecewise 829935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # or, if using GNU ld and skipped_export is not :, use a linker 830035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # script. 8301b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 830235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Save the value of $output and $libobjs because we want to 830335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # use them later. If we have whole_archive_flag_spec, we 830435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # want to use save_libobjs as it was before 830535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # whole_archive_flag_spec was expanded, because we can't 830635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # assume the linker understands whole_archive_flag_spec. 830735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # This may have to be revisited, in case too many 830835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # convenience libraries get linked in and end up exceeding 830935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the spec. 831035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 831135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_libobjs=$libobjs 831235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 831335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_output=$output 831435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$output" 831535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output_la=$func_basename_result 8316b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 831735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Clear the reloadable object creation command queue and 831835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # initialize k to one. 831935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test_cmds= 832035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes concat_cmds= 832135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes objlist= 832235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes last_robj= 832335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes k=1 832435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 832535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 832635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=${output_objdir}/${output_la}.lnkscript 832735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "creating GNU ld script: $output" 832835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo 'INPUT (' > $output 832935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for obj in $save_libobjs 833035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 833135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$obj" 833235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$func_to_tool_file_result" >> $output 833335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 833435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo ')' >> $output 833535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append delfiles " $output" 833635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$output" 833735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=$func_to_tool_file_result 833835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 833935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=${output_objdir}/${output_la}.lnk 834035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "creating linker input file list: $output" 834135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes : > $output 834235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes set x $save_libobjs 834335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 834435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes firstobj= 834535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$compiler_needs_object" = yes; then 834635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes firstobj="$1 " 834735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes shift 8348b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 834935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for obj 835035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 835135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$obj" 835235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$func_to_tool_file_result" >> $output 8353b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 835435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append delfiles " $output" 835535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$output" 835635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 835735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 835835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$save_libobjs"; then 835935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "creating reloadable object files..." 836035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=$output_objdir/$output_la-${k}.$objext 836135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval test_cmds=\"$reload_cmds\" 836235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_len " $test_cmds" 836335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len0=$func_len_result 836435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len=$len0 836535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 836635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Loop over the list of objects to be linked. 836735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for obj in $save_libobjs 836835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 836935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_len " $obj" 837035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $len + $func_len_result 837135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len=$func_arith_result 837235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$objlist" = X || 837335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$len" -lt "$max_cmd_len"; then 837435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append objlist " $obj" 837535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 837635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The command $test_cmds is almost too long, add a 837735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # command to the queue. 837835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$k" -eq 1 ; then 837935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The first file doesn't have a previous command to add. 838035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes reload_objs=$objlist 838135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval concat_cmds=\"$reload_cmds\" 838235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 838335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # All subsequent reloadable object files will link in 838435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the last one created. 838535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes reload_objs="$objlist $last_robj" 838635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 838735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 838835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes last_robj=$output_objdir/$output_la-${k}.$objext 838935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $k + 1 839035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes k=$func_arith_result 839135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=$output_objdir/$output_la-${k}.$objext 839235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes objlist=" $obj" 839335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_len " $last_robj" 839435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $len0 + $func_len_result 839535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len=$func_arith_result 839635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 839735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 839835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Handle the remaining objects by creating one last 839935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # reloadable object file. All subsequent reloadable object 840035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # files will link in the last one created. 840135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 840235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes reload_objs="$objlist $last_robj" 840335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 840435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$last_robj"; then 840535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 8406b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 840735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append delfiles " $output" 840835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 840935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 841035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output= 841135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 841235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 841335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if ${skipped_export-false}; then 841435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "generating symbol list for \`$libname.la'" 841535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols="$output_objdir/$libname.exp" 841635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM $export_symbols 841735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobjs=$output 841835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Append the command to create the export file. 841935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 842035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 842135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$last_robj"; then 842235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 8423b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 842435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 842535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 842635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$save_libobjs" && 842735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "creating a temporary reloadable object file: $output" 842835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 842935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Loop through the commands generated above and execute them. 843035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_ifs="$IFS"; IFS='~' 843135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for cmd in $concat_cmds; do 843235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 843335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_silent || { 843435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_expand "$cmd" 843535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "func_echo $func_quote_for_expand_result" 843635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 843735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || eval "$cmd" || { 843835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_exit=$? 843935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 844035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Restore the uninstalled library and exit 844135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$opt_mode" = relink; then 844235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ( cd "$output_objdir" && \ 844335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM "${realname}T" && \ 844435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $MV "${realname}U" "$realname" ) 844535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 844635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 844735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $lt_exit 844835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 8449b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 845035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 845135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 845235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols_regex" && ${skipped_export-false}; then 845335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 845435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 845535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 845635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 845735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 845835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if ${skipped_export-false}; then 845935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols" && test -n "$include_expsyms"; then 846035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tmp_export_symbols="$export_symbols" 846135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 846235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 846335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 846435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 846535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$orig_export_symbols"; then 846635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The given exports_symbols file has to be filtered, so filter it. 846735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 846835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # FIXME: $output_objdir/$libname.filter potentially contains lots of 846935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # 's' commands which not all seds can handle. GNU sed should be fine 847035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # though. Also, the filter scales superlinearly with the number of 847135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # global variables. join(1) would be nice here, but unfortunately 847235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # isn't a blessed tool. 847335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 847435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append delfiles " $export_symbols $output_objdir/$libname.filter" 847535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes export_symbols=$output_objdir/$libname.def 847635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 847735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 847835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 847935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 848035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobjs=$output 848135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Restore the value of output. 848235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=$save_output 848335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 848435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 848535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 848635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$libobjs" = "X " && libobjs= 848735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 848835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Expand the library linking commands again to reset the 848935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # value of $libobjs for piecewise linking. 849035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 849135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do each of the archive commands. 849235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$module" = yes && test -n "$module_cmds" ; then 849335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 849435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$module_expsym_cmds 849535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 849635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$module_cmds 849735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8498b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 849935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 850035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$archive_expsym_cmds 850135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 850235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$archive_cmds 850335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8504b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 850535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8506b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 850735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$delfiles"; then 850835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Append the command to remove temporary files to $cmds. 850935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval cmds=\"\$cmds~\$RM $delfiles\" 851035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8511b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 851235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add any objects from preloaded convenience libraries 851335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dlprefiles"; then 851435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes gentop="$output_objdir/${outputname}x" 851535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append generated " $gentop" 8516b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 851735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_extract_archives $gentop $dlprefiles 851835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append libobjs " $func_extract_archives_result" 851935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "X$libobjs" = "X " && libobjs= 852035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8521b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 852235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_ifs="$IFS"; IFS='~' 852335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for cmd in $cmds; do 852435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 852535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval cmd=\"$cmd\" 852635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_silent || { 852735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_expand "$cmd" 852835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval "func_echo $func_quote_for_expand_result" 852935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 853035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || eval "$cmd" || { 853135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes lt_exit=$? 8532b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 853335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Restore the uninstalled library and exit 853435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$opt_mode" = relink; then 853535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ( cd "$output_objdir" && \ 853635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM "${realname}T" && \ 853735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $MV "${realname}U" "$realname" ) 853835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8539b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 854035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $lt_exit 854135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 854235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 854335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes IFS="$save_ifs" 8544b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 854535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Restore the uninstalled library and exit 854635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$opt_mode" = relink; then 854735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 8548b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 854935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$convenience"; then 855035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$whole_archive_flag_spec"; then 855135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '${RM}r "$gentop"' 855235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 855335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8554b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 855535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 855635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 855735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 855835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Create links to the real library. 855935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for linkname in $linknames; do 856035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$realname" != "$linkname"; then 856135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 8562b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 8563b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 8564b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 856535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If -module or -export-dynamic was specified, set the dlname. 856635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$module" = yes || test "$export_dynamic" = yes; then 856735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # On all known operating systems, these are identical. 856835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlname="$soname" 856935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 857035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8571b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 8572b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 857335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes obj) 857435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 857535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-dlopen' is ignored for objects" 857635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8577b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 857835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $deplibs" in 857935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *\ -l* | *\ -L*) 858035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-l' and \`-L' are ignored for objects" ;; 8581b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 8582b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 858335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$rpath" && \ 858435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-rpath' is ignored for objects" 8585b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 858635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$xrpath" && \ 858735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-R' is ignored for objects" 8588b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 858935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$vinfo" && \ 859035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-version-info' is ignored for objects" 859135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 859235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$release" && \ 859335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-release' is ignored for objects" 859435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 859535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $output in 859635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.lo) 859735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$objs$old_deplibs" && \ 859835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "cannot build library object \`$output' from non-libtool objects" 859935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 860035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobj=$output 860135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_lo2o "$libobj" 860235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes obj=$func_lo2o_result 8603b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 8604b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *) 860535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libobj= 860635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes obj="$output" 8607b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 8608b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 8609b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 861035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Delete the old objects. 861135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM $obj $libobj 8612b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 861335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Objects from convenience libraries. This assumes 861435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # single-version convenience libraries. Whenever we create 861535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # different ones for PIC/non-PIC, this we'll have to duplicate 861635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the extraction. 861735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes reload_conv_objs= 861835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes gentop= 861935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # reload_cmds runs $LD directly, so let us get rid of 862035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # -Wl from whole_archive_flag_spec and hope we can get by with 862135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # turning comma into space.. 862235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes wl= 8623b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 862435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$convenience"; then 862535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$whole_archive_flag_spec"; then 862635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 862735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 862835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 862935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes gentop="$output_objdir/${obj}x" 863035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append generated " $gentop" 8631b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 863235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_extract_archives $gentop $convenience 863335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes reload_conv_objs="$reload_objs $func_extract_archives_result" 863435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8635b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 8636b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 863735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If we're not building shared, we need to use non_pic_objs 863835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 8639b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 864035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Create the old-style object. 864135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 8642b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 864335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output="$obj" 864435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$reload_cmds" 'exit $?' 864535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 864635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Exit if we aren't doing a library object file. 864735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$libobj"; then 864835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$gentop"; then 864935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '${RM}r "$gentop"' 865035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 865135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 865235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 8653b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 865435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 865535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" != yes; then 865635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$gentop"; then 865735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '${RM}r "$gentop"' 865835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 865935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 866035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Create an invalid libtool object if no PIC, so that we don't 866135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # accidentally link it into a program. 866235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # $show "echo timestamp > $libobj" 866335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 866435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 866535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 866635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 866735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$pic_flag" || test "$pic_mode" != default; then 866835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Only do commands if we really have different PIC objects. 866935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes reload_objs="$libobjs $reload_conv_objs" 867035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output="$libobj" 867135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$reload_cmds" 'exit $?' 867235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 867335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 867435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$gentop"; then 867535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '${RM}r "$gentop"' 867635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 867735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 867835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 8679b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 8680b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 868135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes prog) 868235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 868335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin*) func_stripname '' '.exe' "$output" 868435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=$func_stripname_result.exe;; 868535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 868635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$vinfo" && \ 868735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-version-info' is ignored for programs" 8688b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 868935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$release" && \ 869035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`-release' is ignored for programs" 8691b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 869235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$preload" = yes \ 869335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes && test "$dlopen_support" = unknown \ 869435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes && test "$dlopen_self" = unknown \ 869535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes && test "$dlopen_self_static" = unknown && \ 869635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 869735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 869835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 869935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-rhapsody* | *-*-darwin1.[012]) 870035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # On Rhapsody replace the C library is the System framework 870135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 870235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 8703b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 870435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 8705b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 870635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 870735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-darwin*) 870835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Don't allow lazy linking, it breaks C++ global constructors 870935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # But is supposedly fixed on 10.4 or later (yay!). 871035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$tagname" = CXX ; then 871135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 871235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 10.[0123]) 871335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " ${wl}-bind_at_load" 871435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " ${wl}-bind_at_load" 871535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 871635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 8717b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 871835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Time to change all our "foo.ltframework" stuff back to "-framework foo" 871935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 872035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 872135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 872235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 8723b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 872435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 872535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # move library search paths that coincide with paths to not yet 872635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # installed libraries to the beginning of the library search list 872735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes new_libs= 872835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for path in $notinst_path; do 872935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $new_libs " in 873035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" -L$path/$objdir "*) ;; 873135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 873235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $compile_deplibs " in 873335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" -L$path/$objdir "*) 873435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append new_libs " -L$path/$objdir" ;; 873535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 873635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 873735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 873835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 873935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $compile_deplibs; do 874035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplib in 874135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L*) 874235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $new_libs " in 874335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $deplib "*) ;; 874435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append new_libs " $deplib" ;; 874535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 874635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 874735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append new_libs " $deplib" ;; 8748b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 874935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 875035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_deplibs="$new_libs" 8751b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 875235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 875335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append compile_command " $compile_deplibs" 875435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append finalize_command " $finalize_deplibs" 875535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 875635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$rpath$xrpath"; then 875735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If the user specified any rpath flags, then add them. 875835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for libdir in $rpath $xrpath; do 875935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # This is the magic to use -rpath. 876035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$finalize_rpath " in 8761b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *" $libdir "*) ;; 876235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append finalize_rpath " $libdir" ;; 8763b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 876435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 876535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 876635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 876735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now hardcode the library paths 876835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes rpath= 876935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes hardcode_libdirs= 877035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for libdir in $compile_rpath $finalize_rpath; do 877135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_flag_spec"; then 877235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_separator"; then 877335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$hardcode_libdirs"; then 877435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes hardcode_libdirs="$libdir" 877535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 877635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Just accumulate the unique libdirs. 877735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 877835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 877935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 878035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 878135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 878235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 878335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 878435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 878535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 878635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval flag=\"$hardcode_libdir_flag_spec\" 878735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rpath " $flag" 878835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 878935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test -n "$runpath_var"; then 879035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$perm_rpath " in 8791b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *" $libdir "*) ;; 879235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append perm_rpath " $libdir" ;; 8793b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 8794b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 879535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 879635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 879735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 879835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case :$dllsearchpath: in 879935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *":$libdir:"*) ;; 880035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ::) dllsearchpath=$libdir;; 880135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append dllsearchpath ":$libdir";; 880235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 880335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case :$dllsearchpath: in 880435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *":$testbindir:"*) ;; 880535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ::) dllsearchpath=$testbindir;; 880635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append dllsearchpath ":$testbindir";; 880735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 880835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 880935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 881035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 881135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Substitute the hardcoded libdirs into the rpath. 881235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_separator" && 881335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$hardcode_libdirs"; then 881435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libdir="$hardcode_libdirs" 881535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval rpath=\" $hardcode_libdir_flag_spec\" 881635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 881735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_rpath="$rpath" 8818b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 881935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes rpath= 882035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes hardcode_libdirs= 882135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for libdir in $finalize_rpath; do 882235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_flag_spec"; then 882335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_separator"; then 882435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$hardcode_libdirs"; then 882535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes hardcode_libdirs="$libdir" 882635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 882735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Just accumulate the unique libdirs. 882835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 882935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 883035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 883135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 883235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 883335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 883435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 883535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8836b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 883735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval flag=\"$hardcode_libdir_flag_spec\" 883835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rpath " $flag" 8839b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 884035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test -n "$runpath_var"; then 884135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$finalize_perm_rpath " in 884235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $libdir "*) ;; 884335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append finalize_perm_rpath " $libdir" ;; 884435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 8845b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 884635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 884735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Substitute the hardcoded libdirs into the rpath. 884835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$hardcode_libdir_separator" && 884935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$hardcode_libdirs"; then 885035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes libdir="$hardcode_libdirs" 885135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval rpath=\" $hardcode_libdir_flag_spec\" 885235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 885335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_rpath="$rpath" 8854b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 885535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$libobjs" && test "$build_old_libs" = yes; then 885635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Transform all the library objects into standard objects. 885735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 885835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 885935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8860b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 886135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8862b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 886335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # template prelinking step 886435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$prelink_cmds"; then 886535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$prelink_cmds" 'exit $?' 886635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8867b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 886835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes wrappers_required=yes 886935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 887035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cegcc* | *mingw32ce*) 887135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 887235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes wrappers_required=no 887335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 887435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | *mingw* ) 887535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" != yes; then 887635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes wrappers_required=no 887735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 887835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 887935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) 888035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 888135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes wrappers_required=no 888235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 888335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 888435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 888535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$wrappers_required" = no; then 888635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Replace the output file specification. 888735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 888835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link_command="$compile_command$compile_rpath" 8889b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 889035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We have no uninstalled library dependencies, so finalize right now. 889135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit_status=0 889235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$link_command" 'exit_status=$?' 8893b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 889435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$postlink_cmds"; then 889535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$output" 889635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 889735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$postlink_cmds" 'exit $?' 8898b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 8899b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 890035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Delete the generated files. 890135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -f "$output_objdir/${outputname}S.${objext}"; then 890235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 890335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8904b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 890535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $exit_status 890635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8907b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 890835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$compile_shlibpath$finalize_shlibpath"; then 890935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 891035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 891135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$finalize_shlibpath"; then 891235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 891335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8914b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 891535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_var= 891635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_var= 891735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$runpath_var"; then 891835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$perm_rpath"; then 891935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We should set the runpath_var. 892035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes rpath= 892135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for dir in $perm_rpath; do 892235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rpath "$dir:" 892335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 892435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8925b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 892635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$finalize_perm_rpath"; then 892735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We should set the runpath_var. 892835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes rpath= 892935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for dir in $finalize_perm_rpath; do 893035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rpath "$dir:" 893135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 893235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8933b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 893435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8935b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 893635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$no_install" = yes; then 893735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # We don't need to create a wrapper script. 893835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link_command="$compile_var$compile_command$compile_rpath" 893935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Replace the output file specification. 894035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 894135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Delete the old output file. 894235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM $output 894335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Link the executable and exit 894435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$link_command" 'exit $?' 8945b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 894635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$postlink_cmds"; then 894735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$output" 894835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 894935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$postlink_cmds" 'exit $?' 8950b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 895135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 8952b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project exit $EXIT_SUCCESS 895335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8954b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 895535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$hardcode_action" = relink; then 895635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Fast installation is not supported 895735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link_command="$compile_var$compile_command$compile_rpath" 895835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command="$finalize_var$finalize_command$finalize_rpath" 895935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 896035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "this platform does not like uninstalled shared libraries" 896135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_warning "\`$output' will be relinked during installation" 896235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 896335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$fast_install" != no; then 896435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link_command="$finalize_var$compile_command$finalize_rpath" 896535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$fast_install" = yes; then 896635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 896735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 896835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # fast_install is set to needless 896935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command= 897035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8971b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 897235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link_command="$compile_var$compile_command$compile_rpath" 897335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command="$finalize_var$finalize_command$finalize_rpath" 8974b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 897535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8976b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 897735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Replace the output file specification. 897835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8979b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 898035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Delete the old output files. 898135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8982b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 898335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$link_command" 'exit $?' 8984b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 898535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$postlink_cmds"; then 898635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$output_objdir/$outputname" 898735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 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'` 898835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$postlink_cmds" 'exit $?' 898935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 8990b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 899135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now create the wrapper script. 899235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "creating $output" 8993b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 899435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Quote the relink command for shipping. 899535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$relink_command"; then 899635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Preserve any variables that may affect compiler behavior 899735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for var in $variables_saved_for_relink; do 899835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if eval test -z \"\${$var+set}\"; then 899935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 900035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif eval var_value=\$$var; test -z "$var_value"; then 900135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command="$var=; export $var; $relink_command" 900235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 900335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$var_value" 900435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 900535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 900635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 900735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command="(cd `pwd`; $relink_command)" 900835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 900935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 901035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 901135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Only actually do things if not in dry run mode. 901235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 901335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # win32 will think the script is a binary if it has 901435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # a .exe suffix, so we strip it off here. 901535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $output in 901635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.exe) func_stripname '' '.exe' "$output" 901735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output=$func_stripname_result ;; 901835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 901935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # test for cygwin because mv fails w/o .exe extensions 902035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 902135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin*) 902235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exeext=.exe 902335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '.exe' "$outputname" 902435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes outputname=$func_stripname_result ;; 902535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) exeext= ;; 902635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 902735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host in 902835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin* | *mingw* ) 902935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname_and_basename "$output" "" "." 903035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output_name=$func_basename_result 903135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output_path=$func_dirname_result 903235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cwrappersource="$output_path/$objdir/lt-$output_name.c" 903335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cwrapper="$output_path/$output_name.exe" 903435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM $cwrappersource $cwrapper 903535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 903635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 903735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_emit_cwrapperexe_src > $cwrappersource 903835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 903935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # The wrapper executable is built using the $host compiler, 904035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # because it contains $host paths and files. If cross- 904135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # compiling, it, like the target executable, must be 904235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # executed on the $host or under an emulation environment. 904335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 904435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 904535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $STRIP $cwrapper 904635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 9047b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 904835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now, create the wrapper script for func_source use: 904935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_ltwrapper_scriptname $cwrapper 905035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM $func_ltwrapper_scriptname_result 905135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 905235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 905335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # note: this script will not be executed, so do not chmod. 905435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "x$build" = "x$host" ; then 905535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 9056b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 905735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_emit_wrapper no > $func_ltwrapper_scriptname_result 9058b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 905935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 906035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 906135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes * ) 906235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM $output 906335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 9064b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 906535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_emit_wrapper no > $output 906635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes chmod +x $output 9067b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 9068b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 906935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 907035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 907135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 907235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 9073b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 907435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # See if we need to build an old-fashioned archive. 907535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for oldlib in $oldlibs; do 9076b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 907735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = convenience; then 907835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldobjs="$libobjs_save $symfileobj" 907935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes addlibs="$convenience" 908035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=no 908135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 908235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$build_libtool_libs" = module; then 908335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldobjs="$libobjs_save" 908435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes build_libtool_libs=no 908535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 908635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldobjs="$old_deplibs $non_pic_objects" 908735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$preload" = yes && test -f "$symfileobj"; then 908835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append oldobjs " $symfileobj" 908935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 909035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 909135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes addlibs="$old_convenience" 9092b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9093b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 909435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$addlibs"; then 909535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes gentop="$output_objdir/${outputname}x" 909635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append generated " $gentop" 9097b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 909835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_extract_archives $gentop $addlibs 909935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append oldobjs " $func_extract_archives_result" 910035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 9101b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 910235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do each command in the archive commands. 910335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 910435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$old_archive_from_new_cmds 910535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 9106b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 910735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Add any objects from preloaded convenience libraries 910835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$dlprefiles"; then 910935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes gentop="$output_objdir/${outputname}x" 911035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append generated " $gentop" 9111b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 911235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_extract_archives $gentop $dlprefiles 911335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append oldobjs " $func_extract_archives_result" 911435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 9115b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 911635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # POSIX demands no paths to be encoded in archives. We have 911735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # to avoid creating archives with duplicate basenames if we 911835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # might have to extract them afterwards, e.g., when creating a 911935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # static archive out of a convenience library, or when linking 912035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the entirety of a libtool archive into another (currently 912135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # not supported by libtool). 912235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if (for obj in $oldobjs 912335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 912435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$obj" 912535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$func_basename_result" 912635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done | sort | sort -uc >/dev/null 2>&1); then 912735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes : 912835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 912935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes echo "copying selected object files to avoid basename conflicts..." 913035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes gentop="$output_objdir/${outputname}x" 913135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append generated " $gentop" 913235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_mkdir_p "$gentop" 913335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_oldobjs=$oldobjs 913435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldobjs= 913535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes counter=1 913635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for obj in $save_oldobjs 913735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 913835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$obj" 913935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes objbase="$func_basename_result" 914035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $oldobjs " in 914135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes " ") oldobjs=$obj ;; 914235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[\ /]"$objbase "*) 914335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes while :; do 914435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Make sure we don't pick an alternate name that also 914535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # overlaps. 914635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newobj=lt$counter-$objbase 914735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $counter + 1 914835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes counter=$func_arith_result 914935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $oldobjs " in 915035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *[\ /]"$newobj "*) ;; 915135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) if test ! -f "$gentop/$newobj"; then break; fi ;; 915235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 915335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 915435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 915535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append oldobjs " $gentop/$newobj" 915635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 915735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append oldobjs " $obj" ;; 915835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 9159b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 9160b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 916135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval cmds=\"$old_archive_cmds\" 9162b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 916335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_len " $cmds" 916435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len=$func_len_result 916535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 916635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$old_archive_cmds 916735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif test -n "$archiver_list_spec"; then 916835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "using command file archive linking..." 916935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for obj in $oldobjs 917035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 917135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$obj" 917235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO "$func_to_tool_file_result" 917335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done > $output_objdir/$libname.libcmd 917435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_to_tool_file "$output_objdir/$libname.libcmd" 917535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldobjs=" $archiver_list_spec$func_to_tool_file_result" 917635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes cmds=$old_archive_cmds 917735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 917835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the command line is too long to link in one step, link in parts 917935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "using piecewise archive linking..." 918035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_RANLIB=$RANLIB 918135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes RANLIB=: 918235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes objlist= 918335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes concat_cmds= 918435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes save_oldobjs=$oldobjs 918535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldobjs= 918635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Is there a better way of finding the last object in the list? 918735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for obj in $save_oldobjs 918835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 918935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes last_oldobj=$obj 919035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 919135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval test_cmds=\"$old_archive_cmds\" 919235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_len " $test_cmds" 919335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len0=$func_len_result 919435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len=$len0 919535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for obj in $save_oldobjs 919635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes do 919735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_len " $obj" 919835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_arith $len + $func_len_result 919935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len=$func_arith_result 920035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append objlist " $obj" 920135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$len" -lt "$max_cmd_len"; then 920235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes : 920335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 920435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the above command should be used before it gets too long 920535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldobjs=$objlist 920635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$obj" = "$last_oldobj" ; then 920735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes RANLIB=$save_RANLIB 920835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 920935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 921035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 921135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes objlist= 921235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes len=$len0 921335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 921435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 921535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes RANLIB=$save_RANLIB 921635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes oldobjs=$objlist 921735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$oldobjs" = "X" ; then 921835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval cmds=\"\$concat_cmds\" 921935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 922035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 922135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 922235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 922335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 922435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$cmds" 'exit $?' 9225b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 9226b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 922735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$generated" && \ 922835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "${RM}r$generated" 9229b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 923035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Now create the libtool archive. 923135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $output in 923235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) 923335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes old_library= 923435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$build_old_libs" = yes && old_library="$libname.$libext" 923535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_verbose "creating $output" 9236b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 923735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Preserve any variables that may affect compiler behavior 923835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for var in $variables_saved_for_relink; do 923935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if eval test -z \"\${$var+set}\"; then 924035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 924135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes elif eval var_value=\$$var; test -z "$var_value"; then 924235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command="$var=; export $var; $relink_command" 9243b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 924435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_quote_for_eval "$var_value" 924535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9246b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 924735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 924835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Quote the link command for shipping. 924935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 925035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 925135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$hardcode_automatic" = yes ; then 925235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command= 925335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 9254b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 925535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Only create the output if not a dry run. 925635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_dry_run || { 925735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for installed in no yes; do 925835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$installed" = yes; then 925935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -z "$install_libdir"; then 926035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes break 926135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 926235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes output="$output_objdir/$outputname"i 926335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Replace all uninstalled libtool libraries with the installed ones 926435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdependency_libs= 926535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for deplib in $dependency_libs; do 926635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $deplib in 926735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) 926835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$deplib" 926935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name="$func_basename_result" 927035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 927135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$libdir" && \ 927235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$deplib' is not a valid libtool archive" 927335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 927435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 927535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -L*) 927635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname -L '' "$deplib" 927735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_replace_sysroot "$func_stripname_result" 927835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdependency_libs " -L$func_replace_sysroot_result" 927935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 928035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -R*) 928135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname -R '' "$deplib" 928235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_replace_sysroot "$func_stripname_result" 928335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdependency_libs " -R$func_replace_sysroot_result" 928435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 928535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append newdependency_libs " $deplib" ;; 928635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 928735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 928835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dependency_libs="$newdependency_libs" 928935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdlfiles= 929035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 929135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lib in $dlfiles; do 929235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $lib in 929335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) 929435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$lib" 929535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name="$func_basename_result" 929635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 929735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$libdir" && \ 929835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$lib' is not a valid libtool archive" 929935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 930035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 930135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append newdlfiles " $lib" ;; 930235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 930335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 930435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlfiles="$newdlfiles" 930535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdlprefiles= 930635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lib in $dlprefiles; do 930735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $lib in 930835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *.la) 930935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Only pass preopened files to the pseudo-archive (for 931035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # eventual linking with the app. that links it) if we 931135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # didn't already link the preopened objects directly into 931235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # the library: 931335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$lib" 931435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name="$func_basename_result" 931535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 931635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$libdir" && \ 931735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_error "\`$lib' is not a valid libtool archive" 931835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 931935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 932035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 932135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 932235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlprefiles="$newdlprefiles" 932335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 932435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdlfiles= 932535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lib in $dlfiles; do 932635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $lib in 932735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 932835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) abs=`pwd`"/$lib" ;; 932935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 933035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlfiles " $abs" 933135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 933235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlfiles="$newdlfiles" 933335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes newdlprefiles= 933435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes for lib in $dlprefiles; do 933535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $lib in 933635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 933735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) abs=`pwd`"/$lib" ;; 933835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 933935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append newdlprefiles " $abs" 934035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 934135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dlprefiles="$newdlprefiles" 934235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 934335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $RM $output 934435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # place dlname in correct position for cygwin 934535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # In fact, it would be nice if we could use this code for all target 934635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # systems that can't hard-code library paths into their executables 934735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # and that have no shared library path variable independent of PATH, 934835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # but it turns out we can't easily determine that from inspecting 934935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # libtool variables, so we have to hard-code the OSs to which it 935035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # applies here; at the moment, that means platforms that use the PE 935135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # object format with DLL files. See the long comment at the top of 935235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # tests/bindir.at for full details. 935335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tdlname=$dlname 935435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case $host,$output,$installed,$module,$dlname in 935535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 935635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # If a -bindir argument was supplied, place the dll there. 935735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "x$bindir" != x ; 935835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes then 935935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_relative_path "$install_libdir" "$bindir" 936035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tdlname=$func_relative_path_result$dlname 936135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 936235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Otherwise fall back on heuristic. 936335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes tdlname=../bin/$dlname 936435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 936535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 936635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 936735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO > $output "\ 936835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# $outputname - a libtool library file 936935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 937035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# 937135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Please DO NOT delete this file! 937235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# It is necessary for linking the library. 9373b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 937435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# The name that we can dlopen(3). 937535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesdlname='$tdlname' 9376b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 937735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Names of this library. 937835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslibrary_names='$library_names' 9379b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 938035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# The name of the static archive. 938135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesold_library='$old_library' 9382b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 938335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Linker flags that can not go in dependency_libs. 938435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesinherited_linker_flags='$new_inherited_linker_flags' 9385b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 938635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Libraries that this one depends upon. 938735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesdependency_libs='$dependency_libs' 9388b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 938935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Names of additional weak libraries provided by this library 939035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesweak_library_names='$weak_libs' 9391b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 939235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Version information for $libname. 939335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughescurrent=$current 939435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesage=$age 939535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesrevision=$revision 9396b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 939735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Is this an already installed library? 939835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesinstalled=$installed 9399b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 940035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Should we warn about portability when linking against -modules? 940135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesshouldnotlink=$module 9402b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 940335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Files to dlopen/dlpreopen 940435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesdlopen='$dlfiles' 940535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesdlpreopen='$dlprefiles' 9406b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 940735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# Directory that this library needs to be installed in: 940835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hugheslibdir='$install_libdir'" 940935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$installed" = no && test "$need_relink" = yes; then 941035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $ECHO >> $output "\ 941135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesrelink_command=\"$relink_command\"" 941235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 941335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes done 941435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes } 9415b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 941635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Do a symbolic link so that the libtool archive can be found in 941735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # LD_LIBRARY_PATH before the program is installed. 941835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 941935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes ;; 942035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes esac 942135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes exit $EXIT_SUCCESS 942235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 9423b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 942435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 942535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_mode_link ${1+"$@"} 9426b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9427b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 942835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# func_mode_uninstall arg... 942935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesfunc_mode_uninstall () 943035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ 943135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes $opt_debug 943235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes RM="$nonopt" 9433b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project files= 9434b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project rmforce= 9435b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project exit_status=0 9436b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9437b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # This variable tells wrapper scripts just to set variables rather 9438b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # than running their programs. 9439b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project libtool_install_magic="$magic" 9440b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9441b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project for arg 9442b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project do 9443b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project case $arg in 944435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -f) func_append RM " $arg"; rmforce=yes ;; 944535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes -*) func_append RM " $arg" ;; 944635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append files " $arg" ;; 9447b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 9448b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 9449b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 945035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -z "$RM" && \ 945135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "you must specify an RM program" 9452b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9453b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project rmdirs= 9454b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9455b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project for file in $files; do 945635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_dirname "$file" "" "." 945735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes dir="$func_dirname_result" 945835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "X$dir" = X.; then 945935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes odir="$objdir" 9460b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project else 946135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes odir="$dir/$objdir" 9462b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 946335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_basename "$file" 946435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes name="$func_basename_result" 946535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$opt_mode" = uninstall && odir="$dir" 9466b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 946735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes # Remember odir for removal later, being careful to avoid duplicates 946835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$opt_mode" = clean; then 9469b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project case " $rmdirs " in 947035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *" $odir "*) ;; 947135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) func_append rmdirs " $odir" ;; 9472b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 9473b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9474b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9475b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Don't error if the file doesn't exist and rm -f was used. 947635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if { test -L "$file"; } >/dev/null 2>&1 || 947735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes { test -h "$file"; } >/dev/null 2>&1 || 947835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -f "$file"; then 9479b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project : 9480b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project elif test -d "$file"; then 9481b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project exit_status=1 9482b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project continue 9483b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project elif test "$rmforce" = yes; then 9484b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project continue 9485b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9486b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9487b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project rmfiles="$file" 9488b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9489b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project case $name in 9490b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *.la) 9491b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Possibly a libtool archive, so verify it. 949235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_lalib_p "$file"; then 949335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source $dir/$name 9494b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9495b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Delete the libtool libraries and symlinks. 9496b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project for n in $library_names; do 949735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rmfiles " $odir/$n" 9498b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 949935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$old_library" && func_append rmfiles " $odir/$old_library" 9500b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 950135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case "$opt_mode" in 9502b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project clean) 950335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes case " $library_names " in 9504b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *" $dlname "*) ;; 950535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 9506b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 950735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 9508b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 9509b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project uninstall) 9510b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if test -n "$library_names"; then 9511b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Do each command in the postuninstall commands. 951235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9513b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9514b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9515b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if test -n "$old_library"; then 9516b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Do each command in the old_postuninstall commands. 951735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9518b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9519b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # FIXME: should reinstall the best remaining shared library. 9520b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 9521b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 9522b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9523b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 9524b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9525b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *.lo) 9526b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Possibly a libtool object, so verify it. 952735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_lalib_p "$file"; then 9528b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9529b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Read the .lo file 953035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source $dir/$name 9531b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9532b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Add PIC object to the list of files to remove. 953335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$pic_object" && 953435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$pic_object" != none; then 953535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rmfiles " $dir/$pic_object" 9536b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9537b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9538b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Add non-PIC object to the list of files to remove. 953935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test -n "$non_pic_object" && 954035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes test "$non_pic_object" != none; then 954135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rmfiles " $dir/$non_pic_object" 9542b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9543b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9544b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 9545b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9546b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *) 954735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if test "$opt_mode" = clean ; then 9548b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project noexename=$name 9549b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project case $file in 9550b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project *.exe) 955135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '.exe' "$file" 955235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes file=$func_stripname_result 955335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_stripname '' '.exe' "$name" 955435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes noexename=$func_stripname_result 9555b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # $file with .exe has already been added to rmfiles, 9556b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # add $file without .exe 955735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rmfiles " $file" 9558b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 9559b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 9560b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Do a test to see if this is a libtool program. 956135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_ltwrapper_p "$file"; then 956235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes if func_ltwrapper_executable_p "$file"; then 956335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_ltwrapper_scriptname "$file" 956435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command= 956535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source $func_ltwrapper_scriptname_result 956635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rmfiles " $func_ltwrapper_scriptname_result" 956735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes else 956835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes relink_command= 956935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_source $dir/$noexename 957035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes fi 9571b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9572b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # note $name still contains .exe if it was in $file originally 9573b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # as does the version of $file that was added into $rmfiles 957435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 9575b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if test "$fast_install" = yes && test -n "$relink_command"; then 957635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rmfiles " $odir/lt-$name" 9577b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9578b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if test "X$noexename" != "X$name" ; then 957935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_append rmfiles " $odir/lt-${noexename}.c" 9580b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9581b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9582b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9583b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project ;; 9584b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project esac 958535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "$RM $rmfiles" 'exit_status=1' 9586b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 9587b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9588b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project # Try to remove the ${objdir}s in the directories where we deleted files 9589b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project for dir in $rmdirs; do 9590b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project if test -d "$dir"; then 959135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_show_eval "rmdir $dir >/dev/null 2>&1" 9592b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project fi 9593b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project done 9594b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9595b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project exit $exit_status 959635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 9597b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 959835e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 959935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_mode_uninstall ${1+"$@"} 9600b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 960135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestest -z "$opt_mode" && { 960235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes help="$generic_help" 960335e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "you must specify a MODE" 960435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes} 960535e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 960635e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughestest -z "$exec_cmd" && \ 960735e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes func_fatal_help "invalid operation mode \`$opt_mode'" 9608b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9609b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectif test -n "$exec_cmd"; then 961035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes eval exec "$exec_cmd" 9611b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project exit $EXIT_FAILURE 9612b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Projectfi 9613b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 961435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesexit $exit_status 9615b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9616b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9617b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# The TAGs below are defined such that we never get into a situation 9618b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# in which we disable both kinds of libraries. Given conflicting 9619b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# choices, we go for a static library, that is the most portable, 9620b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# since we can't tell whether shared libraries were disabled because 9621b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# the user asked for that or because the platform doesn't support 9622b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# them. This is particularly important on AIX, because we don't 9623b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# support having both static and shared libraries enabled at the same 9624b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# time on that platform, so we default to a shared-only configuration. 9625b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# If a disable-shared tag is given, we'll fallback to a static-only 9626b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# configuration. But we'll never go from static-only to shared-only. 9627b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9628b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 962935e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesbuild_libtool_libs=no 963035e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesbuild_old_libs=yes 9631b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# ### END LIBTOOL TAG CONFIG: disable-shared 9632b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9633b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# ### BEGIN LIBTOOL TAG CONFIG: disable-static 963435e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughesbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 9635b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# ### END LIBTOOL TAG CONFIG: disable-static 9636b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project 9637b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# Local Variables: 9638b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# mode:shell-script 9639b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# sh-indentation:2 9640b80e287d54a028e744f9fe412840a89ec7f8084bThe Android Open Source Project# End: 964135e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes# vi:sw=2 964235e432dd3af2c56c00fc64ca340d1e615030f0a3Elliott Hughes 9643