1885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# libtool (GNU libtool) 2.4.2 3885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 4885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 6885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 7885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This is free software; see the source for copying conditions. There is NO 8885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 10885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# GNU Libtool is free software; you can redistribute it and/or modify 11885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# it under the terms of the GNU General Public License as published by 12885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the Free Software Foundation; either version 2 of the License, or 13885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# (at your option) any later version. 14885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 15885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# As a special exception to the GNU General Public License, 16885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# if you distribute this file as part of a program or library that 17885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# is built using GNU Libtool, you may include this file under the 18885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# same distribution terms that you use for the rest of that program. 19885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 20885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# GNU Libtool is distributed in the hope that it will be useful, but 21885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# WITHOUT ANY WARRANTY; without even the implied warranty of 22885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# General Public License for more details. 24885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 25885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# You should have received a copy of the GNU General Public License 26885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# along with GNU Libtool; see the file COPYING. If not, a copy 27885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# can be downloaded from http://www.gnu.org/licenses/gpl.html, 28885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# or obtained by writing to the Free Software Foundation, Inc., 29885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 31885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Usage: $progname [OPTION]... [MODE-ARG]... 32885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 33885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Provide generalized library-building support services. 34885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 35885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --config show all configuration variables 36885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --debug enable verbose shell tracing 37885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# -n, --dry-run display commands without modifying any files 38885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --features display basic configuration information and exit 39885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --mode=MODE use operation mode MODE 40885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --preserve-dup-deps don't remove duplicate dependency libraries 41885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --quiet, --silent don't print informational messages 42885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --no-quiet, --no-silent 43885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# print informational messages (default) 44885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --no-warn don't display warning messages 45885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --tag=TAG use configuration variables from tag TAG 46885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# -v, --verbose print more informational messages than default 47885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --no-verbose don't print the extra informational messages 48885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --version print version information 49885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# -h, --help, --help-all print short, long, or detailed help message 50885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 51885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# MODE must be one of the following: 52885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 53885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# clean remove files from the build directory 54885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# compile compile a source file into a libtool object 55885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# execute automatically set library path, then run a program 56885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# finish complete the installation of libtool libraries 57885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# install install libraries or executables 58885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# link create a library or an executable 59885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# uninstall remove libraries from an installed directory 60885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 61885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# MODE-ARGS vary depending on the MODE. When passed as first option, 62885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 63885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 64885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 65885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# When reporting a bug, please describe a test case to reproduce it and 66885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include the following information: 67885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 68885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# host-triplet: $host 69885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# shell: $SHELL 70885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# compiler: $LTCC 71885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# compiler flags: $LTCFLAGS 72885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# linker: $LD (gnu? $with_gnu_ld) 73885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $progname: (GNU libtool) 2.4.2 74885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# automake: $automake_version 75885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# autoconf: $autoconf_version 76885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 77885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Report bugs to <bug-libtool@gnu.org>. 78885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 79885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# General help using GNU software: <http://www.gnu.org/gethelp/>. 80885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 81885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgPROGRAM=libtool 82885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgPACKAGE=libtool 83885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgVERSION=2.4.2 84885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgTIMESTAMP="" 85885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgpackage_revision=1.3337 86885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 87885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Be Bourne compatible 88885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 89885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org emulate sh 90885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org NULLCMD=: 91885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 92885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # is contrary to our usage. Disable this feature. 93885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org alias -g '${1+"$@"}'='"$@"' 94885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org setopt NO_GLOB_SUBST 95885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgelse 96885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 97885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfi 98885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgBIN_SH=xpg4; export BIN_SH # for Tru64 99885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgDUALCASE=1; export DUALCASE # for MKS sh 100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# A function that is used when there is no print builtin or printf. 102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_fallback_echo () 103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval 'cat <<_LTECHO_EOF 105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$1 106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org_LTECHO_EOF' 107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# NLS nuisances: We save the old values to restore during execute mode. 110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_user_locale= 111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_safe_locale= 112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdo 114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "if test \"\${$lt_var+set}\" = set; then 115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_$lt_var=\$$lt_var 116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $lt_var=C 117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export $lt_var 118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi" 121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdone 122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLC_ALL=C 123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLANGUAGE=C 124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexport LANGUAGE LC_ALL 125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$lt_unset CDPATH 127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# is ksh but when the shell is invoked as "sh" and the current value of 131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the _XPG environment variable is not equal to 1 (one), the special 132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# positional parameter $0, within a function call, is the name of the 133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# function. 134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgprogpath="$0" 135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${CP="cp -f"} 139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${MAKE="make"} 141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${MKDIR="mkdir"} 142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${MV="mv -f"} 143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${RM="rm -f"} 144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org: ${Xsed="$SED -e 1s/^X//"} 146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Global variables: 148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEXIT_SUCCESS=0 149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEXIT_FAILURE=1 150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexit_status=$EXIT_SUCCESS 154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Make sure IFS has a sensible default 156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_nl=' 157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org' 158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIFS=" $lt_nl" 159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdirname="s,/[^/]*$,," 161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbasename="s,^.*/,," 162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_dirname file append nondir_replacement 164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Compute the dirname of FILE. If nonempty, add APPEND to the result, 165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# otherwise set result to NONDIR_REPLACEMENT. 166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_dirname () 167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$func_dirname_result" = "X${1}"; then 170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname_result="${3}" 171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname_result="$func_dirname_result${2}" 173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_dirname may be replaced by extended shell implementation 175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_basename file 178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_basename () 179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename_result=`$ECHO "${1}" | $SED "$basename"` 181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_basename may be replaced by extended shell implementation 182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_dirname_and_basename file append nondir_replacement 185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# perform func_basename and func_dirname in a single function 186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# call: 187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# dirname: Compute the dirname of FILE. If nonempty, 188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# add APPEND to the result, otherwise set result 189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# to NONDIR_REPLACEMENT. 190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# value returned in "$func_dirname_result" 191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# basename: Compute filename of FILE. 192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# value retuned in "$func_basename_result" 193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Implementation must be kept synchronized with func_dirname 194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# and func_basename. For efficiency, we do not delegate to 195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# those functions but instead duplicate the functionality here. 196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_dirname_and_basename () 197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Extract subdirectory from the argument. 199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$func_dirname_result" = "X${1}"; then 201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname_result="${3}" 202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname_result="$func_dirname_result${2}" 204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_dirname_and_basename may be replaced by extended shell implementation 207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_stripname prefix suffix name 210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# strip PREFIX and SUFFIX off of NAME. 211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# PREFIX and SUFFIX must not contain globbing or regex special 212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# characters, hashes, percent signs, but SUFFIX may contain a leading 213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# dot (in which case that matches only a dot). 214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_strip_suffix prefix name 215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_stripname () 216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case ${2} in 218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_stripname may be replaced by extended shell implementation 222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# These SED scripts presuppose an absolute path with a trailing slash. 225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgpathcar='s,^/\([^/]*\).*$,\1,' 226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgpathcdr='s,^/[^/]*,,' 227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgremovedotparts=':dotsl 228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s@/\./@/@g 229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org t dotsl 230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s,/\.$,/,' 231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcollapseslashes='s@/\{1,\}@/@g' 232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfinalslash='s,/*$,/,' 233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_normal_abspath PATH 235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Remove doubled-up and trailing slashes, "." path components, 236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# and cancel out any ".." path components in PATH after making 237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# it an absolute path. 238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# value returned in "$func_normal_abspath_result" 239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_normal_abspath () 240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Start from root dir and reassemble the path. 242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_result= 243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_tpath=$1 244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_altnamespace= 245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $func_normal_abspath_tpath in 246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "") 247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Empty path, that just means $cwd. 248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '/' "`pwd`" 249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_result=$func_stripname_result 250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return 251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The next three entries are used to spot a run of precisely 253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # two leading slashes without using negated character classes; 254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # we take advantage of case's first-match behaviour. 255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ///*) 256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Unusual form of absolute path, do nothing. 257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org //*) 259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Not necessarily an ordinary path; POSIX reserves leading '//' 260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # and for example Cygwin uses it to access remote file shares 261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # over CIFS/SMB, so we conserve a leading double slash if found. 262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_altnamespace=/ 263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /*) 265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Absolute path, do nothing. 266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Relative path, prepend $cwd. 269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Cancel out all the simple stuff to save iterations. We also want 273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the path to end with a slash for ease of parsing, so make sure 274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # there is one (and only one) here. 275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while :; do 278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Processed it all yet? 279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$func_normal_abspath_tpath" = / ; then 280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If we ascended to the root using ".." the result may be empty now. 281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$func_normal_abspath_result" ; then 282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_result=/ 283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -e "$pathcar"` 288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -e "$pathcdr"` 290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Figure out what to do with it 291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $func_normal_abspath_tcomponent in 292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "") 293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Trailing empty path component, ignore it. 294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ..) 296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Parent dir; strip last assembled component from result. 297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$func_normal_abspath_result" 298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_result=$func_dirname_result 299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Actual path component, append it. 302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Restore leading double-slash if one was found on entry. 307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_relative_path SRCDIR DSTDIR 311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# generates a relative path from SRCDIR to DSTDIR, with a trailing 312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# slash if non-empty, suitable for immediately appending a filename 313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# without needing to append a separator. 314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# value returned in "$func_relative_path_result" 315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_relative_path () 316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_result= 318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath "$1" 319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_tlibdir=$func_normal_abspath_result 320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_normal_abspath "$2" 321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_tbindir=$func_normal_abspath_result 322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Ascend the tree starting from libdir 324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while :; do 325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # check if we have found a prefix of bindir 326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $func_relative_path_tbindir in 327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $func_relative_path_tlibdir) 328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # found an exact match 329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_tcancelled= 330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $func_relative_path_tlibdir*) 333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # found a matching prefix 334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_tcancelled=$func_stripname_result 336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$func_relative_path_result"; then 337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_result=. 338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname $func_relative_path_tlibdir 343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_tlibdir=${func_dirname_result} 344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "x$func_relative_path_tlibdir" = x ; then 345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Have to descend all the way to the root! 346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_result=../$func_relative_path_result 347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_tcancelled=$func_relative_path_tbindir 348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_result=../$func_relative_path_result 351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now calculate path; take care to avoid doubling-up slashes. 356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '/' "$func_relative_path_result" 357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_result=$func_stripname_result 358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '/' '/' "$func_relative_path_tcancelled" 359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "x$func_stripname_result" != x ; then 360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Normalisation. If bindir is libdir, return empty string, 364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # else relative path ending with a slash; either way, target 365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # file name can be directly appended. 366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test ! -z "$func_relative_path_result"; then 367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname './' '' "$func_relative_path_result/" 368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path_result=$func_stripname_result 369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The name of this program: 373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_dirname_and_basename "$progpath" 374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgprogname=$func_basename_result 375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Make sure we have an absolute path for reexecution: 377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcase $progpath in 378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]*|[A-Za-z]:\\*) ;; 379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[\\/]*) 380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org progdir=$func_dirname_result 381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org progdir=`cd "$progdir" && pwd` 382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org progpath="$progdir/$progname" 383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_IFS="$IFS" 386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS=${PATH_SEPARATOR-:} 387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for progdir in $PATH; do 388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_IFS" 389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -x "$progdir/$progname" && break 390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_IFS" 392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$progdir" || progdir=`pwd` 393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org progpath="$progdir/$progname" 394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgesac 396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Sed substitution that helps us do robust quoting. It backslashifies 398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# metacharacters that are still active within double-quoted strings. 399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgXsed="${SED}"' -e 1s/^X//' 400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Same as above, but do not quote variable references. 403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Sed substitution that turns a string into a regex matching for the 406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# string literally. 407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgsed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Sed substitution that converts a w32 file name or path 410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# which contains forward slashes, into one that contains 411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# (escaped) backslashes. A very naive implementation. 412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Re-`\' parameter expansions in output of double_quote_subst that were 415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in input to double_quote_subst, that '$' was protected from expansion. 417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Since each input `\' is now two `\'s, look for any number of runs of 418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbs='\\' 420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbs2='\\\\' 421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbs4='\\\\\\\\' 422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdollar='\$' 423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgsed_double_backslash="\ 424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/$bs4/&\\ 425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/g 426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/^$bs2$dollar/$bs&/ 427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/\n//g" 429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Standard options: 431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_dry_run=false 432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_help=false 433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_quiet=false 434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_verbose=false 435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_warning=: 436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_echo arg... 438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message, along with the current mode 439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# name if it has been set yet. 440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_echo () 441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_verbose arg... 446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message in verbose mode only. 447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_verbose () 448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_verbose && func_echo ${1+"$@"} 450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # A bug in bash halts the script if the last line of a function 452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # fails when set -e is in force, so we need another command to 453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # work around that: 454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org : 455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_echo_all arg... 458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Invoke $ECHO with all args, space-separated. 459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_echo_all () 460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$*" 462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_error arg... 465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message to standard error. 466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_error () 467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_warning arg... 472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed warning message to standard error. 473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_warning () 474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # bash bug again: 478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org : 479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_fatal_error arg... 482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message to standard error, and exit. 483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_fatal_error () 484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error ${1+"$@"} 486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_FAILURE 487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_fatal_help arg... 490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message to standard error, followed by 491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# a help hint, and exit. 492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_fatal_help () 493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error ${1+"$@"} 495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "$help" 496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orghelp="Try \`$progname --help' for more information." ## default 498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_grep expression filename 501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Check whether EXPRESSION matches any line of FILENAME, without output. 502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_grep () 503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $GREP "$1" "$2" >/dev/null 2>&1 505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mkdir_p directory-path 509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Make sure the entire path to DIRECTORY-PATH is available. 510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mkdir_p () 511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_directory_path="$1" 513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_dir_list= 514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Protect directory names starting with `-' 518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $my_directory_path in 519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -*) my_directory_path="./$my_directory_path" ;; 520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # While some portion of DIR does not yet exist... 523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while test ! -d "$my_directory_path"; do 524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # ...make a list in topmost first order. Use a colon delimited 525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # list incase some portion of path contains whitespace. 526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_dir_list="$my_directory_path:$my_dir_list" 527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the last portion added has no slash in it, the list is done 529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $my_directory_path in */*) ;; *) break ;; esac 530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # ...otherwise throw away the child directory and loop 532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_mkdir_p_IFS="$IFS"; IFS=':' 537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for my_dir in $my_dir_list; do 538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_mkdir_p_IFS" 539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # mkdir can fail with a `File exist' error if two processes 540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # try to create one of the directories concurrently. Don't 541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # stop in that case! 542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $MKDIR "$my_dir" 2>/dev/null || : 543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_mkdir_p_IFS" 545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Bail out if we (or some other process) failed to create a directory. 547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -d "$my_directory_path" || \ 548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "Failed to create \`$1'" 549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mktempdir [string] 554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Make a temporary directory that won't clash with other running 555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# libtool processes, and avoids race conditions if possible. If 556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# given, STRING is the basename for that directory. 557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mktempdir () 558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_template="${TMPDIR-/tmp}/${1-$progname}" 560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$opt_dry_run" = ":"; then 562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Return a directory name, but don't create it in dry-run mode 563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_tmpdir="${my_template}-$$" 564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If mktemp works, use that first and foremost 567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test ! -d "$my_tmpdir"; then 570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Failing that, at least try and use $RANDOM to avoid a race 571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_tmpdir="${my_template}-${RANDOM-0}$$" 572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_mktempdir_umask=`umask` 574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org umask 0077 575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $MKDIR "$my_tmpdir" 576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org umask $save_mktempdir_umask 577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If we're not in dry-run mode, bomb out on failure 580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -d "$my_tmpdir" || \ 581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$my_tmpdir" 585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_quote_for_eval arg 589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Aesthetically quote ARG to be evaled later. 590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# is double-quoted, suitable for a subsequent eval, whereas 592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# which are still active within double quotes backslashified. 594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_quote_for_eval () 595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $1 in 597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[\\\`\"\$]*) 598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval_unquoted_result="$1" ;; 601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $func_quote_for_eval_unquoted_result in 604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Double-quote args containing shell metacharacters to delay 605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # word splitting, command substitution and and variable 606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # expansion for a subsequent eval. 607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Many Bourne shells cannot handle close brackets correctly 608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # in scan sets, so we specify it separately. 609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_quote_for_expand arg 619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Aesthetically quote ARG to be evaled later; same as above, 620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# but do not quote variable references. 621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_quote_for_expand () 622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $1 in 624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[\\\`\"]*) 625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_arg=`$ECHO "$1" | $SED \ 626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_arg="$1" ;; 629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $my_arg in 632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Double-quote args containing shell metacharacters to delay 633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # word splitting and command substitution for a subsequent eval. 634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Many Bourne shells cannot handle close brackets correctly 635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # in scan sets, so we specify it separately. 636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_arg="\"$my_arg\"" 638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_expand_result="$my_arg" 642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_show_eval cmd [fail_exp] 646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# is given, then evaluate it. 649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_show_eval () 650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_cmd="$1" 652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_fail_exp="${2-:}" 653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ${opt_silent-false} || { 655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_expand "$my_cmd" 656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "func_echo $func_quote_for_expand_result" 657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ${opt_dry_run-false}; then :; else 660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$my_cmd" 661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_status=$? 662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$my_status" -eq 0; then :; else 663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "(exit $my_status); $my_fail_exp" 664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_show_eval_locale cmd [fail_exp] 670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# is given, then evaluate it. Use the saved locale for evaluation. 673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_show_eval_locale () 674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_cmd="$1" 676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_fail_exp="${2-:}" 677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ${opt_silent-false} || { 679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_expand "$my_cmd" 680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "func_echo $func_quote_for_expand_result" 681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ${opt_dry_run-false}; then :; else 684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$lt_user_locale 685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $my_cmd" 686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_status=$? 687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$lt_safe_locale" 688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$my_status" -eq 0; then :; else 689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "(exit $my_status); $my_fail_exp" 690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_tr_sh 695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Turn $1 into a string suitable for a shell variable name. 696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result is stored in $func_tr_sh_result. All characters 697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# if $1 begins with a digit, a '_' is prepended as well. 699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_tr_sh () 700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $1 in 702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [0-9]* | *[!a-zA-Z0-9_]*) 703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org * ) 706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_tr_sh_result=$1 707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_version 713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo version message to standard output and exit. 714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_version () 715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -n '/(C)/!b go 719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org :more 720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /\./!{ 721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org N 722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/\n# / / 723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org b more 724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org :go 726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /^# '$PROGRAM' (GNU /,/# warranty; / { 727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/^# // 728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/^# *$// 729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org p 731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org }' < "$progpath" 732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $? 733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_usage 736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo short help message to standard output and exit. 737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_usage () 738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -n '/^# Usage:/,/^# *.*--help/ { 742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/^# // 743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/^# *$// 744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/\$progname/'$progname'/ 745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org p 746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org }' < "$progpath" 747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "run \`$progname --help | more' for full usage" 749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $? 750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_help [NOEXIT] 753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo long help message to standard output and exit, 754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# unless 'noexit' is passed as argument. 755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_help () 756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -n '/^# Usage:/,/# Report bugs to/ { 760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org :print 761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/^# // 762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/^# *$// 763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s*\$progname*'$progname'* 764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s*\$host*'"$host"'* 765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s*\$SHELL*'"$SHELL"'* 766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s*\$LTCC*'"$LTCC"'* 767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s*\$LTCFLAGS*'"$LTCFLAGS"'* 768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s*\$LD*'"$LD"'* 769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/\$with_gnu_ld/'"$with_gnu_ld"'/ 770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org p 773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org d 774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /^# .* home page:/b print 776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /^# General help using/b print 777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ' < "$progpath" 778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ret=$? 779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$1"; then 780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $ret 781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_missing_arg argname 785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message to standard error and set global 786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# exit_cmd. 787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_missing_arg () 788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "missing argument for $1." 792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit_cmd=exit 793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_split_short_opt shortopt 797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Set func_split_short_opt_name and func_split_short_opt_arg shell 798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# variables after splitting SHORTOPT after the 2nd character. 799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_split_short_opt () 800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_sed_short_opt='1s/^\(..\).*$/\1/;q' 802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_split_short_opt may be replaced by extended shell implementation 807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_split_long_opt longopt 810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Set func_split_long_opt_name and func_split_long_opt_arg shell 811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# variables after splitting LONGOPT at the `=' sign. 812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_split_long_opt () 813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_sed_long_arg='1s/^--[^=]*=//' 816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_split_long_opt may be replaced by extended shell implementation 820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexit_cmd=: 822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgmagic="%%%MAGIC variable%%%" 828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgmagic_exe="%%%MAGIC EXE variable%%%" 829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Global variables. 831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgnonopt= 832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgpreserve_args= 833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglo2o="s/\\.lo\$/.${objext}/" 834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgo2lo="s/\\.${objext}\$/.lo/" 835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgextracted_archives= 836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgextracted_serial=0 837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If this variable is set in any of the actions, the command in it 839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# will be execed at the end. This prevents here-documents from being 840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# left over by shells. 841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexec_cmd= 842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_append var value 844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Append VALUE to the end of shell variable VAR. 845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append () 846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "${1}=\$${1}\${2}" 848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_append may be replaced by extended shell implementation 849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_append_quoted var value 851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Quote VALUE and append to the end of shell variable VAR, separated 852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# by a space. 853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append_quoted () 854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "${2}" 856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_append_quoted may be replaced by extended shell implementation 858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_arith arithmetic-term... 861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_arith () 862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith_result=`expr "${@}"` 864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_arith may be replaced by extended shell implementation 865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_len string 868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# STRING may not start with a hyphen. 869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_len () 870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_len may be replaced by extended shell implementation 873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_lo2o object 876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_lo2o () 877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_lo2o may be replaced by extended shell implementation 880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_xform libobj-or-source 883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_xform () 884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} # func_xform may be replaced by extended shell implementation 887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_fatal_configuration arg... 890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echo program name prefixed message to standard error, followed by 891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# a configuration failure hint, and exit. 892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_fatal_configuration () 893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error ${1+"$@"} 895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "See the $PACKAGE documentation for more information." 896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "Fatal configuration error." 897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_config 901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Display the configuration for all the tags in this script. 902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_config () 903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org re_begincf='^# ### BEGIN LIBTOOL' 905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org re_endcf='^# ### END LIBTOOL' 906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Default configuration. 908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now print the configurations for the tags. 911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for tagname in $taglist; do 912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $? 916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_features 919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Display the features supported by this script. 920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_features () 921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "host: $host" 923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = yes; then 924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "enable shared libraries" 925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "disable shared libraries" 927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_old_libs" = yes; then 929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "enable static libraries" 930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "disable static libraries" 932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $? 935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_enable_tag tagname 938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Verify that TAGNAME is valid, and either flag an error and exit, or 939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# variable here. 941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_enable_tag () 942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Global variable: 944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tagname="$1" 945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sed_extractcf="/$re_begincf/,/$re_endcf/p" 949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Validate tagname. 951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $tagname in 952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[!-_A-Za-z0-9,/]*) 953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "invalid tag name: $tagname" 954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Don't test for the "default" C tag, as we know it's 958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # there but not specially marked. 959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $tagname in 960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org CC) ;; 961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org taglist="$taglist $tagname" 964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Evaluate the configuration. Be careful to quote the path 966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # and the sed script, to avoid splitting on whitespace, but 967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # also don't use non-portable quotes within backquotes within 968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # quotes we have to do it in 2 steps: 969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$extractedcf" 971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "ignoring unknown tag $tagname" 973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_check_version_match 979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Ensure that we are using m4 macros, and libtool script from the same 980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# release of libtool. 981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_check_version_match () 982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$package_revision" != "$macro_revision"; then 984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$VERSION" != "$macro_version"; then 985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$macro_version"; then 986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat >&2 <<_LT_EOF 987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: definition of this LT_INIT comes from an older release. 989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: and run autoconf again. 991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org_LT_EOF 992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat >&2 <<_LT_EOF 994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: and run autoconf again. 998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org_LT_EOF 999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 1001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat >&2 <<_LT_EOF 1002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: but the definition of this LT_INIT comes from revision $macro_revision. 1004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: You should recreate aclocal.m4 with macros from revision $package_revision 1005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$progname: of $PACKAGE $VERSION and run autoconf again. 1006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org_LT_EOF 1007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_MISMATCH 1010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Shorthand for --mode=foo, only valid as the first argument 1015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcase $1 in 1016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgclean|clea|cle|cl) 1017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift; set dummy --mode clean ${1+"$@"}; shift 1018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcompile|compil|compi|comp|com|co|c) 1020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift; set dummy --mode compile ${1+"$@"}; shift 1021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexecute|execut|execu|exec|exe|ex|e) 1023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift; set dummy --mode execute ${1+"$@"}; shift 1024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfinish|finis|fini|fin|fi|f) 1026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift; set dummy --mode finish ${1+"$@"}; shift 1027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginstall|instal|insta|inst|ins|in|i) 1029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift; set dummy --mode install ${1+"$@"}; shift 1030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglink|lin|li|l) 1032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift; set dummy --mode link ${1+"$@"}; shift 1033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orguninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 1035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift; set dummy --mode uninstall ${1+"$@"}; shift 1036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgesac 1038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Option defaults: 1042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_debug=: 1043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_dry_run=false 1044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_config=false 1045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_preserve_dup_deps=false 1046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_features=false 1047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_finish=false 1048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_help=false 1049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_help_all=false 1050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_silent=: 1051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_warning=: 1052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_verbose=: 1053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_silent=false 1054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_verbose=false 1055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Parse options once, thoroughly. This comes as soon as possible in the 1058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# script to make things like `--version' happen as quickly as we can. 1059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # this just eases exit handling 1061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while test $# -gt 0; do 1062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt="$1" 1063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 1064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $opt in 1065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --debug|-x) opt_debug='set -x' 1066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_echo "enabling shell trace mode" 1067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --dry-run|--dryrun|-n) 1070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_dry_run=: 1071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --config) 1073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_config=: 1074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_config 1075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --dlopen|-dlopen) 1077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org optarg="$1" 1078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_dlopen="${opt_dlopen+$opt_dlopen 1079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}$optarg" 1080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 1081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --preserve-dup-deps) 1083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_preserve_dup_deps=: 1084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --features) 1086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_features=: 1087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_features 1088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --finish) 1090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_finish=: 1091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgset dummy --mode finish ${1+"$@"}; shift 1092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --help) 1094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_help=: 1095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --help-all) 1097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_help_all=: 1098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_help=': help-all' 1099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --mode) 1101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test $# = 0 && func_missing_arg $opt && break 1102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org optarg="$1" 1103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_mode="$optarg" 1104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcase $optarg in 1105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Valid mode arguments: 1106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org clean|compile|execute|finish|install|link|relink|uninstall) ;; 1107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Catch anything else as an error 1109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_error "invalid argument for $opt" 1110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit_cmd=exit 1111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 1112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgesac 1114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 1115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --no-silent|--no-quiet) 1117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_silent=false 1118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt" 1119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --no-warning|--no-warn) 1121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_warning=false 1122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt" 1123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --no-verbose) 1125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_verbose=false 1126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt" 1127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --silent|--quiet) 1129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_silent=: 1130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt" 1131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_verbose=false 1132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --verbose|-v) 1134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_verbose=: 1135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt" 1136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgopt_silent=false 1137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --tag) 1139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test $# = 0 && func_missing_arg $opt && break 1140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org optarg="$1" 1141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_tag="$optarg" 1142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_append preserve_args " $opt $optarg" 1143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_enable_tag "$optarg" 1144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 1145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -\?|-h) func_usage ;; 1148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --help) func_help ;; 1149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --version) func_version ;; 1150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Separate optargs to long options: 1152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --*=*) 1153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_split_long_opt "$opt" 1154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 1155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 1156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Separate non-argument short options: 1159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -\?*|-h*|-n*|-v*) 1160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_split_short_opt "$opt" 1161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 1162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 1163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --) break ;; 1166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -*) func_fatal_help "unrecognized option \`$opt'" ;; 1167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) set dummy "$opt" ${1+"$@"}; shift; break ;; 1168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 1170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Validate options: 1172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # save first non-option argument 1174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$#" -gt 0; then 1175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonopt="$opt" 1176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 1177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # preserve --debug 1180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$opt_debug" = : || func_append preserve_args " --debug" 1181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 1183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | *mingw* | *pw32* | *cegcc*) 1184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # don't eliminate duplications in $postdeps and $predeps 1185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_duplicate_compiler_generated_deps=: 1186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 1188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 1189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_help || { 1193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Sanity checks first: 1194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_check_version_match 1195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_configuration "not configured to build any kind of library" 1198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Darwin sucks 1201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval std_shrext=\"$shrext_cmds\" 1202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Only execute mode is allowed to have -dlopen flags. 1204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 1205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "unrecognized option \`-dlopen'" 1206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$help" 1>&2 1207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_FAILURE 1208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Change the help message to a mode-specific one. 1211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org generic_help="$help" 1212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org help="Try \`$progname --help --mode=$opt_mode' for more information." 1213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 1214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Bail if the options were screwed 1217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $exit_cmd $EXIT_FAILURE 1218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org## ----------- ## 1224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org## Main. ## 1225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org## ----------- ## 1226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_lalib_p file 1228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True iff FILE is a libtool `.la' library or `.lo' object file. 1229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function is only a basic sanity check; it will hardly flush out 1230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# determined imposters. 1231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_lalib_p () 1232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -f "$1" && 1234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -e 4q "$1" 2>/dev/null \ 1235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 1236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_lalib_unsafe_p file 1239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True iff FILE is a libtool `.la' library or `.lo' object file. 1240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function implements the same check as func_lalib_p without 1241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# resorting to external programs. To this end, it redirects stdin and 1242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# closes it afterwards, without saving the original file descriptor. 1243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# As a safety measure, use it only where a negative result would be 1244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# fatal anyway. Works if `file' does not exist. 1245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_lalib_unsafe_p () 1246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lalib_p=no 1248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 1249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lalib_p_l in 1 2 3 4 1250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 1251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org read lalib_p_line 1252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$lalib_p_line" in 1253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 1254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 1256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exec 0<&5 5<&- 1257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$lalib_p" = yes 1259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_ltwrapper_script_p file 1262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True iff FILE is a libtool wrapper script 1263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function is only a basic sanity check; it will hardly flush out 1264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# determined imposters. 1265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_ltwrapper_script_p () 1266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lalib_p "$1" 1268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_ltwrapper_executable_p file 1271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True iff FILE is a libtool wrapper executable 1272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function is only a basic sanity check; it will hardly flush out 1273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# determined imposters. 1274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_ltwrapper_executable_p () 1275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_ltwrapper_exec_suffix= 1277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $1 in 1278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.exe) ;; 1279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_ltwrapper_exec_suffix=.exe ;; 1280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 1282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_ltwrapper_scriptname file 1285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Assumes file is an ltwrapper_executable 1286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# uses $file to determine the appropriate filename for a 1287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# temporary ltwrapper_script. 1288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_ltwrapper_scriptname () 1289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname_and_basename "$1" "" "." 1291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '.exe' "$func_basename_result" 1292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 1293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_ltwrapper_p file 1296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True iff FILE is a libtool wrapper script or wrapper executable 1297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This function is only a basic sanity check; it will hardly flush out 1298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# determined imposters. 1299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_ltwrapper_p () 1300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 1302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_execute_cmds commands fail_cmd 1306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Execute tilde-delimited COMMANDS. 1307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If FAIL_CMD is given, eval that upon failure. 1308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# FAIL_CMD may read-access the current command in variable CMD! 1309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_execute_cmds () 1310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_ifs=$IFS; IFS='~' 1313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for cmd in $1; do 1314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS=$save_ifs 1315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval cmd=\"$cmd\" 1316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$cmd" "${2-:}" 1317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 1318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS=$save_ifs 1319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_source file 1323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Source FILE, adding directory component if necessary. 1324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Note that it is not necessary on cygwin/mingw to append a dot to 1325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 1326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# behavior happens only for exec(3), not for open(2)! Also, sourcing 1327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# `FILE.' does not work on cygwin managed mounts. 1328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_source () 1329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $1 in 1332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org */* | *\\*) . "$1" ;; 1333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) . "./$1" ;; 1334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_resolve_sysroot PATH 1339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Replace a leading = in PATH with a sysroot. Store the result into 1340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_resolve_sysroot_result 1341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_resolve_sysroot () 1342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot_result=$1 1344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $func_resolve_sysroot_result in 1345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org =*) 1346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '=' '' "$func_resolve_sysroot_result" 1347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 1348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_replace_sysroot PATH 1353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If PATH begins with the sysroot, replace it with = and 1354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# store the result into func_replace_sysroot_result. 1355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_replace_sysroot () 1356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$lt_sysroot:$1" in 1358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ?*:"$lt_sysroot"*) 1359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname "$lt_sysroot" '' "$1" 1360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_replace_sysroot_result="=$func_stripname_result" 1361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 1363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Including no sysroot. 1364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_replace_sysroot_result=$1 1365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_infer_tag arg 1370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Infer tagged configuration to use if any are available and 1371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# if one wasn't chosen via the "--tag" command line option. 1372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Only attempt this if the compiler in the base compile 1373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# command doesn't match the default compiler. 1374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# arg is usually of the form 'gcc ...' 1375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_infer_tag () 1376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$available_tags" && test -z "$tagname"; then 1379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org CC_quoted= 1380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for arg in $CC; do 1381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append_quoted CC_quoted "$arg" 1382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 1383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org CC_expanded=`func_echo_all $CC` 1384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org CC_quoted_expanded=`func_echo_all $CC_quoted` 1385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $@ in 1386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Blanks in the command may have been stripped by the calling shell, 1387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # but not from the CC environment variable when configure was run. 1388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 1390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Blanks at the start of $base_compile will cause this to fail 1391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # if we don't check for them as well. 1392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 1393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for z in $available_tags; do 1394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Evaluate the configuration. 1396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org CC_quoted= 1398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for arg in $CC; do 1399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Double-quote args containing other shell metacharacters. 1400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append_quoted CC_quoted "$arg" 1401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 1402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org CC_expanded=`func_echo_all $CC` 1403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org CC_quoted_expanded=`func_echo_all $CC_quoted` 1404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$@ " in 1405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 1407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The compiler in the base compile command matches 1408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the one in the tagged configuration. 1409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Assume this is the tagged configuration we want. 1410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tagname=$z 1411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 1412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 1416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If $tagname still isn't set, then no tagged configuration 1417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # was found and let the user know that the "--tag" command 1418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # line option must be used. 1419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$tagname"; then 1420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_echo "unable to infer tagged configuration" 1421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "specify a tag with \`--tag'" 1422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# else 1423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_verbose "using $tagname tagged configuration" 1424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_write_libtool_object output_name pic_name nonpic_name 1433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Create a libtool object file (analogous to a ".la" file), 1434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# but don't create it if we're doing a dry run. 1435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_write_libtool_object () 1436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org write_libobj=${1} 1438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = yes; then 1439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org write_lobj=\'${2}\' 1440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 1441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org write_lobj=none 1442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_old_libs" = yes; then 1445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org write_oldobj=\'${3}\' 1446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 1447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org write_oldobj=none 1448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 1451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat >${write_libobj}T <<EOF 1452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $write_libobj - a libtool object file 1453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 1455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Please DO NOT delete this file! 1456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# It is necessary for linking the library. 1457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Name of the PIC object. 1459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgpic_object=$write_lobj 1460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Name of the non-PIC object 1462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgnon_pic_object=$write_oldobj 1463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 1465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $MV "${write_libobj}T" "${write_libobj}" 1466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 1467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org################################################## 1471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 1472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org################################################## 1473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_core_file_wine_to_w32 ARG 1475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Helper function used by file name conversion functions when $build is *nix, 1476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# and $host is mingw, cygwin, or some other w32 environment. Relies on a 1477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# correctly configured wine environment available, with the winepath program 1478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in $build's $PATH. 1479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 1480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG is the $build file name to be converted to w32 format. 1481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result is available in $func_convert_core_file_wine_to_w32_result, and will 1482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# be empty on error (or when ARG is empty) 1483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_core_file_wine_to_w32 () 1484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_file_wine_to_w32_result="$1" 1487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Unfortunately, winepath does not exit with a non-zero error code, so we 1489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # are forced to check the contents of stdout. On the other hand, if the 1490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # command is not found, the shell will set an exit code of 127 and print 1491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # *an error message* to stdout. So we must check for both error code of 1492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # zero AND non-empty stdout, which explains the odd construction: 1493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 1494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 1495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 1496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -e "$lt_sed_naive_backslashify"` 1497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 1498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_file_wine_to_w32_result= 1499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end: func_convert_core_file_wine_to_w32 1503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_core_path_wine_to_w32 ARG 1506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Helper function used by path conversion functions when $build is *nix, and 1507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 1508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# configured wine environment available, with the winepath program in $build's 1509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $PATH. Assumes ARG has no leading or trailing path separator characters. 1510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 1511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG is path to be converted from $build format to win32. 1512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result is available in $func_convert_core_path_wine_to_w32_result. 1513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Unconvertible file (directory) names in ARG are skipped; if no directory names 1514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# are convertible, then the result may be empty. 1515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_core_path_wine_to_w32 () 1516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # unfortunately, winepath doesn't convert paths, only file names 1519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_path_wine_to_w32_result="" 1520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldIFS=$IFS 1522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS=: 1523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for func_convert_core_path_wine_to_w32_f in $1; do 1524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS=$oldIFS 1525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 1526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$func_convert_core_file_wine_to_w32_result" ; then 1527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$func_convert_core_path_wine_to_w32_result"; then 1528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 1529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 1530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 1531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 1534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS=$oldIFS 1535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end: func_convert_core_path_wine_to_w32 1538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygpath ARGS... 1541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 1542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 1543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 1544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# (2), returns the Cygwin file name or path in func_cygpath_result (input 1545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# file name or path is assumed to be in w32 format, as previously converted 1546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# from $build's *nix or MSYS format). In case (3), returns the w32 file name 1547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# or path in func_cygpath_result (input file name or path is assumed to be in 1548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Cygwin format). Returns an empty string on error. 1549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 1550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARGS are passed to cygpath, with the last one being the file name or path to 1551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# be converted. 1552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 1553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 1554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# environment variable; do not put it in $PATH. 1555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygpath () 1556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 1559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 1560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$?" -ne 0; then 1561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # on failure, ensure result is empty 1562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_cygpath_result= 1563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 1565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_cygpath_result= 1566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 1567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#end: func_cygpath 1570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_core_msys_to_w32 ARG 1573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name or path ARG from MSYS format to w32 format. Return 1574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# result in func_convert_core_msys_to_w32_result. 1575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_core_msys_to_w32 () 1576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # awkward: cmd appends spaces to result 1579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 1580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 1581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#end: func_convert_core_msys_to_w32 1583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_check ARG1 ARG2 1586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Verify that ARG1 (a file name in $build format) was converted to $host 1587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# format in ARG2. Otherwise, emit an error message, but continue (resetting 1588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result to ARG1). 1589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_check () 1590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$2" && test -n "$1" ; then 1593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "Could not determine host file name corresponding to" 1594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error " \`$1'" 1595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "Continuing, but uninstalled executables may not work." 1596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Fallback: 1597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$1" 1598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_check 1601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 1604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Verify that FROM_PATH (a path in $build format) was converted to $host 1605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 1606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result to a simplistic fallback value (see below). 1607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_check () 1608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$4" && test -n "$3"; then 1611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "Could not determine the host path corresponding to" 1612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error " \`$3'" 1613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "Continuing, but uninstalled executables may not work." 1614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Fallback. This is a deliberately simplistic "conversion" and 1615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # should not be "improved". See libtool.info. 1616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "x$1" != "x$2"; then 1617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_replace_pathsep_chars="s|$1|$2|g" 1618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result=`echo "$3" | 1619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -e "$lt_replace_pathsep_chars"` 1620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 1621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$3" 1622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_check 1626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 1629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 1630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# and appending REPL if ORIG matches BACKPAT. 1631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_front_back_pathsep () 1632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $4 in 1635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $1 ) func_to_host_path_result="$3$func_to_host_path_result" 1636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $4 in 1639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $2 ) func_append func_to_host_path_result "$3" 1640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_front_back_pathsep 1644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org################################################## 1647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $build to $host FILE NAME CONVERSION FUNCTIONS # 1648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org################################################## 1649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# invoked via `$to_host_file_cmd ARG' 1650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 1651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# In each case, ARG is the path to be converted from $build to $host format. 1652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result will be available in $func_to_host_file_result. 1653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file ARG 1656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Converts the file name ARG from $build format to $host format. Return result 1657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in func_to_host_file_result. 1658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_to_host_file () 1659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $to_host_file_cmd "$1" 1662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_to_host_file 1664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_tool_file ARG LAZY 1667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# converts the file name ARG from $build format to toolchain format. Return 1668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# result in func_to_tool_file_result. If the conversion in use is listed 1669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in (the comma separated) LAZY, no conversion takes place. 1670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_to_tool_file () 1671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case ,$2, in 1674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *,"$to_tool_file_cmd",*) 1675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file_result=$1 1676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 1678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $to_tool_file_cmd "$1" 1679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file_result=$func_to_host_file_result 1680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 1682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_to_tool_file 1684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_noop ARG 1687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Copy ARG to func_to_host_file_result. 1688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_noop () 1689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$1" 1691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_noop 1693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_msys_to_w32 ARG 1696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 1697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# conversion to w32 is not available inside the cwrapper. Returns result in 1698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result. 1699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_msys_to_w32 () 1700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$1" 1703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_msys_to_w32 "$1" 1705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$func_convert_core_msys_to_w32_result" 1706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_file_check "$1" "$func_to_host_file_result" 1708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_msys_to_w32 1710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_cygwin_to_w32 ARG 1713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name ARG from Cygwin to w32 format. Returns result in 1714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result. 1715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_cygwin_to_w32 () 1716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$1" 1719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 1721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # LT_CYGPATH in this case. 1722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result=`cygpath -m "$1"` 1723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_file_check "$1" "$func_to_host_file_result" 1725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_cygwin_to_w32 1727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_nix_to_w32 ARG 1730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name ARG from *nix to w32 format. Requires a wine environment 1731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# and a working winepath. Returns result in func_to_host_file_result. 1732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_nix_to_w32 () 1733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$1" 1736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_file_wine_to_w32 "$1" 1738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 1739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_file_check "$1" "$func_to_host_file_result" 1741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_nix_to_w32 1743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_msys_to_cygwin ARG 1746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Returns result in func_to_host_file_result. 1748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_msys_to_cygwin () 1749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$1" 1752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_msys_to_w32 "$1" 1754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_cygpath -u "$func_convert_core_msys_to_w32_result" 1755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$func_cygpath_result" 1756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_file_check "$1" "$func_to_host_file_result" 1758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_msys_to_cygwin 1760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_file_nix_to_cygwin ARG 1763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 1764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 1765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in func_to_host_file_result. 1766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_file_nix_to_cygwin () 1767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$1" 1770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 1772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_file_wine_to_w32 "$1" 1773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 1774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_file_result="$func_cygpath_result" 1775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_file_check "$1" "$func_to_host_file_result" 1777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_file_nix_to_cygwin 1779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org############################################# 1782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $build to $host PATH CONVERSION FUNCTIONS # 1783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org############################################# 1784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# invoked via `$to_host_path_cmd ARG' 1785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 1786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# In each case, ARG is the path to be converted from $build to $host format. 1787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The result will be available in $func_to_host_path_result. 1788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 1789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Path separators are also converted from $build format to $host format. If 1790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG begins or ends with a path separator character, it is preserved (but 1791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# converted to $host format) on output. 1792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 1793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# All path conversion functions are named using the following convention: 1794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# file name conversion function : func_convert_file_X_to_Y () 1795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# path conversion function : func_convert_path_X_to_Y () 1796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# where, for any given $build/$host combination the 'X_to_Y' value is the 1797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# same. If conversion functions are added for new $build/$host combinations, 1798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the two new functions must follow this pattern, or func_init_to_host_path_cmd 1799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# will break. 1800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_init_to_host_path_cmd 1803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Ensures that function "pointer" variable $to_host_path_cmd is set to the 1804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# appropriate value, based on the value of $to_host_file_cmd. 1805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgto_host_path_cmd= 1806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_init_to_host_path_cmd () 1807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$to_host_path_cmd"; then 1810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 1811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org to_host_path_cmd="func_convert_path_${func_stripname_result}" 1812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_path ARG 1817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Converts the path ARG from $build format to $host format. Return result 1818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in func_to_host_path_result. 1819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_to_host_path () 1820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_init_to_host_path_cmd 1823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $to_host_path_cmd "$1" 1824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_to_host_path 1826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_noop ARG 1829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Copy ARG to func_to_host_path_result. 1830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_noop () 1831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$1" 1833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_noop 1835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_msys_to_w32 ARG 1838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 1839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# conversion to w32 is not available inside the cwrapper. Returns result in 1840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_path_result. 1841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_msys_to_w32 () 1842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$1" 1845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove leading and trailing path separator characters from ARG. MSYS 1847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 1848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # and winepath ignores them completely. 1849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname : : "$1" 1850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_tmp1=$func_stripname_result 1851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$func_convert_core_msys_to_w32_result" 1853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_path_check : ";" \ 1854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "$func_to_host_path_tmp1" "$func_to_host_path_result" 1855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_msys_to_w32 1859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_cygwin_to_w32 ARG 1862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert path ARG from Cygwin to w32 format. Returns result in 1863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result. 1864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_cygwin_to_w32 () 1865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$1" 1868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # See func_convert_path_msys_to_w32: 1870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname : : "$1" 1871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_tmp1=$func_stripname_result 1872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 1873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_path_check : ";" \ 1874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "$func_to_host_path_tmp1" "$func_to_host_path_result" 1875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_cygwin_to_w32 1879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_nix_to_w32 ARG 1882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert path ARG from *nix to w32 format. Requires a wine environment and 1883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# a working winepath. Returns result in func_to_host_file_result. 1884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_nix_to_w32 () 1885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$1" 1888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # See func_convert_path_msys_to_w32: 1890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname : : "$1" 1891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_tmp1=$func_stripname_result 1892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 1894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_path_check : ";" \ 1895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "$func_to_host_path_tmp1" "$func_to_host_path_result" 1896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_nix_to_w32 1900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_msys_to_cygwin ARG 1903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Returns result in func_to_host_file_result. 1905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_msys_to_cygwin () 1906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$1" 1909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # See func_convert_path_msys_to_w32: 1911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname : : "$1" 1912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_tmp1=$func_stripname_result 1913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 1915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$func_cygpath_result" 1916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_path_check : : \ 1917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "$func_to_host_path_tmp1" "$func_to_host_path_result" 1918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_msys_to_cygwin 1922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_convert_path_nix_to_cygwin ARG 1925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 1926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 1927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_to_host_file_result. 1928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_convert_path_nix_to_cygwin () 1929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$1" 1932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 1933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove leading and trailing path separator characters from 1934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # ARG. msys behavior is inconsistent here, cygpath turns them 1935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # into '.;' and ';.', and winepath ignores them completely. 1936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname : : "$1" 1937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_tmp1=$func_stripname_result 1938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 1940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path_result="$func_cygpath_result" 1941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_path_check : : \ 1942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "$func_to_host_path_tmp1" "$func_to_host_path_result" 1943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 1945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 1946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end func_convert_path_nix_to_cygwin 1947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_compile arg... 1950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_compile () 1951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 1952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 1953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Get the compilation command and the source file. 1954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org base_compile= 1955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org suppress_opt=yes 1957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org suppress_output= 1958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg_mode=normal 1959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobj= 1960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org later= 1961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pie_flag= 1962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for arg 1964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 1965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg_mode in 1966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg ) 1967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # do not "continue". Instead, add this to base_compile 1968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lastarg="$arg" 1969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg_mode=normal 1970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org target ) 1973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobj="$arg" 1974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg_mode=normal 1975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 1976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org normal ) 1979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Accept any command-line options. 1980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg in 1981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -o) 1982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$libobj" && \ 1983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "you cannot specify \`-o' more than once" 1984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg_mode=target 1985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 1986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -pie | -fpie | -fPIE) 1989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append pie_flag " $arg" 1990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 1991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -shared | -static | -prefer-pic | -prefer-non-pic) 1994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append later " $arg" 1995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 1996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 1997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -no-suppress) 1999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org suppress_opt=no 2000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Xcompiler) 2004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg_mode=arg # the next one goes into the "base_compile" arg list 2005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue # The current "srcfile" will either be retained or 2006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; # replaced later. I would guess that would be a bug. 2007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Wc,*) 2009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '-Wc,' '' "$arg" 2010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org args=$func_stripname_result 2011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lastarg= 2012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_ifs="$IFS"; IFS=',' 2013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for arg in $args; do 2014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 2015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append_quoted lastarg "$arg" 2016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 2018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname ' ' '' "$lastarg" 2019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lastarg=$func_stripname_result 2020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add the arguments to base_compile. 2022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append base_compile " $lastarg" 2023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 2027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Accept the current argument as the source file. 2028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The previous "srcfile" becomes the current argument. 2029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # 2030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lastarg="$srcfile" 2031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org srcfile="$arg" 2032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac # case $arg 2034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac # case $arg_mode 2036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Aesthetically quote the previous argument. 2038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append_quoted base_compile "$lastarg" 2039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done # for arg 2040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg_mode in 2042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg) 2043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "you must specify an argument for -Xcompile" 2044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org target) 2046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "you must specify a target with \`-o'" 2047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 2049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Get the name of the library object. 2050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$libobj" && { 2051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$srcfile" 2052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobj="$func_basename_result" 2053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 2054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Recognize several different file suffixes. 2058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the user specifies -o file.o, it is replaced with file.lo 2059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $libobj in 2060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.[cCFSifmso] | \ 2061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.ada | *.adb | *.ads | *.asm | \ 2062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 2063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 2064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_xform "$libobj" 2065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobj=$func_xform_result 2066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $libobj in 2070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 2071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 2072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot determine name of library object from \`$libobj'" 2073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_infer_tag $base_compile 2077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for arg in $later; do 2079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg in 2080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -shared) 2081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$build_libtool_libs" != yes && \ 2082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_configuration "can not build a shared library" 2083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_old_libs=no 2084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -static) 2088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=no 2089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_old_libs=yes 2090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -prefer-pic) 2094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_mode=yes 2095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -prefer-non-pic) 2099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_mode=no 2100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$libobj" 2106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$libobj" != "X$func_quote_for_eval_result" \ 2107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 2108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org && func_warning "libobj name \`$libobj' may not contain shell special characters." 2109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname_and_basename "$obj" "/" "" 2110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org objname="$func_basename_result" 2111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org xdir="$func_dirname_result" 2112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lobj=${xdir}$objdir/$objname 2113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$base_compile" && \ 2115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "you must specify a compilation command" 2116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Delete any leftover library objects. 2118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_old_libs" = yes; then 2119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org removelist="$obj $lobj $libobj ${libobj}T" 2120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org removelist="$lobj $libobj ${libobj}T" 2122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # On Cygwin there's no "real" PIC flag so we must build both object types 2125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host_os in 2126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cygwin* | mingw* | pw32* | os2* | cegcc*) 2127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_mode=default 2128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 2131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # non-PIC code in shared libraries is not supported 2132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_mode=default 2133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Calculate the filename of the output object if compiler does 2136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # not support -o with -c 2137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$compiler_c_o" = no; then 2138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 2139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lockfile="$output_obj.lock" 2140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output_obj= 2142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org need_locks=no 2143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lockfile= 2144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Lock this critical section if it is needed 2147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We use this script file to make the link, it avoids creating a new file 2148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$need_locks" = yes; then 2149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 2150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_echo "Waiting for $lockfile to be removed" 2151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sleep 2 2152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$need_locks" = warn; then 2154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$lockfile"; then 2155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 2156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org*** ERROR, $lockfile exists and contains: 2157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org`cat $lockfile 2>/dev/null` 2158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis indicates that another process is trying to use the same 2160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtemporary object file, and libtool could not work around it because 2161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgyour compiler does not support \`-c' and \`-o' together. If you 2162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrepeat this compilation, it may succeed, by chance, but you had better 2163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgavoid parallel builds (make -j) in this platform, or get a better 2164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcompiler." 2165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM $removelist 2167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_FAILURE 2168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append removelist " $output_obj" 2170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$srcfile" > "$lockfile" 2171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM $removelist 2174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append removelist " $lockfile" 2175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 2176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 2178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org srcfile=$func_to_tool_file_result 2179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$srcfile" 2180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org qsrcfile=$func_quote_for_eval_result 2181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Only build a PIC object if we are building libtool libraries. 2183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = yes; then 2184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Without this assignment, base_compile gets emptied. 2185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fbsd_hideous_sh_bug=$base_compile 2186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pic_mode" != no; then 2188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org command="$base_compile $qsrcfile $pic_flag" 2189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Don't build PIC code 2191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org command="$base_compile $qsrcfile" 2192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_mkdir_p "$xdir$objdir" 2195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$output_obj"; then 2197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Place PIC objects in $objdir 2198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append command " -o $lobj" 2199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval_locale "$command" \ 2202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 2203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$need_locks" = warn && 2205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 2207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org*** ERROR, $lockfile contains: 2208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org`cat $lockfile 2>/dev/null` 2209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbut it should contain: 2211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$srcfile 2212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis indicates that another process is trying to use the same 2214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtemporary object file, and libtool could not work around it because 2215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgyour compiler does not support \`-c' and \`-o' together. If you 2216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrepeat this compilation, it may succeed, by chance, but you had better 2217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgavoid parallel builds (make -j) in this platform, or get a better 2218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcompiler." 2219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM $removelist 2221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_FAILURE 2222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Just move the object if needed, then go on to compile the next one 2225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 2226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '$MV "$output_obj" "$lobj"' \ 2227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Allow error messages only from the first compilation. 2231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$suppress_opt" = yes; then 2232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org suppress_output=' >/dev/null 2>&1' 2233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Only build a position-dependent object if we build old libraries. 2237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_old_libs" = yes; then 2238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pic_mode" != yes; then 2239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Don't build PIC code 2240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org command="$base_compile $qsrcfile$pie_flag" 2241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org command="$base_compile $qsrcfile $pic_flag" 2243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$compiler_c_o" = yes; then 2245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append command " -o $obj" 2246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Suppress compiler output if we already did a PIC compilation. 2249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append command "$suppress_output" 2250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval_locale "$command" \ 2251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 2252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$need_locks" = warn && 2254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 2256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org*** ERROR, $lockfile contains: 2257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org`cat $lockfile 2>/dev/null` 2258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbut it should contain: 2260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$srcfile 2261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis indicates that another process is trying to use the same 2263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtemporary object file, and libtool could not work around it because 2264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgyour compiler does not support \`-c' and \`-o' together. If you 2265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrepeat this compilation, it may succeed, by chance, but you had better 2266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgavoid parallel builds (make -j) in this platform, or get a better 2267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcompiler." 2268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM $removelist 2270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_FAILURE 2271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Just move the object if needed 2274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 2275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '$MV "$output_obj" "$obj"' \ 2276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 2281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 2282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Unlock the critical section if it was locked 2284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$need_locks" != no; then 2285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org removelist=$lockfile 2286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM "$lockfile" 2287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 2289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 2291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 2292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org$opt_help || { 2294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 2295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 2296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_help () 2298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 2299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We need to display help for each of the modes. 2300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $opt_mode in 2301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "") 2302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Generic help is extracted from the usage comments 2303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # at the start of this file. 2304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_help 2305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org clean) 2308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO \ 2309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 2310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgRemove files from the build directory. 2312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgRM is the name of the program to use to delete files associated with each FILE 2314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgto RM. 2316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf FILE is a libtool library, object or program, all the files associated 2318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 2319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile) 2322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO \ 2323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCompile a source file into a libtool library object. 2326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis mode accepts the following additional options: 2328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -o OUTPUT-FILE set the output file name to OUTPUT-FILE 2330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -no-suppress do not suppress compiler output for multiple passes 2331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -prefer-pic try to build PIC objects only 2332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -prefer-non-pic try to build non-PIC objects only 2333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -shared do not build a \`.o' file suitable for static linking 2334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -static only build a \`.o' file suitable for static linking 2335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Wc,FLAG pass FLAG directly to the compiler 2336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 2338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfrom the given SOURCEFILE. 2339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThe output file name is determined by removing the directory component from 2341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgSOURCEFILE, then substituting the C source code suffix \`.c' with the 2342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglibrary object suffix, \`.lo'." 2343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org execute) 2346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO \ 2347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 2348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgAutomatically set library path, then run a program. 2350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis mode accepts the following additional options: 2352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -dlopen FILE add the directory containing FILE to the library path 2354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThis mode sets the library path environment variable according to \`-dlopen' 2356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgflags. 2357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf any of the ARGS are libtool executable wrappers, then they are translated 2359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginto their corresponding uninstalled binary, and any of their required library 2360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdirectories are added to the library path. 2361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThen, COMMAND is executed, with ARGS as arguments." 2363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finish) 2366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO \ 2367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 2368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgComplete the installation of libtool libraries. 2370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEach LIBDIR is a directory that contains libtool libraries. 2372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThe commands that this mode executes may require superuser privileges. Use 2374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgthe \`--dry-run' option if you just want to see what would be executed." 2375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org install) 2378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO \ 2379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 2380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgInstall executables or libraries. 2382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgINSTALL-COMMAND is the installation command. The first component should be 2384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgeither the \`install' or \`cp' program. 2385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThe following components of INSTALL-COMMAND are treated specially: 2387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 2389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThe rest of the components are interpreted as arguments to that command (only 2391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgBSD-compatible install options are recognized)." 2392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link) 2395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO \ 2396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 2397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLink object files or libraries together to form another library, or to 2399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcreate an executable program. 2400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLINK-COMMAND is a command using the C compiler that you would use to create 2402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orga program from several object files. 2403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgThe following components of LINK-COMMAND are treated specially: 2405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -all-static do not do any dynamic linking at all 2407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -avoid-version do not add a version suffix if possible 2408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -bindir BINDIR specify path to binaries directory (for systems where 2409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libraries must be found in the PATH setting at runtime) 2410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 2411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 2412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 2413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -export-symbols SYMFILE 2414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org try to export only the symbols listed in SYMFILE 2415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -export-symbols-regex REGEX 2416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org try to export only the symbols matching REGEX 2417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -LLIBDIR search LIBDIR for required installed libraries 2418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -lNAME OUTPUT-FILE requires the installed library libNAME 2419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -module build a library that can dlopened 2420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -no-fast-install disable the fast-install mode 2421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -no-install link a not-installable executable 2422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -no-undefined declare that a library does not refer to external symbols 2423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 2424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -objectlist FILE Use a list of object files found in FILE to specify objects 2425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -precious-files-regex REGEX 2426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org don't remove output files matching REGEX 2427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -release RELEASE specify package release information 2428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -rpath LIBDIR the created library will eventually be installed in LIBDIR 2429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 2430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -shared only do dynamic linking of libtool libraries 2431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -shrext SUFFIX override the standard shared library file extension 2432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -static do not do any dynamic linking of uninstalled libtool libraries 2433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -static-libtool-libs 2434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do not do any dynamic linking of libtool libraries 2435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -version-info CURRENT[:REVISION[:AGE]] 2436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org specify library version info [each variable defaults to 0] 2437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -weak LIBNAME declare that the target provides the LIBNAME interface 2438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Wc,FLAG 2439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 2440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Wl,FLAG 2441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Xlinker FLAG pass linker-specific FLAG directly to the linker 2442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 2443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgAll other options (arguments beginning with \`-') are ignored. 2445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEvery other argument is treated as a filename. Files ending in \`.la' are 2447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtreated as uninstalled libtool libraries, other files are standard or library 2448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgobject files. 2449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 2451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 2452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrequired, except when creating a convenience library. 2453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 2455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgusing \`ar' and \`ranlib', or on Windows using \`lib'. 2456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 2458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgis created, otherwise an executable program is created." 2459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org uninstall) 2462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO \ 2463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 2464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgRemove libraries from an installation directory. 2466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgRM is the name of the program to use to delete files associated with each FILE 2468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgto RM. 2470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgIf FILE is a libtool library, all the files associated with it are deleted. 2472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgOtherwise, only FILE itself is deleted using RM." 2473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 2476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "invalid operation mode \`$opt_mode'" 2477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 2481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "Try \`$progname --help' for more information about other modes." 2482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 2483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Now that we've collected a possible --mode arg, show help if necessary 2485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgif $opt_help; then 2486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$opt_help" = :; then 2487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_mode_help 2488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 2490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_help noexit 2491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for opt_mode in compile link execute install finish uninstall clean; do 2492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_mode_help 2493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } | sed -n '1p; 2,$s/^Usage:/ or: /p' 2495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 2496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_help noexit 2497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for opt_mode in compile link execute install finish uninstall clean; do 2498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 2499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_mode_help 2500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } | 2502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sed '1d 2503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /^When reporting/,/^Report/{ 2504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org H 2505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org d 2506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 2507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $x 2508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /information about other modes/d 2509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /more detailed .*MODE/d 2510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 2511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $? 2513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfi 2514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_execute arg... 2517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_execute () 2518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 2519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 2520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The first argument is the command name. 2521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmd="$nonopt" 2522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$cmd" && \ 2523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "you must specify a COMMAND" 2524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Handle -dlopen flags immediately. 2526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for file in $opt_dlopen; do 2527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -f "$file" \ 2528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org || func_fatal_help "\`$file' is not a file" 2529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir= 2531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $file in 2532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) 2533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$file" 2534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file=$func_resolve_sysroot_result 2535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check to see that this really is a libtool archive. 2537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lalib_unsafe_p "$file" \ 2538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org || func_fatal_help "\`$lib' is not a valid libtool archive" 2539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Read the libtool library. 2541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlname= 2542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org library_names= 2543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$file" 2544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Skip this library if it cannot be dlopened. 2546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$dlname"; then 2547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Warn if it was a shared library. 2548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$library_names" && \ 2549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`$file' was not linked with \`-export-dynamic'" 2550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$file" "" "." 2554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir="$func_dirname_result" 2555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$dir/$objdir/$dlname"; then 2557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dir "/$objdir" 2558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test ! -f "$dir/$dlname"; then 2560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 2561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.lo) 2566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Just add the directory containing the .lo file. 2567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$file" "" "." 2568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir="$func_dirname_result" 2569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 2572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 2573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Get the absolute pathname. 2578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org absdir=`cd "$dir" && pwd` 2579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$absdir" && dir="$absdir" 2580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now add the directory to shlibpath_var. 2582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if eval "test -z \"\$$shlibpath_var\""; then 2583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$shlibpath_var=\"\$dir\"" 2584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This variable tells wrapper scripts just to set shlibpath_var 2590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # rather than running their programs. 2591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libtool_execute_magic="$magic" 2592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check if any of the arguments is a wrapper script. 2594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org args= 2595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for file 2596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 2597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $file in 2598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -* | *.la | *.lo ) ;; 2599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 2600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do a test to see if this is really a libtool program. 2601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_ltwrapper_script_p "$file"; then 2602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$file" 2603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Transform arg to wrapped name. 2604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file="$progdir/$program" 2605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif func_ltwrapper_executable_p "$file"; then 2606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_ltwrapper_scriptname "$file" 2607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$func_ltwrapper_scriptname_result" 2608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Transform arg to wrapped name. 2609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file="$progdir/$program" 2610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Quote arguments (to preserve shell metacharacters). 2614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append_quoted args "$file" 2615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$opt_dry_run" = Xfalse; then 2618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$shlibpath_var"; then 2619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Export the shlibpath_var. 2620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "export $shlibpath_var" 2621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Restore saved environment variables 2624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 2625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 2626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "if test \"\${save_$lt_var+set}\" = set; then 2627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $lt_var=\$save_$lt_var; export $lt_var 2628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $lt_unset $lt_var 2630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi" 2631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now prepare to actually exec the command. 2634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exec_cmd="\$cmd$args" 2635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Display what would be done. 2637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$shlibpath_var"; then 2638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 2639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "export $shlibpath_var" 2640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$cmd$args" 2642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 2643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 2645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 2647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_finish arg... 2650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_finish () 2651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 2652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 2653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libs= 2654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libdirs= 2655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org admincmds= 2656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for opt in "$nonopt" ${1+"$@"} 2658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 2659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -d "$opt"; then 2660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libdirs " $opt" 2661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -f "$opt"; then 2663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_lalib_unsafe_p "$opt"; then 2664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libs " $opt" 2665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`$opt' is not a valid libtool archive" 2667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "invalid argument \`$opt'" 2671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$libs"; then 2675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$lt_sysroot"; then 2676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 2677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 2678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sysroot_cmd= 2680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove sysroot references 2683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $opt_dry_run; then 2684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lib in $libs; do 2685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 2686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmpdir=`func_mktempdir` 2689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lib in $libs; do 2690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 2691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org > $tmpdir/tmp-la 2692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org mv -f $tmpdir/tmp-la $lib 2693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ${RM}r "$tmpdir" 2695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for libdir in $libdirs; do 2700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$finish_cmds"; then 2701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do each command in the finish commands. 2702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 2703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org'"$cmd"'"' 2704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$finish_eval"; then 2706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do the single finish_eval. 2707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval cmds=\"$finish_eval\" 2708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || eval "$cmds" || func_append admincmds " 2709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $cmds" 2710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Exit here if they wanted silent mode. 2715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_silent && exit $EXIT_SUCCESS 2716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "----------------------------------------------------------------------" 2719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "Libraries have been installed in:" 2720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for libdir in $libdirs; do 2721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO " $libdir" 2722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 2724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "If you ever happen to want to link against installed libraries" 2725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "in a given directory, LIBDIR, you must either use libtool, and" 2726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 2727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "flag during linking and do at least one of the following:" 2728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$shlibpath_var"; then 2729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo " during execution" 2731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$runpath_var"; then 2733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo " - add LIBDIR to the \`$runpath_var' environment variable" 2734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo " during linking" 2735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$hardcode_libdir_flag_spec"; then 2737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libdir=LIBDIR 2738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval flag=\"$hardcode_libdir_flag_spec\" 2739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO " - use the \`$flag' linker flag" 2741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$admincmds"; then 2743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO " - have your system administrator run these commands:$admincmds" 2744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f /etc/ld.so.conf; then 2746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 2749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "See any operating system documentation about shared libraries for" 2751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 2752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org solaris2.[6789]|solaris2.1[0-9]) 2753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 2754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "pages." 2755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 2757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "more information, such as the ld(1) and ld.so(8) manual pages." 2758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "----------------------------------------------------------------------" 2761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 2763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 2764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 2766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_install arg... 2769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_install () 2770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 2771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 2772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # There may be an optional sh(1) argument at the beginning of 2773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # install_prog (especially on Windows NT). 2774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 2775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Allow the use of GNU shtool's install command. 2776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $nonopt in *shtool*) :;; *) false;; esac; then 2777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Aesthetically quote it. 2778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$nonopt" 2779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org install_prog="$func_quote_for_eval_result " 2780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg=$1 2781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 2782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org install_prog= 2784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg=$nonopt 2785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The real first argument should be the name of the installation program. 2788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Aesthetically quote it. 2789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$arg" 2790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append install_prog "$func_quote_for_eval_result" 2791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org install_shared_prog=$install_prog 2792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $install_prog " in 2793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[\\\ /]cp\ *) install_cp=: ;; 2794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) install_cp=false ;; 2795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We need to accept at least all the BSD install flags. 2798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dest= 2799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org files= 2800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org opts= 2801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 2802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org install_type= 2803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org isdir=no 2804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org stripme= 2805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org no_mode=: 2806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for arg 2807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 2808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg2= 2809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dest"; then 2810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append files " $dest" 2811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dest=$arg 2812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg in 2816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -d) isdir=yes ;; 2817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -f) 2818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $install_cp; then :; else 2819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=$arg 2820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -g | -m | -o) 2823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=$arg 2824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -s) 2826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org stripme=" -s" 2827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -*) 2830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 2832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the previous option needed an argument, then skip it. 2833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$prev"; then 2834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "x$prev" = x-m && test -n "$install_override_mode"; then 2835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg2=$install_override_mode 2836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org no_mode=false 2837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 2839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dest=$arg 2841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 2842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Aesthetically quote the argument. 2847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$arg" 2848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append install_prog " $func_quote_for_eval_result" 2849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$arg2"; then 2850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$arg2" 2851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append install_shared_prog " $func_quote_for_eval_result" 2853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$install_prog" && \ 2856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "you must specify an install program" 2857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$prev" && \ 2859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "the \`$prev' option requires an argument" 2860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$install_override_mode" && $no_mode; then 2862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $install_cp; then :; else 2863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$install_override_mode" 2864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append install_shared_prog " -m $func_quote_for_eval_result" 2865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$files"; then 2869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$dest"; then 2870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "no file or destination specified" 2871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "you must specify a destination" 2873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Strip any trailing slash from the destination. 2877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '/' "$dest" 2878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dest=$func_stripname_result 2879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check to see that the destination is a directory. 2881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -d "$dest" && isdir=yes 2882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$isdir" = yes; then 2883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destdir="$dest" 2884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destname= 2885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname_and_basename "$dest" "" "." 2887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destdir="$func_dirname_result" 2888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destname="$func_basename_result" 2889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Not a directory, so check to see that there is only one file specified. 2891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $files; shift 2892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$#" -gt 1 && \ 2893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "\`$dest' is not a directory" 2894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $destdir in 2896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]*) ;; 2897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 2898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for file in $files; do 2899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $file in 2900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.lo) ;; 2901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 2902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "\`$destdir' must be an absolute directory name" 2903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 2906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This variable tells wrapper scripts just to set variables rather 2910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # than running their programs. 2911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libtool_install_magic="$magic" 2912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org staticlibs= 2914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org future_libdirs= 2915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org current_libdirs= 2916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for file in $files; do 2917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do each installation. 2919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $file in 2920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.$libext) 2921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do the static libraries later. 2922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append staticlibs " $file" 2923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 2924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) 2926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$file" 2927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file=$func_resolve_sysroot_result 2928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check to see that this really is a libtool archive. 2930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lalib_unsafe_p "$file" \ 2931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org || func_fatal_help "\`$file' is not a valid libtool archive" 2932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org library_names= 2934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org old_library= 2935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command= 2936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$file" 2937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add the libdir to current_libdirs if it is the destination. 2939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$destdir" = "X$libdir"; then 2940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$current_libdirs " in 2941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 2942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append current_libdirs " $libdir" ;; 2943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Note the libdir as a future libdir. 2946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$future_libdirs " in 2947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 2948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append future_libdirs " $libdir" ;; 2949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 2950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$file" "/" "" 2953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir="$func_dirname_result" 2954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dir "$objdir" 2955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$relink_command"; then 2957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Determine the prefix the user has applied to our future dir. 2958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 2959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Don't allow the user to place us outside of our expected 2961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # location b/c this prevents finding dependent libraries that 2962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # are installed to the same prefix. 2963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # At present, this check doesn't affect windows .dll's that 2964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # are installed into $libdir/../bin (currently, that works fine) 2965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # but it's something to keep an eye on. 2966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$inst_prefix_dir" = "$destdir" && \ 2967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$inst_prefix_dir"; then 2970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Stick the inst_prefix_dir data into the link command. 2971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 2973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "relinking \`$file'" 2977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$relink_command" \ 2978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 2980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # See the names of the shared library. 2982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $library_names; shift 2983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$1"; then 2984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org realname="$1" 2985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 2986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org srcname="$realname" 2988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$relink_command" && srcname="$realname"T 2989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 2990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Install the shared library and build the symlinks. 2991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 2992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 'exit $?' 2993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tstripme="$stripme" 2994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host_os in 2995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cygwin* | mingw* | pw32* | cegcc*) 2996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $realname in 2997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.dll.a) 2998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tstripme="" 2999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$tstripme" && test -n "$striplib"; then 3004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$striplib $destdir/$realname" 'exit $?' 3005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$#" -gt 0; then 3008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Delete the old symlinks, and create new ones. 3009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Try `ln -sf' first, because the `ln' binary might depend on 3010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the symlink we replace! Solaris /bin/ln does not understand -f, 3011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # so we also need to try rm && ln -s. 3012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for linkname 3013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 3014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$linkname" != "$realname" \ 3015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 3016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do each command in the postinstall commands. 3020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib="$destdir/$realname" 3021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$postinstall_cmds" 'exit $?' 3022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Install the pseudo-library for information purposes. 3025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$file" 3026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name="$func_basename_result" 3027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org instname="$dir/$name"i 3028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 3029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Maybe install the static library, too. 3031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$old_library" && func_append staticlibs " $dir/$old_library" 3032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.lo) 3035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Install (i.e. copy) a libtool object. 3036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Figure out destination file name, if it wasn't already specified. 3038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$destname"; then 3039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destfile="$destdir/$destname" 3040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$file" 3042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destfile="$func_basename_result" 3043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destfile="$destdir/$destfile" 3044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Deduce the name of the destination old-style object file. 3047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $destfile in 3048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.lo) 3049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lo2o "$destfile" 3050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org staticdest=$func_lo2o_result 3051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.$objext) 3053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org staticdest="$destfile" 3054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destfile= 3055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "cannot copy a libtool object to \`$destfile'" 3058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Install the libtool object if requested. 3062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$destfile" && \ 3063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$install_prog $file $destfile" 'exit $?' 3064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Install the old object if enabled. 3066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_old_libs" = yes; then 3067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Deduce the name of the old-style object file. 3068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lo2o "$file" 3069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org staticobj=$func_lo2o_result 3070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 3071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 3073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Figure out destination file name, if it wasn't already specified. 3077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$destname"; then 3078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destfile="$destdir/$destname" 3079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$file" 3081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destfile="$func_basename_result" 3082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destfile="$destdir/$destfile" 3083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the file is missing, and there is a .exe on the end, strip it 3086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # because it is most likely a libtool script we actually want to 3087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # install 3088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org stripped_ext="" 3089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $file in 3090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.exe) 3091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test ! -f "$file"; then 3092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '.exe' "$file" 3093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file=$func_stripname_result 3094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org stripped_ext=".exe" 3095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do a test to see if this is really a libtool program. 3100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 3101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | *mingw*) 3102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_ltwrapper_executable_p "$file"; then 3103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_ltwrapper_scriptname "$file" 3104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org wrapper=$func_ltwrapper_scriptname_result 3105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '.exe' "$file" 3107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org wrapper=$func_stripname_result 3108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org wrapper=$file 3112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_ltwrapper_script_p "$wrapper"; then 3115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org notinst_deplibs= 3116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command= 3117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$wrapper" 3119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check the variables that should have been set. 3121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$generated_by_libtool_version" && \ 3122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "invalid libtool wrapper script \`$wrapper'" 3123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize=yes 3125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lib in $notinst_deplibs; do 3126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check to see that each library is installed. 3127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libdir= 3128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$lib"; then 3129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$lib" 3130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 3132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$libdir" && test ! -f "$libfile"; then 3133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`$lib' has not been installed in \`$libdir'" 3134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize=no 3135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command= 3139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$wrapper" 3140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org outputname= 3142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$fast_install" = no && test -n "$relink_command"; then 3143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 3144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$finalize" = yes; then 3145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmpdir=`func_mktempdir` 3146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$file$stripped_ext" 3147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file="$func_basename_result" 3148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org outputname="$tmpdir/$file" 3149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Replace the output file specification. 3150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 3151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_silent || { 3153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_expand "$relink_command" 3154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "func_echo $func_quote_for_expand_result" 3155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if eval "$relink_command"; then : 3157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "error: relink \`$file' with the above command before installing it" 3159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || ${RM}r "$tmpdir" 3160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 3161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file="$outputname" 3163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "cannot relink \`$file'" 3165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Install the binary that we compiled earlier. 3169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 3170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # remove .exe since cygwin /usr/bin/install will append another 3174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # one anyway 3175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $install_prog,$host in 3176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org */usr/bin/install*,*cygwin*) 3177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $file:$destfile in 3178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.exe:*.exe) 3179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # this is ok 3180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.exe:*) 3182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destfile=$destfile.exe 3183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *:*.exe) 3185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '.exe' "$destfile" 3186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destfile=$func_stripname_result 3187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 3192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || if test -n "$outputname"; then 3193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ${RM}r "$tmpdir" 3194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for file in $staticlibs; do 3200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$file" 3201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name="$func_basename_result" 3202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Set up the ranlib parameters. 3204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldlib="$destdir/$name" 3205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 3206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tool_oldlib=$func_to_tool_file_result 3207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 3209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$stripme" && test -n "$old_striplib"; then 3211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 3212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do each command in the postinstall commands. 3215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$old_postinstall_cmds" 'exit $?' 3216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$future_libdirs" && \ 3219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "remember to run \`$progname --finish$future_libdirs'" 3220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$current_libdirs"; then 3222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Maybe just do a dry run. 3223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run && current_libdirs=" -n$current_libdirs" 3224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 3225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 3227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest "$opt_mode" = install && func_mode_install ${1+"$@"} 3231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_generate_dlsyms outputname originator pic_p 3234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Extract symbols from dlprefiles and create ${outputname}S.o with 3235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# a dlpreopen symbol table. 3236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_generate_dlsyms () 3237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 3239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_outputname="$1" 3240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_originator="$2" 3241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_pic_p="${3-no}" 3242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 3243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_dlsyms= 3244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$NM" && test -n "$global_symbol_pipe"; then 3247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_dlsyms="${my_outputname}S.c" 3248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "not configured to extract global symbols from dlpreopened files" 3250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$my_dlsyms"; then 3254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $my_dlsyms in 3255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "") ;; 3256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.c) 3257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Discover the nlist of each of the dlfiles. 3258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nlist="$output_objdir/${my_outputname}.nm" 3259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 3261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Parse the name list into a source file. 3263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "creating $output_objdir/$my_dlsyms" 3264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 3266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 3267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 3268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef __cplusplus 3270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgextern \"C\" { 3271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 3272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 3274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 3275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 3276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 3278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 3279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* DATA imports from DLLs on WIN32 con't be const, because runtime 3280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relocations are performed -- see ld's documentation on pseudo-relocs. */ 3281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_DLSYM_CONST 3282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#elif defined(__osf__) 3283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* This system does not cope well with relocations in const data. */ 3284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_DLSYM_CONST 3285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else 3286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_DLSYM_CONST const 3287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 3288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* External symbol declarations for the compiler. */\ 3290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org" 3291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$dlself" = yes; then 3293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "generating symbol list for \`$output'" 3294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 3296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add our own program objects to the symbol list. 3298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 3299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for progfile in $progfiles; do 3300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$progfile" func_convert_file_msys_to_w32 3301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 3302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 3303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$exclude_expsyms"; then 3306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 3307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 3308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval '$MV "$nlist"T "$nlist"' 3309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols_regex"; then 3313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 3314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 3315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval '$MV "$nlist"T "$nlist"' 3316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Prepare the list of exported symbols 3320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$export_symbols"; then 3321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols="$output_objdir/$outputname.exp" 3322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 3323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM $export_symbols 3324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 3325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 3326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | *mingw* | *cegcc* ) 3327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 3329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 3334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 3335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 3336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval '$MV "$nlist"T "$nlist"' 3337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 3338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | *mingw* | *cegcc* ) 3339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 3341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for dlprefile in $dlprefiles; do 3348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "extracting global C symbols from \`$dlprefile'" 3349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$dlprefile" 3350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name="$func_basename_result" 3351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 3352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | *mingw* | *cegcc* ) 3353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # if an import library, we need to obtain dlname 3354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_win32_import_lib_p "$dlprefile"; then 3355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_tr_sh "$dlprefile" 3356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "curr_lafile=\$libfile_$func_tr_sh_result" 3357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlprefile_dlbasename="" 3358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 3359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Use subshell, to avoid clobbering current variable values 3360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 3361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dlprefile_dlname" ; then 3362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$dlprefile_dlname" 3363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlprefile_dlbasename="$func_basename_result" 3364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # no lafile. user explicitly requested -dlpreopen <import library>. 3366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $sharedlib_from_linklib_cmd "$dlprefile" 3367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlprefile_dlbasename=$sharedlib_from_linklib_result 3368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 3371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dlprefile_dlbasename" ; then 3372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 3373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "Could not compute DLL name from $name" 3375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval '$ECHO ": $name " >> "$nlist"' 3376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 3379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 3380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else # not an import lib 3382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 3383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval '$ECHO ": $name " >> "$nlist"' 3384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 3391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval '$ECHO ": $name " >> "$nlist"' 3392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 3400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make sure we have at least an empty file. 3401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -f "$nlist" || : > "$nlist" 3402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$exclude_expsyms"; then 3404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 3405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $MV "$nlist"T "$nlist" 3406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Try sorting and uniquifying the output. 3409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $GREP -v "^: " < "$nlist" | 3410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if sort -k 3 </dev/null >/dev/null 2>&1; then 3411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sort -k 3 3412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sort +2 3414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi | 3415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org uniq > "$nlist"S; then 3416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org : 3417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $GREP -v "^: " < "$nlist" > "$nlist"S 3419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$nlist"S; then 3422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 3423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 3425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo >> "$output_objdir/$my_dlsyms" "\ 3428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* The mapping between symbol names and symbols. */ 3430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtypedef struct { 3431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org const char *name; 3432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org void *address; 3433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} lt_dlsymlist; 3434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgextern LT_DLSYM_CONST lt_dlsymlist 3435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_${my_prefix}_LTX_preloaded_symbols[]; 3436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgLT_DLSYM_CONST lt_dlsymlist 3437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_${my_prefix}_LTX_preloaded_symbols[] = 3438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{\ 3439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { \"$my_originator\", (void *) 0 }," 3440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $need_lib_prefix in 3442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org no) 3443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 3444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 3447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo >> "$output_objdir/$my_dlsyms" "\ 3450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org {0, (void *) 0} 3451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org}; 3452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* This works around a problem in FreeBSD linker */ 3454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef FREEBSD_WORKAROUND 3455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const void *lt_preloaded_setup() { 3456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return lt_${my_prefix}_LTX_preloaded_symbols; 3457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 3459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef __cplusplus 3461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif\ 3463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org" 3464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } # !$opt_dry_run 3465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_flag_for_symtable= 3467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$compile_command " in 3468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" -static "*) ;; 3469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 3471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # compiling the symbol table file with pic_flag works around 3472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # a FreeBSD bug that causes programs to crash when -lm is 3473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # linked before any other PIC object. But we must not use 3474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # pic_flag when linking with -static. The problem exists in 3475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 3476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 3477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 3478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-hpux*) 3479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_flag_for_symtable=" $pic_flag" ;; 3480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$my_pic_p" != Xno; then 3482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_flag_for_symtable=" $pic_flag" 3483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org symtab_cflags= 3489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for arg in $LTCFLAGS; do 3490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg in 3491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -pie | -fpie | -fPIE) ;; 3492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append symtab_cflags " $arg" ;; 3493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now compile the dynamic symbol file. 3497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 3498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Clean up the generated files. 3500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 3501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Transform the symbol file into the correct name. 3503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org symfileobj="$output_objdir/${my_outputname}S.$objext" 3504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 3505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | *mingw* | *cegcc* ) 3506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$output_objdir/$my_outputname.def"; then 3507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "unknown suffix for \`$my_dlsyms'" 3522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We keep going just in case the user didn't refer to 3526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 3527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # really was required. 3528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Nullify the symbol file. 3530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 3531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 3532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_win32_libid arg 3536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# return the library type of file 'arg' 3537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Need a lot of goo to handle *both* DLLs and import libs 3539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Has to be a shell function in order to 'eat' the argument 3540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# that is supplied when $file_magic_command is called. 3541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Despite the name, also deal with 64 bit binaries. 3542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_win32_libid () 3543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 3545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org win32_libid_type="unknown" 3546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org win32_fileres=`file -L $1 2>/dev/null` 3547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $win32_fileres in 3548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *ar\ archive\ import\ library*) # definitely import 3549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org win32_libid_type="x86 archive import" 3550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *ar\ archive*) # could be an import, or static 3552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 3553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 3554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 3555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$1" func_convert_file_msys_to_w32 3556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 3557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -n -e ' 3558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 1,100{ 3559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org / I /{ 3560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s,.*,import, 3561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org p 3562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org q 3563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org }'` 3565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $win32_nmres in 3566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org import*) win32_libid_type="x86 archive import";; 3567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) win32_libid_type="x86 archive static";; 3568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *DLL*) 3572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org win32_libid_type="x86 DLL" 3573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *executable*) # but shell scripts are "executable" too... 3575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $win32_fileres in 3576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *MS\ Windows\ PE\ Intel*) 3577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org win32_libid_type="x86 DLL" 3578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$win32_libid_type" 3583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygming_dll_for_implib ARG 3586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Platform-specific function to extract the 3588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# name of the DLL associated with the specified 3589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# import library ARG. 3590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Invoked by eval'ing the libtool variable 3591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $sharedlib_from_linklib_cmd 3592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result is available in the variable 3593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $sharedlib_from_linklib_result 3594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygming_dll_for_implib () 3595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 3597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 3598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 3601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The is the core of a fallback implementation of a 3603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# platform-specific function to extract the name of the 3604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# DLL associated with the specified import library LIBNAME. 3605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# SECTION_NAME is either .idata$6 or .idata$7, depending 3607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# on the platform and compiler that created the implib. 3608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Echos the name of the DLL associated with the 3610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# specified import library. 3611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygming_dll_for_implib_fallback_core () 3612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 3614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 3615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 3616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED '/^Contents of section '"$match_literal"':/{ 3617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Place marker at beginning of archive member dllname section 3618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/.*/====MARK====/ 3619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org p 3620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org d 3621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 3622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # These lines can sometimes be longer than 43 characters, but 3623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # are always uninteresting 3624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /:[ ]*file format pe[i]\{,1\}-/d 3625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /^In archive [^:]*:/d 3626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Ensure marker is printed 3627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /^====MARK====/p 3628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove all lines with less than 43 characters 3629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /^.\{43\}/!d 3630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # From remaining lines, remove first 43 characters 3631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/^.\{43\}//' | 3632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -n ' 3633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Join marker and all lines until next marker into a single line 3634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /^====MARK====/ b para 3635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org H 3636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ b para 3637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org b 3638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org :para 3639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org x 3640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/\n//g 3641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove the marker 3642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/^====MARK====// 3643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove trailing dots and whitespace 3644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org s/[\. \t]*$// 3645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Print 3646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /./p' | 3647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # we now have a list, one entry per line, of the stringified 3648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # contents of the appropriate section of all members of the 3649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # archive which possess that section. Heuristic: eliminate 3650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # all those which have a first or second character that is 3651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # a '.' (that is, objdump's representation of an unprintable 3652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # character.) This should work for all archives with less than 3653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # 0x302f exports -- but will fail for DLLs whose name actually 3654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # begins with a literal '.' or a single character followed by 3655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # a '.'. 3656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # 3657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Of those that remain, print the first one. 3658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -e '/^\./d;/^.\./d;q' 3659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygming_gnu_implib_p ARG 3662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This predicate returns with zero status (TRUE) if 3663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG is a GNU/binutils-style import library. Returns 3664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# with nonzero status (FALSE) otherwise. 3665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygming_gnu_implib_p () 3666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 3668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$1" func_convert_file_msys_to_w32 3669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 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)$'` 3670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$func_cygming_gnu_implib_tmp" 3671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygming_ms_implib_p ARG 3674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This predicate returns with zero status (TRUE) if 3675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG is an MS-style import library. Returns 3676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# with nonzero status (FALSE) otherwise. 3677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygming_ms_implib_p () 3678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 3680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$1" func_convert_file_msys_to_w32 3681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 3682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$func_cygming_ms_implib_tmp" 3683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_cygming_dll_for_implib_fallback ARG 3686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Platform-specific function to extract the 3687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# name of the DLL associated with the specified 3688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# import library ARG. 3689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This fallback implementation is for use when $DLLTOOL 3691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# does not support the --identify-strict option. 3692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Invoked by eval'ing the libtool variable 3693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $sharedlib_from_linklib_cmd 3694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Result is available in the variable 3695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $sharedlib_from_linklib_result 3696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_cygming_dll_for_implib_fallback () 3697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 3699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_cygming_gnu_implib_p "$1" ; then 3700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # binutils import library 3701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 3702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif func_cygming_ms_implib_p "$1" ; then 3703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # ms-generated import library 3704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 3705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # unknown 3707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sharedlib_from_linklib_result="" 3708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_extract_an_archive dir oldlib 3713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_extract_an_archive () 3714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 3716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org f_ex_an_ar_dir="$1"; shift 3717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org f_ex_an_ar_oldlib="$1" 3718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$lock_old_archive_extraction" = yes; then 3719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lockfile=$f_ex_an_ar_oldlib.lock 3720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 3721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_echo "Waiting for $lockfile to be removed" 3722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sleep 2 3723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 3726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 'stat=$?; rm -f "$lockfile"; exit $stat' 3727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$lock_old_archive_extraction" = yes; then 3728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || rm -f "$lockfile" 3729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 3731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org : 3732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 3734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_extract_archives gentop oldlib ... 3739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_extract_archives () 3740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 3742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_gentop="$1"; shift 3743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_oldlibs=${1+"$@"} 3744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_oldobjs="" 3745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_xlib="" 3746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_xabs="" 3747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_xdir="" 3748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for my_xlib in $my_oldlibs; do 3750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Extract the objects. 3751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $my_xlib in 3752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) my_xabs=`pwd`"/$my_xlib" ;; 3754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$my_xlib" 3756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_xlib="$func_basename_result" 3757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_xlib_u=$my_xlib 3758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while :; do 3759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $extracted_archives " in 3760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $my_xlib_u "*) 3761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $extracted_serial + 1 3762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org extracted_serial=$func_arith_result 3763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_xlib_u=lt$extracted_serial-$my_xlib ;; 3764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) break ;; 3765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org extracted_archives="$extracted_archives $my_xlib_u" 3768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_xdir="$my_gentop/$my_xlib_u" 3769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_mkdir_p "$my_xdir" 3771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 3773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-darwin*) 3774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "Extracting $my_xabs" 3775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do not bother doing anything if just a dry run 3776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 3777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_orig_dir=`pwd` 3778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cd $my_xdir || exit $? 3779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_archive=$my_xabs 3780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_curdir=`pwd` 3781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_base_archive=`basename "$darwin_archive"` 3782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 3783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$darwin_arches"; then 3784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 3785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_arch= 3786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 3787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for darwin_arch in $darwin_arches ; do 3788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cd "$darwin_curdir" 3793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done # $darwin_arches 3795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ## Okay now we've a bunch of thin objects, gotta fatten them up :) 3796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 3797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_file= 3798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_files= 3799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for darwin_file in $darwin_filelist; do 3800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 3801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $LIPO -create -output "$darwin_file" $darwin_files 3802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done # $darwin_filelist 3803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM -rf unfat-$$ 3804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cd "$darwin_orig_dir" 3805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 3806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cd $darwin_orig_dir 3807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_extract_an_archive "$my_xdir" "$my_xabs" 3808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # $darwin_arches 3809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } # !$opt_dry_run 3810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_extract_an_archive "$my_xdir" "$my_xabs" 3813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 3816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_extract_archives_result="$my_oldobjs" 3819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_emit_wrapper [arg=no] 3823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Emit a libtool wrapper script on stdout. 3825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Don't directly open a file because we may want to 3826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# incorporate the script contents within a cygwin/mingw 3827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# wrapper executable. Must ONLY be called from within 3828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_link because it depends on a number of variables 3829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# set therein. 3830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 3832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# variable will take. If 'yes', then the emitted script 3833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# will assume that the directory in which it is stored is 3834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the $objdir directory. This is a cygwin/mingw-specific 3835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# behavior. 3836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_emit_wrapper () 3837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_emit_wrapper_arg1=${1-no} 3839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 3841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#! $SHELL 3842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $output - temporary wrapper script for $objdir/$outputname 3844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The $output program cannot be directly executed until all the libtool 3847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# libraries that it depends on are installed. 3848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This wrapper script should never be moved out of the build directory. 3850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If it is, it will not operate correctly. 3851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Sed substitution that helps us do robust quoting. It backslashifies 3853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# metacharacters that are still active within double-quoted strings. 3854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgsed_quote_subst='$sed_quote_subst' 3855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Be Bourne compatible 3857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 3858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org emulate sh 3859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org NULLCMD=: 3860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 3861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # is contrary to our usage. Disable this feature. 3862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org alias -g '\${1+\"\$@\"}'='\"\$@\"' 3863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org setopt NO_GLOB_SUBST 3864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgelse 3865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 3866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfi 3867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgBIN_SH=xpg4; export BIN_SH # for Tru64 3868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgDUALCASE=1; export DUALCASE # for MKS sh 3869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The HP-UX ksh and POSIX shell print the target directory to stdout 3871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# if CDPATH is set. 3872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrelink_command=\"$relink_command\" 3875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# This environment variable determines our operation mode. 3877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgif test \"\$libtool_install_magic\" = \"$magic\"; then 3878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # install mode needs the following variables: 3879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org generated_by_libtool_version='$macro_version' 3880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org notinst_deplibs='$notinst_deplibs' 3881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgelse 3882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # When we are sourced in execute mode, \$file and \$ECHO are already set. 3883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test \"\$libtool_execute_magic\" != \"$magic\"; then 3884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file=\"\$0\"" 3885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 3887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 3888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# A function that is used when there is no print builtin or printf. 3890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_fallback_echo () 3891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval 'cat <<_LTECHO_EOF 3893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org\$1 3894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org_LTECHO_EOF' 3895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ECHO=\"$qECHO\" 3897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Very basic option parsing. These options are (a) specific to 3900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the libtool wrapper, (b) are identical between the wrapper 3901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# /script/ and the wrapper /executable/ which is used only on 3902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# windows platforms, and (c) all begin with the string "--lt-" 3903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# (application programs are unlikely to have options which match 3904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# this pattern). 3905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# There are only two supported options: --lt-debug and 3907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# --lt-dump-script. There is, deliberately, no --lt-help. 3908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 3909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The first argument to this parsing function should be the 3910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# script's $0 value, followed by "$@". 3911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_option_debug= 3912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_parse_lt_options () 3913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_script_arg0=\$0 3915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 3916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lt_opt 3917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 3918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case \"\$lt_opt\" in 3919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --lt-debug) lt_option_debug=1 ;; 3920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --lt-dump-script) 3921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 3922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 3923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 3924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat \"\$lt_dump_D/\$lt_dump_F\" 3925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit 0 3926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --lt-*) 3928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 3929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit 1 3930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Print the debug banner immediately: 3935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n \"\$lt_option_debug\"; then 3936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 3937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Used when --lt-debug. Prints its arguments to stdout 3941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# (redirection is the responsibility of the caller) 3942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_lt_dump_args () 3943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_dump_args_N=1; 3945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lt_arg 3946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 3947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 3948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 3949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 3950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Core function for launching the target application 3953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_exec_program_core () 3954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org" 3956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 3957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Backslashes separate directories on plain windows 3958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-mingw | *-*-os2* | *-cegcc*) 3959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 3960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n \"\$lt_option_debug\"; then 3961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 3962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lt_dump_args \${1+\"\$@\"} 1>&2 3963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 3965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org" 3966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 3969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 3970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n \"\$lt_option_debug\"; then 3971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 3972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lt_dump_args \${1+\"\$@\"} 1>&2 3973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 3974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exec \"\$progdir/\$program\" \${1+\"\$@\"} 3975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org" 3976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 3977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 3979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 3980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit 1 3981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 3982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 3983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# A function to encapsulate launching the target application 3984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Strips options in the --lt-* namespace from \$@ and 3985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# launches target application with the remaining arguments. 3986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_exec_program () 3987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 3988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case \" \$* \" in 3989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *\\ --lt-*) 3990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lt_wr_arg 3991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 3992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case \$lt_wr_arg in 3993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org --lt-*) ;; 3994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 3995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 3997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done ;; 3998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 3999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_exec_program_core \${1+\"\$@\"} 4000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Parse options 4003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_parse_lt_options \"\$0\" \${1+\"\$@\"} 4004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Find the directory that this script lives in. 4006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 4007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test \"x\$thisdir\" = \"x\$file\" && thisdir=. 4008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Follow symbolic links until we get to the real thisdir. 4010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 4011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while test -n \"\$file\"; do 4012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 4013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If there was a directory component, then change thisdir. 4015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test \"x\$destdir\" != \"x\$file\"; then 4016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case \"\$destdir\" in 4017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 4018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) thisdir=\"\$thisdir/\$destdir\" ;; 4019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 4020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 4023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 4024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 4025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Usually 'no', except on cygwin/mingw when embedded into 4027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the cwrapper. 4028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 4029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 4030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # special case for '.' 4031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test \"\$thisdir\" = \".\"; then 4032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org thisdir=\`pwd\` 4033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # remove .libs from thisdir 4035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case \"\$thisdir\" in 4036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 4037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $objdir ) thisdir=. ;; 4038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 4039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Try to get the absolute directory name. 4042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org absdir=\`cd \"\$thisdir\" && pwd\` 4043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n \"\$absdir\" && thisdir=\"\$absdir\" 4044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org" 4045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$fast_install" = yes; then 4047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 4048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org program=lt-'$outputname'$exeext 4049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org progdir=\"\$thisdir/$objdir\" 4050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test ! -f \"\$progdir/\$program\" || 4052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 4053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test \"X\$file\" != \"X\$progdir/\$program\"; }; then 4054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file=\"\$\$-\$program\" 4056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test ! -d \"\$progdir\"; then 4058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $MKDIR \"\$progdir\" 4059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM \"\$progdir/\$file\" 4061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi" 4062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 4064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # relink executable if necessary 4066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n \"\$relink_command\"; then 4067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if relink_command_output=\`eval \$relink_command 2>&1\`; then : 4068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO \"\$relink_command_output\" >&2 4070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM \"\$progdir/\$file\" 4071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit 1 4072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 4076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { $RM \"\$progdir/\$program\"; 4077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 4078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM \"\$progdir/\$file\" 4079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi" 4080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 4082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org program='$outputname' 4083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org progdir=\"\$thisdir/$objdir\" 4084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org" 4085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 4088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f \"\$progdir/\$program\"; then" 4090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # fixup the dll searchpath if we need to. 4092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # 4093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Fix the DLL searchpath if we need to. Do this before prepending 4094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # to shlibpath, because on Windows, both are PATH and uninstalled 4095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # libraries must come first. 4096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dllsearchpath"; then 4097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 4098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add the dll search path components to the executable PATH 4099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org PATH=$dllsearchpath:\$PATH 4100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org" 4101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Export our shlibpath_var if we have one. 4104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 4106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add our own library path to $shlibpath_var 4107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 4108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Some systems cannot cope with colon-terminated $shlibpath_var 4110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The second colon is a workaround for a bug in BeOS R4 sed 4111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 4112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export $shlibpath_var 4114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org" 4115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "\ 4118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test \"\$libtool_execute_magic\" != \"$magic\"; then 4119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Run the actual program with our arguments. 4120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_exec_program \${1+\"\$@\"} 4121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The program doesn't exist. 4124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 4125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 4126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 4127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit 1 4128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfi\ 4130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org" 4131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_emit_cwrapperexe_src 4135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# emit the source code for a wrapper executable on stdout 4136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Must ONLY be called from within func_mode_link because 4137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# it depends on a number of variable set therein. 4138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_emit_cwrapperexe_src () 4139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<EOF 4141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 4144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org The $output program cannot be directly executed until all the libtool 4146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libraries that it depends on are installed. 4147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org This wrapper executable should never be moved out of the build directory. 4149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org If it is, it will not operate correctly. 4150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org*/ 4151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef _MSC_VER 4154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define _CRT_SECURE_NO_DEPRECATE 1 4155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <stdio.h> 4157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <stdlib.h> 4158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef _MSC_VER 4159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <direct.h> 4160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <process.h> 4161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <io.h> 4162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else 4163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <unistd.h> 4164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <stdint.h> 4165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifdef __CYGWIN__ 4166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# include <io.h> 4167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif 4168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <malloc.h> 4170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <stdarg.h> 4171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <assert.h> 4172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <string.h> 4173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <ctype.h> 4174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <errno.h> 4175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <fcntl.h> 4176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#include <sys/stat.h> 4177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* declarations of non-ANSI functions */ 4179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(__MINGW32__) 4180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifdef __STRICT_ANSI__ 4181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint _putenv (const char *); 4182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif 4183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#elif defined(__CYGWIN__) 4184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifdef __STRICT_ANSI__ 4185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *realpath (const char *, char *); 4186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint putenv (char *); 4187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint setenv (const char *, const char *, int); 4188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif 4189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* #elif defined (other platforms) ... */ 4190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* portability defines, excluding path handling macros */ 4193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(_MSC_VER) 4194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define setmode _setmode 4195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define stat _stat 4196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define chmod _chmod 4197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define getcwd _getcwd 4198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define putenv _putenv 4199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define S_IXUSR _S_IEXEC 4200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifndef _INTPTR_T_DEFINED 4201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define _INTPTR_T_DEFINED 4202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define intptr_t int 4203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif 4204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#elif defined(__MINGW32__) 4205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define setmode _setmode 4206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define stat _stat 4207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define chmod _chmod 4208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define getcwd _getcwd 4209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define putenv _putenv 4210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#elif defined(__CYGWIN__) 4211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define HAVE_SETENV 4212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define FOPEN_WB "wb" 4213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* #elif defined (other platforms) ... */ 4214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(PATH_MAX) 4217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_PATHMAX PATH_MAX 4218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#elif defined(MAXPATHLEN) 4219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_PATHMAX MAXPATHLEN 4220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else 4221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define LT_PATHMAX 1024 4222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef S_IXOTH 4225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define S_IXOTH 0 4226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef S_IXGRP 4228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define S_IXGRP 0 4229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* path handling portability macros */ 4232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef DIR_SEPARATOR 4233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define DIR_SEPARATOR '/' 4234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define PATH_SEPARATOR ':' 4235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org defined (__OS2__) 4239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define HAVE_DOS_BASED_FILE_SYSTEM 4240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define FOPEN_WB "wb" 4241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifndef DIR_SEPARATOR_2 4242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define DIR_SEPARATOR_2 '\\' 4243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif 4244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ifndef PATH_SEPARATOR_2 4245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define PATH_SEPARATOR_2 ';' 4246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# endif 4247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef DIR_SEPARATOR_2 4250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else /* DIR_SEPARATOR_2 */ 4252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define IS_DIR_SEPARATOR(ch) \ 4253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif /* DIR_SEPARATOR_2 */ 4255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef PATH_SEPARATOR_2 4257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else /* PATH_SEPARATOR_2 */ 4259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif /* PATH_SEPARATOR_2 */ 4261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef FOPEN_WB 4263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define FOPEN_WB "w" 4264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef _O_BINARY 4266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# define _O_BINARY 0 4267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 4270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#define XFREE(stale) do { \ 4271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (stale) { free ((void *) stale); stale = 0; } \ 4272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} while (0) 4273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined(LT_DEBUGWRAPPER) 4275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic int lt_debug = 1; 4276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else 4277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic int lt_debug = 0; 4278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 4281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid *xmalloc (size_t num); 4283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *xstrdup (const char *string); 4284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char *base_name (const char *name); 4285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *find_executable (const char *wrapper); 4286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *chase_symlinks (const char *pathspec); 4287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint make_executable (const char *path); 4288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint check_executable (const char *path); 4289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *strendzap (char *str, const char *pat); 4290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 4291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_fatal (const char *file, int line, const char *message, ...); 4292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *nonnull (const char *s); 4293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *nonempty (const char *s); 4294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_setenv (const char *name, const char *value); 4295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 4296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_update_exe_path (const char *name, const char *value); 4297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_update_lib_path (const char *name, const char *value); 4298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar **prepare_spawn (char **argv); 4299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_dump_script (FILE *f); 4300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<EOF 4303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvolatile const char * MAGIC_EXE = "$magic_exe"; 4304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 4305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path "$temp_rpath" 4309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<EOF 4310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 4311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * LIB_PATH_VALUE = ""; 4315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dllsearchpath"; then 4319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_host_path "$dllsearchpath:" 4320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<EOF 4321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * EXE_PATH_VARNAME = "PATH"; 4322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 4323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * EXE_PATH_VARNAME = ""; 4327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * EXE_PATH_VALUE = ""; 4328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$fast_install" = yes; then 4332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<EOF 4333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 4334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<EOF 4337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 4338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 4340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#define LTWRAPPER_OPTION_PREFIX "--lt-" 4345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 4347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 4348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 4349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint 4351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgmain (int argc, char *argv[]) 4352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char **newargz; 4354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int newargc; 4355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *tmp_pathspec; 4356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *actual_cwrapper_path; 4357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *actual_cwrapper_name; 4358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *target_name; 4359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *lt_argv_zero; 4360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org intptr_t rval = 127; 4361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int i; 4363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org program_name = (char *) xstrdup (base_name (argv[0])); 4365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newargz = XMALLOC (char *, argc + 1); 4366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* very simple arg parsing; don't want to rely on getopt 4368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org * also, copy all non cwrapper options to newargz, except 4369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org * argz[0], which is handled differently 4370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org */ 4371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newargc=0; 4372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (i = 1; i < argc; i++) 4373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (strcmp (argv[i], dumpscript_opt) == 0) 4375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$host" in 4378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *mingw* | *cygwin* ) 4379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # make stdout use "unix" line endings 4380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo " setmode(1,_O_BINARY);" 4381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 4382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 4383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_dump_script (stdout); 4386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return 0; 4387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (strcmp (argv[i], debug_opt) == 0) 4389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debug = 1; 4391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue; 4392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 4394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 4396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org namespace, but it is not one of the ones we know about and 4397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org have already dealt with, above (inluding dump-script), then 4398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org report an error. Otherwise, targets might begin to believe 4399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 4400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org namespace. The first time any user complains about this, we'll 4401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org need to make LTWRAPPER_OPTION_PREFIX a configure-time option 4402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org or a configure.ac-settable value. 4403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org */ 4404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_fatal (__FILE__, __LINE__, 4405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "unrecognized %s option: '%s'", 4406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ltwrapper_option_prefix, argv[i]); 4407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* otherwise ... */ 4409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newargz[++newargc] = xstrdup (argv[i]); 4410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newargz[++newargc] = NULL; 4412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<EOF 4415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* The GNU banner must be the first non-error debug message */ 4416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 4417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 4420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 4421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec = find_executable (argv[0]); 4423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (tmp_pathspec == NULL) 4424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 4425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, 4426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "(main) found exe (before symlink chase) at: %s\n", 4427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec); 4428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org actual_cwrapper_path = chase_symlinks (tmp_pathspec); 4430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, 4431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "(main) found exe (after symlink chase) at: %s\n", 4432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org actual_cwrapper_path); 4433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (tmp_pathspec); 4434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 4436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strendzap (actual_cwrapper_path, actual_cwrapper_name); 4437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* wrapper name transforms */ 4439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strendzap (actual_cwrapper_name, ".exe"); 4440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 4441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (actual_cwrapper_name); 4442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org actual_cwrapper_name = tmp_pathspec; 4443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec = 0; 4444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* target_name transforms -- use actual target program name; might have lt- prefix */ 4446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 4447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strendzap (target_name, ".exe"); 4448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 4449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (target_name); 4450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org target_name = tmp_pathspec; 4451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec = 0; 4452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, 4454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "(main) libtool target name: %s\n", 4455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org target_name); 4456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<EOF 4459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newargz[0] = 4460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XMALLOC (char, (strlen (actual_cwrapper_path) + 4461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 4462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcpy (newargz[0], actual_cwrapper_path); 4463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcat (newargz[0], "$objdir"); 4464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcat (newargz[0], "/"); 4465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* stop here, and copy so we don't have to do this twice */ 4469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec = xstrdup (newargz[0]); 4470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 4472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcat (newargz[0], actual_cwrapper_name); 4473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* DO want the lt- prefix here if it exists, so use target_name */ 4475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 4476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (tmp_pathspec); 4477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec = NULL; 4478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host_os in 4481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org mingw*) 4482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char* p; 4485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while ((p = strchr (newargz[0], '\\')) != NULL) 4486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *p = '/'; 4488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while ((p = strchr (lt_argv_zero, '\\')) != NULL) 4490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *p = '/'; 4492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 4496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 4497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (target_name); 4500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (actual_cwrapper_path); 4501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (actual_cwrapper_name); 4502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 4504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 4505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 4506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 4507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org because on Windows, both *_VARNAMEs are PATH but uninstalled 4508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libraries must come first. */ 4509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 4510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 4511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 4513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonnull (lt_argv_zero)); 4514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (i = 0; i < newargc; i++) 4515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 4517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org i, nonnull (newargz[i])); 4518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host_os in 4523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org mingw*) 4524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* execv doesn't actually work on mingw as expected on unix */ 4526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newargz = prepare_spawn (newargz); 4527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 4528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (rval == -1) 4529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* failed to start process */ 4531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, 4532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "(main) failed to launch target \"%s\": %s\n", 4533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_argv_zero, nonnull (strerror (errno))); 4534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return 127; 4535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return rval; 4537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 4539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 4540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org execv (lt_argv_zero, newargz); 4542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return rval; /* =127, but avoids unused variable warning */ 4543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 4545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 4546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid * 4551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgxmalloc (size_t num) 4552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org void *p = (void *) malloc (num); 4554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (!p) 4555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_fatal (__FILE__, __LINE__, "memory exhausted"); 4556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return p; 4558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar * 4561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgxstrdup (const char *string) 4562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 4564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org string) : NULL; 4565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgconst char * 4568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbase_name (const char *name) 4569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org const char *base; 4571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* Skip over the disk name in MSDOS pathnames. */ 4574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (isalpha ((unsigned char) name[0]) && name[1] == ':') 4575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name += 2; 4576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (base = name; *name; name++) 4579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (IS_DIR_SEPARATOR (*name)) 4580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org base = name + 1; 4581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return base; 4582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint 4585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcheck_executable (const char *path) 4586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org struct stat st; 4588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 4590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonempty (path)); 4591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ((!path) || (!*path)) 4592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return 0; 4593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ((stat (path, &st) >= 0) 4595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 4596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return 1; 4597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return 0; 4599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgint 4602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgmake_executable (const char *path) 4603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int rval = 0; 4605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org struct stat st; 4606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 4608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonempty (path)); 4609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ((!path) || (!*path)) 4610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return 0; 4611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (stat (path, &st) >= 0) 4613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 4615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return rval; 4617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* Searches for the full path of the wrapper. Returns 4620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newly allocated full path name if found, NULL otherwise 4621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org Does not chase symlinks, even on platforms that support them. 4622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org*/ 4623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar * 4624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfind_executable (const char *wrapper) 4625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int has_slash = 0; 4627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org const char *p; 4628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org const char *p_next; 4629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* static buffer for getcwd */ 4630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char tmp[LT_PATHMAX + 1]; 4631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int tmp_len; 4632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *concat_name; 4633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 4635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonempty (wrapper)); 4636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ((wrapper == NULL) || (*wrapper == '\0')) 4638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return NULL; 4639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* Absolute path? */ 4641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 4643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org concat_name = xstrdup (wrapper); 4645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (check_executable (concat_name)) 4646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return concat_name; 4647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (concat_name); 4648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (IS_DIR_SEPARATOR (wrapper[0])) 4653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org concat_name = xstrdup (wrapper); 4655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (check_executable (concat_name)) 4656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return concat_name; 4657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (concat_name); 4658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (p = wrapper; *p; p++) 4664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (*p == '/') 4665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org has_slash = 1; 4667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break; 4668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (!has_slash) 4670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* no slashes; search PATH */ 4672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org const char *path = getenv ("PATH"); 4673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (path != NULL) 4674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (p = path; *p; p = p_next) 4676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org const char *q; 4678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org size_t p_len; 4679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (q = p; *q; q++) 4680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (IS_PATH_SEPARATOR (*q)) 4681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break; 4682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org p_len = q - p; 4683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org p_next = (*q == '\0' ? q : q + 1); 4684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (p_len == 0) 4685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* empty path: current directory */ 4687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (getcwd (tmp, LT_PATHMAX) == NULL) 4688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonnull (strerror (errno))); 4690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_len = strlen (tmp); 4691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org concat_name = 4692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org memcpy (concat_name, tmp, tmp_len); 4694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org concat_name[tmp_len] = '/'; 4695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcpy (concat_name + tmp_len + 1, wrapper); 4696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org concat_name = 4700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 4701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org memcpy (concat_name, p, p_len); 4702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org concat_name[p_len] = '/'; 4703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcpy (concat_name + p_len + 1, wrapper); 4704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (check_executable (concat_name)) 4706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return concat_name; 4707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (concat_name); 4708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* not found in PATH; assume curdir */ 4711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* Relative path | not found in path: prepend cwd */ 4713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (getcwd (tmp, LT_PATHMAX) == NULL) 4714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonnull (strerror (errno))); 4716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_len = strlen (tmp); 4717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org memcpy (concat_name, tmp, tmp_len); 4719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org concat_name[tmp_len] = '/'; 4720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcpy (concat_name + tmp_len + 1, wrapper); 4721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (check_executable (concat_name)) 4723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return concat_name; 4724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (concat_name); 4725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return NULL; 4726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar * 4729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchase_symlinks (const char *pathspec) 4730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifndef S_ISLNK 4732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return xstrdup (pathspec); 4733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else 4734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char buf[LT_PATHMAX]; 4735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org struct stat s; 4736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *tmp_pathspec = xstrdup (pathspec); 4737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *p; 4738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int has_symlinks = 0; 4739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while (strlen (tmp_pathspec) && !has_symlinks) 4740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, 4742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "checking path component for symlinks: %s\n", 4743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec); 4744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (lstat (tmp_pathspec, &s) == 0) 4745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (S_ISLNK (s.st_mode) != 0) 4747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org has_symlinks = 1; 4749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break; 4750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* search backwards for last DIR_SEPARATOR */ 4753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org p = tmp_pathspec + strlen (tmp_pathspec) - 1; 4754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org p--; 4756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* no more DIR_SEPARATORS left */ 4759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break; 4760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *p = '\0'; 4762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_fatal (__FILE__, __LINE__, 4766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "error accessing file \"%s\": %s", 4767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec, nonnull (strerror (errno))); 4768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (tmp_pathspec); 4771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (!has_symlinks) 4773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return xstrdup (pathspec); 4775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_pathspec = realpath (pathspec, buf); 4778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (tmp_pathspec == 0) 4779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_fatal (__FILE__, __LINE__, 4781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "could not follow symlinks for %s", pathspec); 4782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return xstrdup (tmp_pathspec); 4784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar * 4788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstrendzap (char *str, const char *pat) 4789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org size_t len, patlen; 4791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org assert (str != NULL); 4793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org assert (pat != NULL); 4794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len = strlen (str); 4796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org patlen = strlen (pat); 4797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (patlen <= len) 4799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org str += len - patlen; 4801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (strcmp (str, pat) == 0) 4802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *str = '\0'; 4803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return str; 4805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid 4808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_debugprintf (const char *file, int line, const char *fmt, ...) 4809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org va_list args; 4811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (lt_debug) 4812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 4814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org va_start (args, fmt); 4815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org (void) vfprintf (stderr, fmt, args); 4816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org va_end (args); 4817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic void 4821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_error_core (int exit_status, const char *file, 4822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int line, const char *mode, 4823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org const char *message, va_list ap) 4824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 4826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org vfprintf (stderr, message, ap); 4827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fprintf (stderr, ".\n"); 4828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (exit_status >= 0) 4830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit (exit_status); 4831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid 4834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_fatal (const char *file, int line, const char *message, ...) 4835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org va_list ap; 4837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org va_start (ap, message); 4838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 4839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org va_end (ap); 4840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char * 4843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgnonnull (const char *s) 4844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return s ? s : "(null)"; 4846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgstatic const char * 4849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgnonempty (const char *s) 4850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return (s && !*s) ? "(empty)" : nonnull (s); 4852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid 4855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_setenv (const char *name, const char *value) 4856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, 4858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "(lt_setenv) setting '%s' to '%s'\n", 4859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonnull (name), nonnull (value)); 4860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#ifdef HAVE_SETENV 4862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* always make a copy, for consistency with !HAVE_SETENV */ 4863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *str = xstrdup (value); 4864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org setenv (name, str, 1); 4865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#else 4866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int len = strlen (name) + 1 + strlen (value) + 1; 4867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *str = XMALLOC (char, len); 4868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sprintf (str, "%s=%s", name, value); 4869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (putenv (str) != EXIT_SUCCESS) 4870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (str); 4872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#endif 4874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar * 4878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_extend_str (const char *orig_value, const char *add, int to_end) 4879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *new_value; 4881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (orig_value && *orig_value) 4882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int orig_value_len = strlen (orig_value); 4884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int add_len = strlen (add); 4885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_value = XMALLOC (char, add_len + orig_value_len + 1); 4886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (to_end) 4887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcpy (new_value, orig_value); 4889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcpy (new_value + orig_value_len, add); 4890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcpy (new_value, add); 4894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org strcpy (new_value + add_len, orig_value); 4895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 4898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_value = xstrdup (add); 4900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return new_value; 4902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid 4905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_update_exe_path (const char *name, const char *value) 4906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, 4908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 4909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonnull (name), nonnull (value)); 4910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (name && *name && value && *value) 4912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *new_value = lt_extend_str (getenv (name), value, 0); 4914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* some systems can't cope with a ':'-terminated path #' */ 4915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int len = strlen (new_value); 4916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 4917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_value[len-1] = '\0'; 4919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_setenv (name, new_value); 4921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (new_value); 4922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid 4926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglt_update_lib_path (const char *name, const char *value) 4927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_debugprintf (__FILE__, __LINE__, 4929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonnull (name), nonnull (value)); 4931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (name && *name && value && *value) 4933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *new_value = lt_extend_str (getenv (name), value, 0); 4935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_setenv (name, new_value); 4936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org XFREE (new_value); 4937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 4938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 4939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 4941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host_os in 4942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org mingw*) 4943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 4944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org/* Prepares an argument vector before calling spawn(). 4946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org Note that spawn() does not by itself call the command interpreter 4947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 4948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 4949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org GetVersionEx(&v); 4950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org v.dwPlatformId == VER_PLATFORM_WIN32_NT; 4951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org }) ? "cmd.exe" : "command.com"). 4952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org Instead it simply concatenates the arguments, separated by ' ', and calls 4953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org CreateProcess(). We must quote the arguments since Win32 CreateProcess() 4954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 4955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org special way: 4956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org - Space and tab are interpreted as delimiters. They are not treated as 4957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org delimiters if they are surrounded by double quotes: "...". 4958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org - Unescaped double quotes are removed from the input. Their only effect is 4959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org that within double quotes, space and tab are treated like normal 4960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org characters. 4961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org - Backslashes not followed by double quotes are not special. 4962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org - But 2*n+1 backslashes followed by a double quote become 4963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org n backslashes followed by a double quote (n >= 0): 4964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \" -> " 4965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \\\" -> \" 4966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org \\\\\" -> \\" 4967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org */ 4968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#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" 4969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org#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" 4970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgchar ** 4971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgprepare_spawn (char **argv) 4972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 4973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org size_t argc; 4974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char **new_argv; 4975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org size_t i; 4976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* Count number of arguments. */ 4978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (argc = 0; argv[argc] != NULL; argc++) 4979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ; 4980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* Allocate new argument vector. */ 4982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_argv = XMALLOC (char *, argc + 1); 4983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org /* Put quoted arguments into the new argument vector. */ 4985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (i = 0; i < argc; i++) 4986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org const char *string = argv[i]; 4988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 4989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (string[0] == '\0') 4990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_argv[i] = xstrdup ("\"\""); 4991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 4992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 4993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 4994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org size_t length; 4995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org unsigned int backslashes; 4996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org const char *s; 4997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *quoted_string; 4998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char *p; 4999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org length = 0; 5001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org backslashes = 0; 5002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (quote_around) 5003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org length++; 5004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (s = string; *s != '\0'; s++) 5005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 5006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char c = *s; 5007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (c == '"') 5008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org length += backslashes + 1; 5009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org length++; 5010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (c == '\\') 5011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org backslashes++; 5012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org backslashes = 0; 5014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 5015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (quote_around) 5016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org length += backslashes + 1; 5017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org quoted_string = XMALLOC (char, length + 1); 5019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org p = quoted_string; 5021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org backslashes = 0; 5022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (quote_around) 5023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *p++ = '"'; 5024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (s = string; *s != '\0'; s++) 5025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 5026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org char c = *s; 5027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (c == '"') 5028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 5029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org unsigned int j; 5030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (j = backslashes + 1; j > 0; j--) 5031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *p++ = '\\'; 5032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 5033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *p++ = c; 5034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (c == '\\') 5035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org backslashes++; 5036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org backslashes = 0; 5038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 5039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (quote_around) 5040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { 5041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org unsigned int j; 5042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for (j = backslashes; j > 0; j--) 5043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *p++ = '\\'; 5044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *p++ = '"'; 5045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 5046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *p = '\0'; 5047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_argv[i] = quoted_string; 5049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 5050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_argv[i] = (char *) string; 5052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 5053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_argv[argc] = NULL; 5054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org return new_argv; 5056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 5057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 5058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 5062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgvoid lt_dump_script (FILE* f) 5063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 5064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 5065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_emit_wrapper yes | 5066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -n -e ' 5067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgs/^\(.\{79\}\)\(..*\)/\1\ 5068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org\2/ 5069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgh 5070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgs/\([\\"]\)/\\\1/g 5071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgs/$/\\n/ 5072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgs/\([^\n]*\).*/ fputs ("\1", f);/p 5073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgg 5074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgD' 5075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat <<"EOF" 5076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 5077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 5078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 5079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# end: func_emit_cwrapperexe_src 5080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_win32_import_lib_p ARG 5082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# True if ARG is an import lib, as indicated by $file_magic_cmd 5083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_win32_import_lib_p () 5084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 5085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 5086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 5087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *import*) : ;; 5088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) false ;; 5089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 5091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_link arg... 5093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_link () 5094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 5095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 5096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 5097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # It is impossible to link a dll without this setting, and 5099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # we shouldn't force the makefile maintainer to figure out 5100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # which system we are compiling for in order to pass an extra 5101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # flag for every libtool invocation. 5102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # allow_undefined=no 5103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # FIXME: Unfortunately, there are problems with the above when trying 5105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # to make a dll which has undefined symbols, in which case not 5106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # even a static library is built. For now, we need to specify 5107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -no-undefined on the libtool link line when we can be certain 5108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # that all symbols are satisfied, otherwise we get a static library. 5109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org allow_undefined=yes 5110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 5112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org allow_undefined=yes 5113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libtool_args=$nonopt 5116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org base_compile="$nonopt $@" 5117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_command=$nonopt 5118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_command=$nonopt 5119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_rpath= 5121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_rpath= 5122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_shlibpath= 5123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_shlibpath= 5124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org convenience= 5125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org old_convenience= 5126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs= 5127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org old_deplibs= 5128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compiler_flags= 5129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org linker_flags= 5130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dllsearchpath= 5131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib_search_path=`pwd` 5132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org inst_prefix_dir= 5133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_inherited_linker_flags= 5134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org avoid_version=no 5136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org bindir= 5137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlfiles= 5138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlprefiles= 5139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlself=no 5140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_dynamic=no 5141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols= 5142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols_regex= 5143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org generated= 5144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobjs= 5145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ltlibs= 5146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org module=no 5147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org no_install=no 5148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org objs= 5149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org non_pic_objects= 5150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org precious_files_regex= 5151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prefer_static_libs=no 5152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org preload=no 5153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prevarg= 5155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org release= 5156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rpath= 5157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org xrpath= 5158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org perm_rpath= 5159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org temp_rpath= 5160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org thread_safe=no 5161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org vinfo= 5162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org vinfo_number=no 5163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org weak_libs= 5164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org single_module="${wl}-single_module" 5165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_infer_tag $base_compile 5166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We need to know -static, to get the right output filenames. 5168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for arg 5169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 5170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg in 5171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -shared) 5172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$build_libtool_libs" != yes && \ 5173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_configuration "can not build a shared library" 5174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_old_libs=no 5175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 5176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -all-static | -static | -static-libtool-libs) 5178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg in 5179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -all-static) 5180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 5181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "complete static linking is impossible in this configuration" 5182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$link_static_flag"; then 5184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlopen_self=$dlopen_self_static 5185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prefer_static_libs=yes 5187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -static) 5189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$pic_flag" && test -n "$link_static_flag"; then 5190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlopen_self=$dlopen_self_static 5191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prefer_static_libs=built 5193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -static-libtool-libs) 5195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$pic_flag" && test -n "$link_static_flag"; then 5196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlopen_self=$dlopen_self_static 5197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prefer_static_libs=yes 5199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=no 5202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_old_libs=yes 5203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 5204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 5207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # See if our shared archives depend on static archives. 5209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$old_archive_from_new_cmds" && build_old_libs=yes 5210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Go through the arguments, transforming them on the way. 5212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while test "$#" -gt 0; do 5213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg="$1" 5214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 5215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$arg" 5216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org qarg=$func_quote_for_eval_unquoted_result 5217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libtool_args " $func_quote_for_eval_result" 5218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the previous option needs an argument, assign it. 5220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$prev"; then 5221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $prev in 5222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output) 5223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " @OUTPUT@" 5224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " @OUTPUT@" 5225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $prev in 5229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org bindir) 5230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org bindir="$arg" 5231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlfiles|dlprefiles) 5235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$preload" = no; then 5236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add the symbol object into the linking commands. 5237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " @SYMFILE@" 5238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " @SYMFILE@" 5239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org preload=yes 5240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg in 5242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la | *.lo) ;; # We handle these cases below. 5243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org force) 5244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$dlself" = no; then 5245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlself=needless 5246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_dynamic=yes 5247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org self) 5252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$prev" = dlprefiles; then 5253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlself=yes 5254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 5255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlself=yes 5256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlself=needless 5258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_dynamic=yes 5259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 5264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$prev" = dlfiles; then 5265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlfiles " $arg" 5266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlprefiles " $arg" 5268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org expsyms) 5275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols="$arg" 5276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -f "$arg" \ 5277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org || func_fatal_error "symbol file \`$arg' does not exist" 5278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org expsyms_regex) 5282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols_regex="$arg" 5283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org framework) 5287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 5288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-darwin*) 5289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$deplibs " in 5290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $qarg.ltframework "*) ;; 5291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append deplibs " $qarg.ltframework" # this is fixed later 5292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org inst_prefix) 5300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org inst_prefix_dir="$arg" 5301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org objectlist) 5305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$arg"; then 5306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_arg=$arg 5307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org moreargs= 5308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for fil in `cat "$save_arg"` 5309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 5310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_append moreargs " $fil" 5311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg=$fil 5312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # A libtool-controlled object. 5313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check to see that this really is a libtool object. 5315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_lalib_unsafe_p "$arg"; then 5316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_object= 5317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org non_pic_object= 5318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Read the .lo file 5320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$arg" 5321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$pic_object" || 5323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$non_pic_object" || 5324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$pic_object" = none && 5325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$non_pic_object" = none; then 5326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot find name of object for \`$arg'" 5327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Extract subdirectory from the argument. 5330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$arg" "/" "" 5331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org xdir="$func_dirname_result" 5332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pic_object" != none; then 5334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Prepend the subdirectory the object is found in. 5335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_object="$xdir$pic_object" 5336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$prev" = dlfiles; then 5338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlfiles " $pic_object" 5340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If libtool objects are unsupported, then we need to preload. 5344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=dlprefiles 5345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # CHECK ME: I think I busted this. -Ossama 5349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$prev" = dlprefiles; then 5350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Preload the old-style object. 5351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlprefiles " $pic_object" 5352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # A PIC object. 5356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libobjs " $pic_object" 5357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg="$pic_object" 5358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Non-PIC object. 5361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$non_pic_object" != none; then 5362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Prepend the subdirectory the object is found in. 5363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org non_pic_object="$xdir$non_pic_object" 5364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # A standard non-PIC object 5366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append non_pic_objects " $non_pic_object" 5367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$pic_object" || test "$pic_object" = none ; then 5368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg="$non_pic_object" 5369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the PIC object exists, use it instead. 5372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # $xdir was prepended to $pic_object above. 5373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org non_pic_object="$pic_object" 5374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append non_pic_objects " $non_pic_object" 5375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Only an error if not doing a dry-run. 5378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $opt_dry_run; then 5379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Extract subdirectory from the argument. 5380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$arg" "/" "" 5381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org xdir="$func_dirname_result" 5382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lo2o "$arg" 5384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_object=$xdir$objdir/$func_lo2o_result 5385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org non_pic_object=$xdir$func_lo2o_result 5386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libobjs " $pic_object" 5387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append non_pic_objects " $non_pic_object" 5388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$arg' is not a valid libtool object" 5390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 5393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "link input file \`$arg' does not exist" 5395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg=$save_arg 5397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org precious_regex) 5401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org precious_files_regex="$arg" 5402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org release) 5406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org release="-$arg" 5407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rpath | xrpath) 5411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We need an absolute path. 5412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg in 5413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]*) ;; 5414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 5415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "only absolute run-paths are allowed" 5416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$prev" = rpath; then 5419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$rpath " in 5420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $arg "*) ;; 5421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append rpath " $arg" ;; 5422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$xrpath " in 5425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $arg "*) ;; 5426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append xrpath " $arg" ;; 5427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shrext) 5433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shrext_cmds="$arg" 5434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org weak) 5438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append weak_libs " $arg" 5439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org xcclinker) 5443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append linker_flags " $qarg" 5444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compiler_flags " $qarg" 5445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $qarg" 5447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $qarg" 5448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org xcompiler) 5451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compiler_flags " $qarg" 5452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $qarg" 5454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $qarg" 5455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org xlinker) 5458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append linker_flags " $qarg" 5459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compiler_flags " $wl$qarg" 5460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $wl$qarg" 5462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $wl$qarg" 5463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 5466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$prev=\"\$arg\"" 5467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # test -n "$prev" 5472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prevarg="$arg" 5474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg in 5476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -all-static) 5477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$link_static_flag"; then 5478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # See comment for -static flag below, for more details. 5479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $link_static_flag" 5480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $link_static_flag" 5481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -allow-undefined) 5486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # FIXME: remove this flag sometime in the future. 5487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`-allow-undefined' must not be used because it is the default" 5488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -avoid-version) 5491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org avoid_version=yes 5492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -bindir) 5496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=bindir 5497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -dlopen) 5501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=dlfiles 5502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -dlpreopen) 5506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=dlprefiles 5507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -export-dynamic) 5511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_dynamic=yes 5512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -export-symbols | -export-symbols-regex) 5516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 5517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "more than one -exported-symbols argument is not allowed" 5518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$arg" = "X-export-symbols"; then 5520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=expsyms 5521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=expsyms_regex 5523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -framework) 5528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=framework 5529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -inst-prefix-dir) 5533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=inst_prefix 5534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 5538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # so, if we see these flags be careful not to treat them like -L 5539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L[A-Z][A-Z]*:*) 5540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $with_gcc/$host in 5541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org no/*-*-irix* | /*-*-irix*) 5542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $arg" 5543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $arg" 5544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L*) 5550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname "-L" '' "$arg" 5551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$func_stripname_result"; then 5552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$#" -gt 0; then 5553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "require no space between \`-L' and \`$1'" 5554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "need path for \`-L' option" 5556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$func_stripname_result" 5559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir=$func_resolve_sysroot_result 5560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We need an absolute path. 5561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $dir in 5562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]*) ;; 5563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 5564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org absdir=`cd "$dir" && pwd` 5565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$absdir" && \ 5566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot determine absolute directory name of \`$dir'" 5567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir="$absdir" 5568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$deplibs " in 5571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" -L$dir "* | *" $arg "*) 5572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Will only happen for absolute or sysroot arguments 5573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 5575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Preserve sysroot, but never include relative directories 5576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $dir in 5577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 5578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append deplibs " -L$dir" ;; 5579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append lib_search_path " $dir" 5581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 5584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 5586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case :$dllsearchpath: in 5587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *":$dir:"*) ;; 5588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ::) dllsearchpath=$dir;; 5589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append dllsearchpath ":$dir";; 5590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case :$dllsearchpath: in 5592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *":$testbindir:"*) ;; 5593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ::) dllsearchpath=$testbindir;; 5594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append dllsearchpath ":$testbindir";; 5595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -l*) 5602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 5603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 5604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 5605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # These systems don't actually have a C or math library (as such) 5606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-os2*) 5609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # These systems don't actually have a C library (as such) 5610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$arg" = "X-lc" && continue 5611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do not include libc due to us having libc/libc_r. 5614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$arg" = "X-lc" && continue 5615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-rhapsody* | *-*-darwin1.[012]) 5617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Rhapsody C and math libraries are in the System framework 5618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append deplibs " System.ltframework" 5619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-sco3.2v5* | *-*-sco5v6*) 5622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Causes problems with __ctype 5623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$arg" = "X-lc" && continue 5624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 5626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Compiler inserts libc in the correct place for threads to work 5627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$arg" = "X-lc" && continue 5628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "X$arg" = "X-lc_r"; then 5631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 5632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do not include libc_r directly, use -pthread flag. 5634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append deplibs " $arg" 5639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -module) 5643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org module=yes 5644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Tru64 UNIX uses -model [arg] to determine the layout of C++ 5648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # classes, name mangling, and exception handling. 5649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Darwin uses the -arch flag to determine output architecture. 5650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -model|-arch|-isysroot|--sysroot) 5651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compiler_flags " $arg" 5652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $arg" 5653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $arg" 5654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=xcompiler 5655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 5659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 5660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compiler_flags " $arg" 5661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $arg" 5662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $arg" 5663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$new_inherited_linker_flags " in 5664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $arg "*) ;; 5665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org * ) func_append new_inherited_linker_flags " $arg" ;; 5666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -multi_module) 5671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org single_module="${wl}-multi_module" 5672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -no-fast-install) 5676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fast_install=no 5677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -no-install) 5681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 5682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 5683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The PATH hackery in wrapper scripts is required on Windows 5684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # and Darwin in order for the loader to find any dlls it needs. 5685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-no-install' is ignored for $host" 5686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "assuming \`-no-fast-install' instead" 5687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fast_install=no 5688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) no_install=yes ;; 5690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -no-undefined) 5695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org allow_undefined=no 5696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -objectlist) 5700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=objectlist 5701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -o) prev=output ;; 5705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -precious-files-regex) 5707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=precious_regex 5708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -release) 5712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=release 5713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -rpath) 5717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=rpath 5718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -R) 5722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=xrpath 5723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -R*) 5727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '-R' '' "$arg" 5728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir=$func_stripname_result 5729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We need an absolute path. 5730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $dir in 5731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]*) ;; 5732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org =*) 5733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '=' '' "$dir" 5734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir=$lt_sysroot$func_stripname_result 5735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 5737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "only absolute run-paths are allowed" 5738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$xrpath " in 5741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $dir "*) ;; 5742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append xrpath " $dir" ;; 5743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 5744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -shared) 5748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The effects of -shared are defined in a previous loop. 5749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -shrext) 5753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=shrext 5754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -static | -static-libtool-libs) 5758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The effects of -static are defined in a previous loop. 5759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We used to do the same as -all-static on platforms that 5760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # didn't have a PIC flag, but the assumption that the effects 5761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # would be equivalent was wrong. It would break on at least 5762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Digital Unix and AIX. 5763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -thread-safe) 5767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org thread_safe=yes 5768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -version-info) 5772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=vinfo 5773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -version-number) 5777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=vinfo 5778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org vinfo_number=yes 5779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -weak) 5783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=weak 5784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Wc,*) 5788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '-Wc,' '' "$arg" 5789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org args=$func_stripname_result 5790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg= 5791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_ifs="$IFS"; IFS=',' 5792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for flag in $args; do 5793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 5794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$flag" 5795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append arg " $func_quote_for_eval_result" 5796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compiler_flags " $func_quote_for_eval_result" 5797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 5798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 5799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname ' ' '' "$arg" 5800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg=$func_stripname_result 5801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Wl,*) 5804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '-Wl,' '' "$arg" 5805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org args=$func_stripname_result 5806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg= 5807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_ifs="$IFS"; IFS=',' 5808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for flag in $args; do 5809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 5810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$flag" 5811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append arg " $wl$func_quote_for_eval_result" 5812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compiler_flags " $wl$func_quote_for_eval_result" 5813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append linker_flags " $func_quote_for_eval_result" 5814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 5815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 5816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname ' ' '' "$arg" 5817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg=$func_stripname_result 5818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Xcompiler) 5821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=xcompiler 5822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -Xlinker) 5826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=xlinker 5827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -XCClinker) 5831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=xcclinker 5832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -msg_* for osf cc 5836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -msg_*) 5837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$arg" 5838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg="$func_quote_for_eval_result" 5839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Flags to be passed through unchanged, with rationale: 5842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 5843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -r[0-9][0-9]* specify processor for the SGI compiler 5844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 5845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # +DA*, +DD* enable 64-bit mode for the HP compiler 5846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -q* compiler args for the IBM compiler 5847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 5848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -F/path path to uninstalled frameworks, gcc on darwin 5849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 5850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # @file GCC response files 5851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -tp=* Portland pgcc target processor selection 5852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # --sysroot=* for sysroot support 5853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 5854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 5855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 5856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 5857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$arg" 5858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg="$func_quote_for_eval_result" 5859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $arg" 5860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $arg" 5861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compiler_flags " $arg" 5862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Some other compiler flag. 5866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -* | +*) 5867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$arg" 5868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg="$func_quote_for_eval_result" 5869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.$objext) 5872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # A standard object. 5873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append objs " $arg" 5874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.lo) 5877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # A libtool-controlled object. 5878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check to see that this really is a libtool object. 5880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_lalib_unsafe_p "$arg"; then 5881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_object= 5882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org non_pic_object= 5883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Read the .lo file 5885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$arg" 5886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$pic_object" || 5888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$non_pic_object" || 5889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$pic_object" = none && 5890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$non_pic_object" = none; then 5891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot find name of object for \`$arg'" 5892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Extract subdirectory from the argument. 5895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$arg" "/" "" 5896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org xdir="$func_dirname_result" 5897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pic_object" != none; then 5899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Prepend the subdirectory the object is found in. 5900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_object="$xdir$pic_object" 5901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$prev" = dlfiles; then 5903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlfiles " $pic_object" 5905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If libtool objects are unsupported, then we need to preload. 5909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev=dlprefiles 5910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # CHECK ME: I think I busted this. -Ossama 5914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$prev" = dlprefiles; then 5915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Preload the old-style object. 5916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlprefiles " $pic_object" 5917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # A PIC object. 5921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libobjs " $pic_object" 5922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg="$pic_object" 5923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Non-PIC object. 5926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$non_pic_object" != none; then 5927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Prepend the subdirectory the object is found in. 5928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org non_pic_object="$xdir$non_pic_object" 5929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # A standard non-PIC object 5931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append non_pic_objects " $non_pic_object" 5932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$pic_object" || test "$pic_object" = none ; then 5933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg="$non_pic_object" 5934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the PIC object exists, use it instead. 5937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # $xdir was prepended to $pic_object above. 5938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org non_pic_object="$pic_object" 5939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append non_pic_objects " $non_pic_object" 5940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Only an error if not doing a dry-run. 5943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $opt_dry_run; then 5944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Extract subdirectory from the argument. 5945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$arg" "/" "" 5946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org xdir="$func_dirname_result" 5947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lo2o "$arg" 5949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pic_object=$xdir$objdir/$func_lo2o_result 5950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org non_pic_object=$xdir$func_lo2o_result 5951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libobjs " $pic_object" 5952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append non_pic_objects " $non_pic_object" 5953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$arg' is not a valid libtool object" 5955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.$libext) 5960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # An archive. 5961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append deplibs " $arg" 5962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append old_deplibs " $arg" 5963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) 5967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # A libtool-controlled library. 5968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$arg" 5970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$prev" = dlfiles; then 5971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This library was specified with -dlopen. 5972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlfiles " $func_resolve_sysroot_result" 5973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$prev" = dlprefiles; then 5975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The library was specified with -dlpreopen. 5976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlprefiles " $func_resolve_sysroot_result" 5977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prev= 5978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 5979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append deplibs " $func_resolve_sysroot_result" 5980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 5982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Some other compiler argument. 5985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 5986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Unknown arguments in both finalize_command and compile_command need 5987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # to be aesthetically quoted because they are evaled later. 5988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$arg" 5989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org arg="$func_quote_for_eval_result" 5990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 5991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac # arg 5992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 5993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now actually substitute the argument into the commands. 5994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$arg"; then 5995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $arg" 5996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $arg" 5997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 5998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done # argument parsing loop 5999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$prev" && \ 6001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "the \`$prevarg' option requires an argument" 6002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 6004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval arg=\"$export_dynamic_flag_spec\" 6005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $arg" 6006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $arg" 6007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldlibs= 6010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # calculate the name of the file, without its directory 6011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$output" 6012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org outputname="$func_basename_result" 6013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobjs_save="$libobjs" 6014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$shlibpath_var"; then 6016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # get the directories listed in $shlibpath_var 6017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 6018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shlib_search_path= 6020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 6022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 6023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$output" "/" "" 6025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output_objdir="$func_dirname_result$objdir" 6026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$output_objdir/" 6027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tool_output_objdir=$func_to_tool_file_result 6028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Create the object directory. 6029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_mkdir_p "$output_objdir" 6030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Determine the type of output 6032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $output in 6033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org "") 6034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "you must specify an output file" 6035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.$libext) linkmode=oldlib ;; 6037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.lo | *.$objext) linkmode=obj ;; 6038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) linkmode=lib ;; 6039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) linkmode=prog ;; # Anything else should be a program. 6040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org specialdeplibs= 6043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libs= 6045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Find all interdependent deplibs by searching for libraries 6046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # that are linked more than once (e.g. -la -lb -la) 6047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $deplibs; do 6048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $opt_preserve_dup_deps ; then 6049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$libs " in 6050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libs " $deplib" 6054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = lib; then 6057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libs="$predeps $libs $compiler_lib_search_path $postdeps" 6058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Compute libraries that are listed more than once in $predeps 6060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # $postdeps and mark them as special (i.e., whose duplicates are 6061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # not to be eliminated). 6062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pre_post_deps= 6063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $opt_duplicate_compiler_generated_deps; then 6064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for pre_post_dep in $predeps $postdeps; do 6065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$pre_post_deps " in 6066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 6067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append pre_post_deps " $pre_post_dep" 6069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pre_post_deps= 6072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs= 6075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdependency_libs= 6076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newlib_search_path= 6077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org need_relink=no # whether we're linking any uninstalled libtool libraries 6078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org notinst_deplibs= # not-installed libtool libraries 6079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org notinst_path= # paths that contain not-installed libtool libraries 6080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $linkmode in 6082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib) 6083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org passes="conv dlpreopen link" 6084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for file in $dlfiles $dlprefiles; do 6085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $file in 6086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) ;; 6087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 6088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 6089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prog) 6094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs= 6095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs= 6096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org alldeplibs=no 6097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdlfiles= 6098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdlprefiles= 6099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org passes="conv scan dlopen dlpreopen link" 6100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) passes="conv" 6102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for pass in $passes; do 6106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The preopen pass in lib mode reverses $deplibs; put it back here 6107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # so that -L comes before libs that need it for instance... 6108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode,$pass" = "lib,link"; then 6109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ## FIXME: Find the place where the list is rebuilt in the wrong 6110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ## order, and fix it there properly 6111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_deplibs= 6112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $deplibs; do 6113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_deplibs="$deplib $tmp_deplibs" 6114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$tmp_deplibs" 6116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode,$pass" = "lib,link" || 6119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$linkmode,$pass" = "prog,scan"; then 6120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libs="$deplibs" 6121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs= 6122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = prog; then 6124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $pass in 6125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlopen) libs="$dlfiles" ;; 6126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlpreopen) libs="$dlprefiles" ;; 6127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 6128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode,$pass" = "lib,dlpreopen"; then 6131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Collect and forward deplibs of preopened libtool libs 6132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lib in $dlprefiles; do 6133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Ignore non-libtool-libs 6134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dependency_libs= 6135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$lib" 6136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $lib in 6137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) func_source "$func_resolve_sysroot_result" ;; 6138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Collect preopened libtool deplibs, except any this library 6141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # has declared as weak libs 6142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $dependency_libs; do 6143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$deplib" 6144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplib_base=$func_basename_result 6145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $weak_libs " in 6146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib_base "*) ;; 6147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append deplibs " $deplib" ;; 6148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libs="$dlprefiles" 6152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = dlopen; then 6154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Collect dlpreopened libraries 6155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_deplibs="$deplibs" 6156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs= 6157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $libs; do 6160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib= 6161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org found=no 6162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplib in 6163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 6164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 6165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode,$pass" = "prog,link"; then 6166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$deplib $compile_deplibs" 6167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="$deplib $finalize_deplibs" 6168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compiler_flags " $deplib" 6170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = lib ; then 6171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$new_inherited_linker_flags " in 6172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) ;; 6173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org * ) func_append new_inherited_linker_flags " $deplib" ;; 6174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -l*) 6180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" != lib && test "$linkmode" != prog; then 6181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-l' is ignored for archives/objects" 6182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '-l' '' "$deplib" 6185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name=$func_stripname_result 6186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = lib; then 6187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 6188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 6190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for searchdir in $searchdirs; do 6192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for search_ext in .la $std_shrext .so .a; do 6193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Search the libtool library 6194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib="$searchdir/lib${name}${search_ext}" 6195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$lib"; then 6196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$search_ext" = ".la"; then 6197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org found=yes 6198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org found=no 6200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 2 6202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$found" != yes; then 6206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # deplib doesn't seem to be a libtool library 6207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode,$pass" = "prog,link"; then 6208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$deplib $compile_deplibs" 6209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="$deplib $finalize_deplibs" 6210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else # deplib is a libtool library 6216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 6217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We need to do some special things here, and not later. 6218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $predeps $postdeps " in 6220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) 6221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_lalib_p "$lib"; then 6222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org library_names= 6223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org old_library= 6224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$lib" 6225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for l in $old_library $library_names; do 6226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ll="$l" 6227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$ll" = "X$old_library" ; then # only static version available 6229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org found=no 6230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$lib" "" "." 6231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ladir="$func_dirname_result" 6232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib=$ladir/$old_library 6233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode,$pass" = "prog,link"; then 6234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$deplib $compile_deplibs" 6235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="$deplib $finalize_deplibs" 6236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) ;; 6245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; # -l 6249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.ltframework) 6250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode,$pass" = "prog,link"; then 6251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$deplib $compile_deplibs" 6252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="$deplib $finalize_deplibs" 6253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = lib ; then 6256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$new_inherited_linker_flags " in 6257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) ;; 6258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org * ) func_append new_inherited_linker_flags " $deplib" ;; 6259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L*) 6265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $linkmode in 6266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib) 6267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$pass" = conv && continue 6269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdependency_libs="$deplib $newdependency_libs" 6270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '-L' '' "$deplib" 6271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$func_stripname_result" 6272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newlib_search_path " $func_resolve_sysroot_result" 6273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prog) 6275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = conv; then 6276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = scan; then 6280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$deplib $compile_deplibs" 6283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="$deplib $finalize_deplibs" 6284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '-L' '' "$deplib" 6286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$func_stripname_result" 6287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newlib_search_path " $func_resolve_sysroot_result" 6288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 6290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-L' is ignored for archives/objects" 6291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac # linkmode 6293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; # -L 6295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -R*) 6296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = link; then 6297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '-R' '' "$deplib" 6298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$func_stripname_result" 6299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir=$func_resolve_sysroot_result 6300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make sure the xrpath contains only unique directories. 6301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$xrpath " in 6302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $dir "*) ;; 6303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append xrpath " $dir" ;; 6304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) 6310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$deplib" 6311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib=$func_resolve_sysroot_result 6312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.$libext) 6314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = conv; then 6315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $linkmode in 6319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib) 6320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Linking convenience modules into shared libraries is allowed, 6321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # but linking other static libraries is non-portable. 6322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $dlpreconveniencelibs " in 6323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) ;; 6324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 6325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org valid_a_lib=no 6326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplibs_check_method in 6327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org match_pattern*) 6328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $deplibs_check_method; shift 6329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 6331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org | $EGREP "$match_pattern_regex" > /dev/null; then 6332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org valid_a_lib=yes 6333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pass_all) 6336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org valid_a_lib=yes 6337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$valid_a_lib" != yes; then 6340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 6341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: Trying to link with static lib archive $deplib." 6342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** I have the capability to make that library automatically link in when" 6343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** you link to this library. But I can only do this if you have a" 6344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** shared version of the library, which you do not appear to have" 6345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** because the file extensions .$libext of this argument makes me believe" 6346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** that it is just a static archive that I should not use here." 6347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 6349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: Linking the shared library $output against the" 6350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** static library $deplib is not portable!" 6351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prog) 6358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" != link; then 6359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$deplib $compile_deplibs" 6362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="$deplib $finalize_deplibs" 6363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac # linkmode 6367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; # *.$libext 6368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.lo | *.$objext) 6369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = conv; then 6370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$linkmode" = prog; then 6372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 6373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If there is no dlopen support or we're linking statically, 6374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # we need to preload. 6375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlprefiles " $deplib" 6376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$deplib $compile_deplibs" 6377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="$deplib $finalize_deplibs" 6378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlfiles " $deplib" 6380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org %DEPLIBS%) 6385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org alldeplibs=yes 6386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac # case $deplib 6389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$found" = yes || test -f "$lib"; then : 6391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 6393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check to see that this really is a libtool archive. 6396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lalib_unsafe_p "$lib" \ 6397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org || func_fatal_error "\`$lib' is not a valid libtool archive" 6398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$lib" "" "." 6400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ladir="$func_dirname_result" 6401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlname= 6403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlopen= 6404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlpreopen= 6405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libdir= 6406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org library_names= 6407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org old_library= 6408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org inherited_linker_flags= 6409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the library was installed with an old release of libtool, 6410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # it will not redefine variables installed, or shouldnotlink 6411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org installed=yes 6412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shouldnotlink=no 6413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org avoidtemprpath= 6414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Read the .la file 6417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source "$lib" 6418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Convert "-framework foo" to "foo.ltframework" 6420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$inherited_linker_flags"; then 6421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 6422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 6423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $new_inherited_linker_flags " in 6424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $tmp_inherited_linker_flag "*) ;; 6425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 6426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 6430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode,$pass" = "lib,link" || 6431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$linkmode,$pass" = "prog,scan" || 6432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { test "$linkmode" != prog && test "$linkmode" != lib; }; then 6433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$dlopen" && func_append dlfiles " $dlopen" 6434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 6435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = conv; then 6438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Only check for convenience libraries 6439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$lib $deplibs" 6440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$libdir"; then 6441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$old_library"; then 6442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot find name of link library for \`$lib'" 6443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # It is a libtool convenience library, so add in its objects. 6445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append convenience " $ladir/$objdir/$old_library" 6446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append old_convenience " $ladir/$objdir/$old_library" 6447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$linkmode" != prog && test "$linkmode" != lib; then 6448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$lib' is not a convenience library" 6449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_libs= 6451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $dependency_libs; do 6452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $opt_preserve_dup_deps ; then 6454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$tmp_libs " in 6455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append tmp_libs " $deplib" 6459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # $pass = conv 6462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Get the name of the library we link against. 6465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org linklib= 6466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$old_library" && 6467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { test "$prefer_static_libs" = yes || 6468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$prefer_static_libs,$installed" = "built,no"; }; then 6469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org linklib=$old_library 6470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for l in $old_library $library_names; do 6472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org linklib="$l" 6473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$linklib"; then 6476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot find name of link library for \`$lib'" 6477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This library was specified with -dlopen. 6480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = dlopen; then 6481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$libdir"; then 6482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 6483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$dlname" || 6485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$dlopen_support" != yes || 6486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$build_libtool_libs" = no; then 6487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If there is no dlname, no dlopen support or we're linking 6488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # statically, we need to preload. We also need to preload any 6489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # dependent libraries so libltdl's deplib preloader doesn't 6490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # bomb out in the load deplibs phase. 6491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlprefiles " $lib $dependency_libs" 6492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlfiles " $lib" 6494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # $pass = dlopen 6497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We need an absolute path. 6499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $ladir in 6500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 6501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 6502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org abs_ladir=`cd "$ladir" && pwd` 6503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$abs_ladir"; then 6504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "cannot determine absolute directory name of \`$ladir'" 6505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "passing it literally to the linker, although it might fail" 6506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org abs_ladir="$ladir" 6507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$lib" 6511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org laname="$func_basename_result" 6512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Find the relevant object directory and library name. 6514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$installed" = Xyes; then 6515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "library \`$lib' was moved." 6517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir="$ladir" 6518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org absdir="$abs_ladir" 6519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libdir="$abs_ladir" 6520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir="$lt_sysroot$libdir" 6522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org absdir="$lt_sysroot$libdir" 6523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 6525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir="$ladir" 6528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org absdir="$abs_ladir" 6529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove this search path later 6530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append notinst_path " $abs_ladir" 6531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir="$ladir/$objdir" 6533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org absdir="$abs_ladir/$objdir" 6534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove this search path later 6535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append notinst_path " $abs_ladir" 6536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # $installed = yes 6538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname 'lib' '.la' "$laname" 6539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name=$func_stripname_result 6540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This library was specified with -dlpreopen. 6542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = dlpreopen; then 6543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$libdir" && test "$linkmode" = prog; then 6544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 6545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$host" in 6547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # special handling for platforms with PE-DLLs. 6548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | *mingw* | *cegcc* ) 6549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Linker will automatically link against shared library if both 6550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # static and shared are present. Therefore, ensure we extract 6551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # symbols from the import library if a shared library is present 6552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # (otherwise, the dlopen module name will be incorrect). We do 6553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # this by putting the import library name into $newdlprefiles. 6554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We recover the dlopen module name by 'saving' the la file 6555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # name in a special purpose variable, and (later) extracting the 6556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # dlname from the la file. 6557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dlname"; then 6558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_tr_sh "$dir/$linklib" 6559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 6560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlprefiles " $dir/$linklib" 6561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlprefiles " $dir/$old_library" 6563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Keep a list of preopened convenience libraries to check 6564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # that they are being used correctly in the link pass. 6565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$libdir" && \ 6566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlpreconveniencelibs " $dir/$old_library" 6567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org * ) 6570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Prefer using a static library (so that no silly _DYNAMIC symbols 6571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # are required to link). 6572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$old_library"; then 6573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlprefiles " $dir/$old_library" 6574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Keep a list of preopened convenience libraries to check 6575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # that they are being used correctly in the link pass. 6576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$libdir" && \ 6577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dlpreconveniencelibs " $dir/$old_library" 6578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Otherwise, use the dlname, so that lt_dlopen finds it. 6579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -n "$dlname"; then 6580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlprefiles " $dir/$dlname" 6581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlprefiles " $dir/$linklib" 6583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # $pass = dlpreopen 6587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$libdir"; then 6589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Link the convenience library 6590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = lib; then 6591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$dir/$old_library $deplibs" 6592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$linkmode,$pass" = "prog,link"; then 6593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$dir/$old_library $compile_deplibs" 6594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="$dir/$old_library $finalize_deplibs" 6595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$lib $deplibs" # used for prog,scan pass 6597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = prog && test "$pass" != link; then 6603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newlib_search_path " $ladir" 6604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$lib $deplibs" 6605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org linkalldeplibs=no 6607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$link_all_deplibs" != no || test -z "$library_names" || 6608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$build_libtool_libs" = no; then 6609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org linkalldeplibs=yes 6610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_libs= 6613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $dependency_libs; do 6614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplib in 6615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L*) func_stripname '-L' '' "$deplib" 6616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$func_stripname_result" 6617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newlib_search_path " $func_resolve_sysroot_result" 6618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Need to link against all dependency_libs? 6621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkalldeplibs" = yes; then 6622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 6623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Need to hardcode shared library paths 6625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # or/and link against static libraries 6626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdependency_libs="$deplib $newdependency_libs" 6627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $opt_preserve_dup_deps ; then 6629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$tmp_libs " in 6630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append tmp_libs " $deplib" 6634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done # for deplib 6635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # $linkmode = prog... 6637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode,$pass" = "prog,link"; then 6639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$library_names" && 6640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { { test "$prefer_static_libs" = no || 6641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$prefer_static_libs,$installed" = "built,yes"; } || 6642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$old_library"; }; then 6643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We need to hardcode the library path 6644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 6645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make sure the rpath contains only unique directories. 6646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$temp_rpath:" in 6647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *"$absdir:"*) ;; 6648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append temp_rpath "$absdir:" ;; 6649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Hardcode the library path. 6653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Skip directories that are in the system default run-time 6654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # search path. 6655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $sys_lib_dlsearch_path " in 6656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $absdir "*) ;; 6657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 6658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$compile_rpath " in 6659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $absdir "*) ;; 6660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append compile_rpath " $absdir" ;; 6661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $sys_lib_dlsearch_path " in 6665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 6666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 6667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$finalize_rpath " in 6668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 6669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append finalize_rpath " $libdir" ;; 6670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # $linkmode,$pass = prog,link... 6674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$alldeplibs" = yes && 6676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { test "$deplibs_check_method" = pass_all || 6677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { test "$build_libtool_libs" = yes && 6678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$library_names"; }; }; then 6679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We only need to search for static libraries 6680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 6681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link_static=no # Whether the deplib will be linked statically 6685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org use_static_libs=$prefer_static_libs 6686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$use_static_libs" = built && test "$installed" = yes; then 6687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org use_static_libs=no 6688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$library_names" && 6690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { test "$use_static_libs" = no || test -z "$old_library"; }; then 6691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 6692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | *mingw* | *cegcc*) 6693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # No point in relinking DLLs because paths are not encoded 6694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append notinst_deplibs " $lib" 6695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org need_relink=no 6696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 6698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$installed" = no; then 6699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append notinst_deplibs " $lib" 6700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org need_relink=yes 6701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This is a shared library 6705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Warn about portability, can't link against -module's on some 6707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # systems (darwin). Don't bleat about dlopened modules though! 6708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlopenmodule="" 6709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for dlpremoduletest in $dlprefiles; do 6710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$dlpremoduletest" = "X$lib"; then 6711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlopenmodule="$dlpremoduletest" 6712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 6713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 6715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 6716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 6717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = prog; then 6718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: Linking the executable $output against the loadable module" 6719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: Linking the shared library $output against the loadable module" 6721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** $linklib is not portable!" 6723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = lib && 6725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$hardcode_into_libs" = yes; then 6726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Hardcode the library path. 6727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Skip directories that are in the system default run-time 6728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # search path. 6729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $sys_lib_dlsearch_path " in 6730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $absdir "*) ;; 6731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 6732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$compile_rpath " in 6733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $absdir "*) ;; 6734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append compile_rpath " $absdir" ;; 6735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $sys_lib_dlsearch_path " in 6739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 6740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 6741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$finalize_rpath " in 6742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 6743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append finalize_rpath " $libdir" ;; 6744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$old_archive_from_expsyms_cmds"; then 6750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # figure out the soname 6751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $library_names 6752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 6753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org realname="$1" 6754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 6755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libname=`eval "\\$ECHO \"$libname_spec\""` 6756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # use dlname if we got it. it's perfectly good, no? 6757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dlname"; then 6758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org soname="$dlname" 6759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -n "$soname_spec"; then 6760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # bleh windows 6761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 6762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | mingw* | *cegcc*) 6763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $current - $age 6764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=$func_arith_result 6765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix="-$major" 6766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval soname=\"$soname_spec\" 6769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org soname="$realname" 6771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make a new name for the extract_expsyms_cmds to use 6774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org soroot="$soname" 6775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$soroot" 6776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org soname="$func_basename_result" 6777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname 'lib' '.dll' "$soname" 6778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newlib=libimp-$func_stripname_result.a 6779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the library has no export list, then create one now 6781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$output_objdir/$soname-def"; then : 6782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "extracting exported symbol list from \`$soname'" 6784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 6785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Create $newlib 6788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$output_objdir/$newlib"; then :; else 6789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "generating import library for \`$soname'" 6790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 6791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # make sure the library variables are pointing to the new library 6793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir=$output_objdir 6794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org linklib=$newlib 6795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # test -n "$old_archive_from_expsyms_cmds" 6796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = prog || test "$opt_mode" != relink; then 6798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add_shlibpath= 6799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add_dir= 6800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add= 6801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib_linked=yes 6802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $hardcode_action in 6803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org immediate | unsupported) 6804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$hardcode_direct" = no; then 6805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="$dir/$linklib" 6806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 6807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 6808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-sysv4*uw2*) add_dir="-L$dir" ;; 6809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 6810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-unixware7*) add_dir="-L$dir" ;; 6811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-darwin* ) 6812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # if the lib is a (non-dlopened) module then we can not 6813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # link against it, someone is ignoring the earlier warnings 6814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if /usr/bin/file -L $add 2> /dev/null | 6815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $GREP ": [^:]* bundle" >/dev/null ; then 6816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$dlopenmodule" != "X$lib"; then 6817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: lib $linklib is a module, not a shared library" 6818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$old_library" ; then 6819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 6820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** And there doesn't seem to be a static archive available" 6821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** The link will probably fail, sorry" 6822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="$dir/$old_library" 6824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -n "$old_library"; then 6826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="$dir/$old_library" 6827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$hardcode_minus_L" = no; then 6831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 6832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-sunos*) add_shlibpath="$dir" ;; 6833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add_dir="-L$dir" 6835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="-l$name" 6836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$hardcode_shlibpath_var" = no; then 6837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add_shlibpath="$dir" 6838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="-l$name" 6839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib_linked=no 6841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink) 6844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$hardcode_direct" = yes && 6845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$hardcode_direct_absolute" = no; then 6846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="$dir/$linklib" 6847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$hardcode_minus_L" = yes; then 6848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add_dir="-L$absdir" 6849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Try looking first in the location we're being installed to. 6850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$inst_prefix_dir"; then 6851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $libdir in 6852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]*) 6853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append add_dir " -L$inst_prefix_dir$libdir" 6854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="-l$name" 6858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$hardcode_shlibpath_var" = yes; then 6859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add_shlibpath="$dir" 6860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="-l$name" 6861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib_linked=no 6863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) lib_linked=no ;; 6866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$lib_linked" != yes; then 6869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_configuration "unsupported hardcode properties" 6870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$add_shlibpath"; then 6873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case :$compile_shlibpath: in 6874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *":$add_shlibpath:"*) ;; 6875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append compile_shlibpath "$add_shlibpath:" ;; 6876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = prog; then 6879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 6880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$add" && compile_deplibs="$add $compile_deplibs" 6881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$add_dir" && deplibs="$add_dir $deplibs" 6883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$add" && deplibs="$add $deplibs" 6884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$hardcode_direct" != yes && 6885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$hardcode_minus_L" != yes && 6886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$hardcode_shlibpath_var" = yes; then 6887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case :$finalize_shlibpath: in 6888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *":$libdir:"*) ;; 6889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append finalize_shlibpath "$libdir:" ;; 6890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = prog || test "$opt_mode" = relink; then 6896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add_shlibpath= 6897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add_dir= 6898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add= 6899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Finalize command for both is simple: just hardcode it. 6900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$hardcode_direct" = yes && 6901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$hardcode_direct_absolute" = no; then 6902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="$libdir/$linklib" 6903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$hardcode_minus_L" = yes; then 6904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add_dir="-L$libdir" 6905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="-l$name" 6906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$hardcode_shlibpath_var" = yes; then 6907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case :$finalize_shlibpath: in 6908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *":$libdir:"*) ;; 6909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append finalize_shlibpath "$libdir:" ;; 6910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="-l$name" 6912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$hardcode_automatic" = yes; then 6913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$inst_prefix_dir" && 6914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -f "$inst_prefix_dir$libdir/$linklib" ; then 6915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="$inst_prefix_dir$libdir/$linklib" 6916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="$libdir/$linklib" 6918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We cannot seem to hardcode it, guess we'll fake it. 6921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add_dir="-L$libdir" 6922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Try looking first in the location we're being installed to. 6923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$inst_prefix_dir"; then 6924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $libdir in 6925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]*) 6926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append add_dir " -L$inst_prefix_dir$libdir" 6927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 6928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 6929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org add="-l$name" 6931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = prog; then 6934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 6935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 6936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$add_dir" && deplibs="$add_dir $deplibs" 6938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$add" && deplibs="$add $deplibs" 6939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$linkmode" = prog; then 6942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Here we assume that one of hardcode_direct or hardcode_minus_L 6943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # is not unsupported. This is valid on all known static and 6944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # shared platforms. 6945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$hardcode_direct" != unsupported; then 6946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$old_library" && linklib="$old_library" 6947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$dir/$linklib $compile_deplibs" 6948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="$dir/$linklib $finalize_deplibs" 6949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="-l$name -L$dir $compile_deplibs" 6951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="-l$name -L$dir $finalize_deplibs" 6952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$build_libtool_libs" = yes; then 6954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Not a shared library 6955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$deplibs_check_method" != pass_all; then 6956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We're trying link a shared library against a static one 6957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # but the system doesn't support it. 6958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Just print a warning and add the library to dependency_libs so 6960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # that the program can be linked against the static library. 6961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 6962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: This system can not link to static lib archive $lib." 6963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** I have the capability to make that library automatically link in when" 6964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** you link to this library. But I can only do this if you have a" 6965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** shared version of the library, which you do not appear to have." 6966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$module" = yes; then 6967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** But as you try to build a module library, libtool will still create " 6968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** a static module, that should work as long as the dlopening application" 6969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 6970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$global_symbol_pipe"; then 6971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 6972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** However, this would only work if libtool was able to extract symbol" 6973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 6974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** not find such a program. So, this module is probably useless." 6975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** \`nm' from GNU binutils and a full rebuild may help." 6976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_old_libs" = no; then 6978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=module 6979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_old_libs=yes 6980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=no 6982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 6985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$dir/$old_library $deplibs" 6986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link_static=yes 6987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 6988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # link shared/static library? 6989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 6990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = lib; then 6991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dependency_libs" && 6992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { test "$hardcode_into_libs" != yes || 6993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$build_old_libs" = yes || 6994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$link_static" = yes; }; then 6995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Extract -R from dependency_libs 6996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org temp_deplibs= 6997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for libdir in $dependency_libs; do 6998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $libdir in 6999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -R*) func_stripname '-R' '' "$libdir" 7000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org temp_xrpath=$func_stripname_result 7001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $xrpath " in 7002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $temp_xrpath "*) ;; 7003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append xrpath " $temp_xrpath";; 7004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac;; 7005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append temp_deplibs " $libdir";; 7006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dependency_libs="$temp_deplibs" 7009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newlib_search_path " $absdir" 7012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Link against this library 7013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 7014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # ... and its dependency_libs 7015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_libs= 7016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $dependency_libs; do 7017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdependency_libs="$deplib $newdependency_libs" 7018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplib in 7019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L*) func_stripname '-L' '' "$deplib" 7020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$func_stripname_result";; 7021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_resolve_sysroot "$deplib" ;; 7022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $opt_preserve_dup_deps ; then 7024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$tmp_libs " in 7025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $func_resolve_sysroot_result "*) 7026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append specialdeplibs " $func_resolve_sysroot_result" ;; 7027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append tmp_libs " $func_resolve_sysroot_result" 7030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$link_all_deplibs" != no; then 7033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add the search paths of all dependency libraries 7034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $dependency_libs; do 7035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org path= 7036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplib in 7037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L*) path="$deplib" ;; 7038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) 7039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$deplib" 7040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplib=$func_resolve_sysroot_result 7041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$deplib" "" "." 7042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir=$func_dirname_result 7043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We need an absolute path. 7044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $dir in 7045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 7046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org absdir=`cd "$dir" && pwd` 7048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$absdir"; then 7049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "cannot determine absolute directory name of \`$dir'" 7050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org absdir="$dir" 7051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $GREP "^installed=no" $deplib > /dev/null; then 7055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 7056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-darwin*) 7057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org depdepl= 7058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 7059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$deplibrary_names" ; then 7060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for tmp in $deplibrary_names ; do 7061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org depdepl=$tmp 7062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$absdir/$objdir/$depdepl" ; then 7064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org depdepl="$absdir/$objdir/$depdepl" 7065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$darwin_install_name"; then 7067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 7070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 7071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org path= 7072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org path="-L$absdir/$objdir" 7077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 7081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$libdir" && \ 7082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$deplib' is not a valid libtool archive" 7083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$absdir" != "$libdir" && \ 7084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`$deplib' seems to be moved" 7085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org path="-L$absdir" 7087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $deplibs " in 7091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $path "*) ;; 7092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) deplibs="$path $deplibs" ;; 7093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # link_all_deplibs != no 7096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi # linkmode = lib 7097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done # for deplib in $libs 7098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = link; then 7099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = "prog"; then 7100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 7101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 7102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dependency_libs="$newdependency_libs" 7107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" = dlpreopen; then 7108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Link the dlpreopened libraries before other libraries 7109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $save_deplibs; do 7110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$deplib $deplibs" 7111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" != dlopen; then 7114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$pass" != conv; then 7115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make sure lib_search_path contains only unique directories. 7116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib_search_path= 7117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for dir in $newlib_search_path; do 7118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$lib_search_path " in 7119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $dir "*) ;; 7120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append lib_search_path " $dir" ;; 7121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newlib_search_path= 7124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode,$pass" != "prog,link"; then 7127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org vars="deplibs" 7128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org vars="compile_deplibs finalize_deplibs" 7130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for var in $vars dependency_libs; do 7132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add libraries to $var in reverse order 7133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval tmp_libs=\"\$$var\" 7134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_libs= 7135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $tmp_libs; do 7136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # FIXME: Pedantically, this is the right thing to do, so 7137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # that some nasty dependency loop isn't accidentally 7138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # broken: 7139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org #new_libs="$deplib $new_libs" 7140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Pragmatically, this seems to cause very few problems in 7141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # practice: 7142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplib in 7143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L*) new_libs="$deplib $new_libs" ;; 7144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -R*) ;; 7145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # And here is the reason: when a library appears more 7147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # than once as an explicit dependence of a library, or 7148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # is implicitly linked in more than once by the 7149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # compiler, it is considered special, and multiple 7150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # occurrences thereof are not removed. Compare this 7151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # with having the same library being listed as a 7152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # dependency of multiple other libraries: in this case, 7153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # we know (pedantically, we assume) the library does not 7154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # need to be listed more than once, so we keep only the 7155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # last copy. This is not always right, but it is rare 7156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # enough that we require users that really mean to play 7157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # such unportable linking tricks to link the library 7158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # using -Wl,-lname, so that libtool does not consider it 7159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # for duplicate removal. 7160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $specialdeplibs " in 7161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) new_libs="$deplib $new_libs" ;; 7162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $new_libs " in 7164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) ;; 7165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) new_libs="$deplib $new_libs" ;; 7166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_libs= 7173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $new_libs; do 7174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplib in 7175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L*) 7176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $tmp_libs " in 7177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) ;; 7178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append tmp_libs " $deplib" ;; 7179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append tmp_libs " $deplib" ;; 7182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval $var=\"$tmp_libs\" 7185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done # for var 7186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Last step: remove runtime libs from dependency_libs 7188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # (they stay in deplibs) 7189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_libs= 7190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for i in $dependency_libs ; do 7191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $predeps $postdeps $compiler_lib_search_path " in 7192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $i "*) 7193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org i="" 7194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$i" ; then 7197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append tmp_libs " $i" 7198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dependency_libs=$tmp_libs 7201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done # for pass 7202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = prog; then 7203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlfiles="$newdlfiles" 7204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$linkmode" = prog || test "$linkmode" = lib; then 7206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlprefiles="$newdlprefiles" 7207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $linkmode in 7210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldlib) 7211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-dlopen' is ignored for archives" 7213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $deplibs" in 7216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *\ -l* | *\ -L*) 7217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-l' and \`-L' are ignored for archives" ;; 7218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$rpath" && \ 7221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-rpath' is ignored for archives" 7222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$xrpath" && \ 7224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-R' is ignored for archives" 7225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$vinfo" && \ 7227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-version-info/-version-number' is ignored for archives" 7228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$release" && \ 7230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-release' is ignored for archives" 7231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$export_symbols$export_symbols_regex" && \ 7233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-export-symbols' is ignored for archives" 7234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now set the variables for building old libraries. 7236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=no 7237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldlibs="$output" 7238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append objs "$old_deplibs" 7239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib) 7242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make sure we only generate libraries of the form `libNAME.la'. 7243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $outputname in 7244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib*) 7245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname 'lib' '.la' "$outputname" 7246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name=$func_stripname_result 7247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval shared_ext=\"$shrext_cmds\" 7248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval libname=\"$libname_spec\" 7249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$module" = no && \ 7252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "libtool library \`$output' must begin with \`lib'" 7253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$need_lib_prefix" != no; then 7255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add the "lib" prefix for modules if required 7256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '.la' "$outputname" 7257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name=$func_stripname_result 7258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval shared_ext=\"$shrext_cmds\" 7259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval libname=\"$libname_spec\" 7260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '.la' "$outputname" 7262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libname=$func_stripname_result 7263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$objs"; then 7268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$deplibs_check_method" != pass_all; then 7269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 7270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 7272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 7273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** objects $objs is not portable!" 7274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libobjs " $objs" 7275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$dlself" != no && \ 7279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-dlopen self' is ignored for libtool libraries" 7280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $rpath 7282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 7283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$#" -gt 1 && \ 7284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "ignoring multiple \`-rpath's for a libtool library" 7285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org install_libdir="$1" 7287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldlibs= 7289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$rpath"; then 7290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = yes; then 7291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Building a libtool convenience library. 7292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Some compilers have problems with a `.al' extension so 7293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # convenience libraries should have the same extension an 7294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # archive normally would. 7295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldlibs="$output_objdir/$libname.$libext $oldlibs" 7296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=convenience 7297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_old_libs=yes 7298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$vinfo" && \ 7301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 7302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$release" && \ 7304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-release' is ignored for convenience libraries" 7305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Parse the version information argument. 7308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_ifs="$IFS"; IFS=':' 7309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $vinfo 0 0 0 7310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 7311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 7312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$7" && \ 7314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "too many parameters to \`-version-info'" 7315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # convert absolute version numbers to libtool ages 7317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # this retains compatibility with .la files and attempts 7318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # to make the code below a bit more comprehensible 7319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $vinfo_number in 7321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org yes) 7322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org number_major="$1" 7323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org number_minor="$2" 7324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org number_revision="$3" 7325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # 7326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # There are really only two kinds -- those that 7327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # use the current revision as the major version 7328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # and those that subtract age and use age as 7329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # a minor version. But, then there is irix 7330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # which has an extra 1 added just for fun 7331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # 7332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $version_type in 7333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # correct linux to gnu/linux during the next big refactor 7334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin|linux|osf|windows|none) 7335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $number_major + $number_minor 7336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org current=$func_arith_result 7337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org age="$number_minor" 7338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org revision="$number_revision" 7339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org freebsd-aout|freebsd-elf|qnx|sunos) 7341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org current="$number_major" 7342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org revision="$number_minor" 7343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org age="0" 7344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org irix|nonstopux) 7346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $number_major + $number_minor 7347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org current=$func_arith_result 7348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org age="$number_minor" 7349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org revision="$number_minor" 7350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_irix_increment=no 7351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org no) 7355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org current="$1" 7356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org revision="$2" 7357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org age="$3" 7358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check that each of the things are valid numbers. 7362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $current in 7363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 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]) ;; 7364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "CURRENT \`$current' must be a nonnegative integer" 7366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$vinfo' is not valid version information" 7367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $revision in 7371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 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]) ;; 7372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "REVISION \`$revision' must be a nonnegative integer" 7374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$vinfo' is not valid version information" 7375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $age in 7379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 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]) ;; 7380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "AGE \`$age' must be a nonnegative integer" 7382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$vinfo' is not valid version information" 7383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$age" -gt "$current"; then 7387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_error "AGE \`$age' is greater than the current interface number \`$current'" 7388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$vinfo' is not valid version information" 7389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Calculate the version variables. 7392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major= 7393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix= 7394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org verstring= 7395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $version_type in 7396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org none) ;; 7397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin) 7399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Like Linux, but with the current version available in 7400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # verstring for coding it into the library header 7401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $current - $age 7402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=.$func_arith_result 7403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix="$major.$age.$revision" 7404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Darwin ld doesn't like 0 for these options... 7405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $current + 1 7406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org minor_current=$func_arith_result 7407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 7408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 7409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org freebsd-aout) 7412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=".$current" 7413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix=".$current.$revision"; 7414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org freebsd-elf) 7417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=".$current" 7418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix=".$current" 7419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org irix | nonstopux) 7422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$lt_irix_increment" = "Xno"; then 7423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $current - $age 7424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $current - $age + 1 7426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=$func_arith_result 7428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $version_type in 7430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org nonstopux) verstring_prefix=nonstopux ;; 7431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) verstring_prefix=sgi ;; 7432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org verstring="$verstring_prefix$major.$revision" 7434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add in all the interfaces that we are compatible with. 7436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org loop=$revision 7437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while test "$loop" -ne 0; do 7438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $revision - $loop 7439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org iface=$func_arith_result 7440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $loop - 1 7441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org loop=$func_arith_result 7442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org verstring="$verstring_prefix$major.$iface:$verstring" 7443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Before this point, $major must not contain `.'. 7446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=.$major 7447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix="$major.$revision" 7448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org linux) # correct to gnu/linux during the next big refactor 7451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $current - $age 7452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=.$func_arith_result 7453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix="$major.$age.$revision" 7454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org osf) 7457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $current - $age 7458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=.$func_arith_result 7459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix=".$current.$age.$revision" 7460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org verstring="$current.$age.$revision" 7461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add in all the interfaces that we are compatible with. 7463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org loop=$age 7464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while test "$loop" -ne 0; do 7465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $current - $loop 7466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org iface=$func_arith_result 7467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $loop - 1 7468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org loop=$func_arith_result 7469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org verstring="$verstring:${iface}.0" 7470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make executables depend on our current version. 7473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append verstring ":${current}.0" 7474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org qnx) 7477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=".$current" 7478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix=".$current" 7479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org sunos) 7482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=".$current" 7483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix=".$current.$revision" 7484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org windows) 7487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Use '-' rather than '.', since we only want one 7488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # extension on DOS 8.3 filesystems. 7489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $current - $age 7490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=$func_arith_result 7491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix="-$major" 7492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_configuration "unknown library version type \`$version_type'" 7496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Clear the version info if we defaulted, and they specified a release. 7500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$vinfo" && test -n "$release"; then 7501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major= 7502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $version_type in 7503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org darwin) 7504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # we can't check for "0.0" in archive_cmds due to quoting 7505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # problems, so we reset it completely 7506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org verstring= 7507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org verstring="0.0" 7510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$need_version" = no; then 7513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix= 7514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix=".0.0" 7516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove version info from name if versioning should be avoided 7520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$avoid_version" = yes && test "$need_version" = no; then 7521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major= 7522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix= 7523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org verstring="" 7524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Check to see if the archive will have undefined symbols. 7527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$allow_undefined" = yes; then 7528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$allow_undefined_flag" = unsupported; then 7529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "undefined symbols not allowed in $host shared libraries" 7530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=no 7531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_old_libs=yes 7532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Don't allow undefined symbols. 7535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org allow_undefined_flag="$no_undefined_flag" 7536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_generate_dlsyms "$libname" "$libname" "yes" 7541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libobjs " $symfileobj" 7542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$libobjs" = "X " && libobjs= 7543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$opt_mode" != relink; then 7545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove our outputs, but don't remove object files since they 7546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # may have been created when compiling PIC objects. 7547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org removelist= 7548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tempremovelist=`$ECHO "$output_objdir/*"` 7549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for p in $tempremovelist; do 7550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $p in 7551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.$objext | *.gcno) 7552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 7554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$precious_files_regex" != "X"; then 7555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 7556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org then 7557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 7558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append removelist " $p" 7561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) ;; 7563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$removelist" && \ 7566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "${RM}r \$removelist" 7567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now set the variables for building old libraries. 7570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 7571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append oldlibs " $output_objdir/$libname.$libext" 7572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Transform .lo files to .o files. 7574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 7575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Eliminate all temporary directories. 7578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org #for path in $notinst_path; do 7579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 7580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 7581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 7582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org #done 7583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$xrpath"; then 7585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the user specified any rpath flags, then add them. 7586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org temp_xrpath= 7587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for libdir in $xrpath; do 7588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_replace_sysroot "$libdir" 7589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append temp_xrpath " -R$func_replace_sysroot_result" 7590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$finalize_rpath " in 7591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 7592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append finalize_rpath " $libdir" ;; 7593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 7596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dependency_libs="$temp_xrpath $dependency_libs" 7597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make sure dlfiles contains only unique files that won't be dlpreopened 7601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org old_dlfiles="$dlfiles" 7602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlfiles= 7603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lib in $old_dlfiles; do 7604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $dlprefiles $dlfiles " in 7605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $lib "*) ;; 7606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append dlfiles " $lib" ;; 7607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make sure dlprefiles contains only unique files 7611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org old_dlprefiles="$dlprefiles" 7612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlprefiles= 7613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lib in $old_dlprefiles; do 7614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$dlprefiles " in 7615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $lib "*) ;; 7616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append dlprefiles " $lib" ;; 7617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = yes; then 7621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$rpath"; then 7622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 7623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 7624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # these systems don't actually have a c library (as such)! 7625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-rhapsody* | *-*-darwin1.[012]) 7627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Rhapsody C library is in the System framework 7628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append deplibs " System.ltframework" 7629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-netbsd*) 7631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Don't link with libc until the a.out ld.so is fixed. 7632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 7634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do not include libc due to us having libc/libc_r. 7635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-sco3.2v5* | *-*-sco5v6*) 7637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Causes problems with __ctype 7638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 7640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Compiler inserts libc in the correct place for threads to work 7641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add libc to deplibs on all other systems if necessary. 7644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_need_lc" = "yes"; then 7645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append deplibs " -lc" 7646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Transform deplibs into only deplibs that can be linked in shared. 7652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name_save=$name 7653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libname_save=$libname 7654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org release_save=$release 7655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix_save=$versuffix 7656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major_save=$major 7657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # I'm not sure if I'm treating the release correctly. I think 7658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # release should show up in the -l (ie -lgmp5) so we don't want to 7659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # add it in twice. Is that correct? 7660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org release="" 7661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix="" 7662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major="" 7663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdeplibs= 7664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org droppeddeps=no 7665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplibs_check_method in 7666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org pass_all) 7667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Don't check for shared/static. Everything works. 7668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This might be a little naive. We might want to check 7669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # whether the library exists or not. But this is on 7670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # osf3 & osf4 and I'm not really sure... Just 7671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # implementing what was already the behavior. 7672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdeplibs=$deplibs 7673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test_compile) 7675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This code stresses the "libraries are programs" paradigm to its 7676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # limits. Maybe even breaks it. We compile a program, linking it 7677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # against the deplibs as a proxy for the library. Then we can check 7678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # whether they linked in statically or dynamically with ldd. 7679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM conftest.c 7680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cat > conftest.c <<EOF 7681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org int main() { return 0; } 7682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgEOF 7683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM conftest 7684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 7685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ldd_output=`ldd conftest` 7686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for i in $deplibs; do 7687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $i in 7688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -l*) 7689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname -l '' "$i" 7690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name=$func_stripname_result 7691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $predeps $postdeps " in 7693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $i "*) 7694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $i" 7695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org i="" 7696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$i" ; then 7700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libname=`eval "\\$ECHO \"$libname_spec\""` 7701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $deplib_matches; shift 7703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplib_match=$1 7704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $i" 7706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org droppeddeps=yes 7708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 7709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** I have the capability to make that library automatically link in when" 7711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** you link to this library. But I can only do this if you have a" 7712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** shared version of the library, which I believe you do not have" 7713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** because a test_compile did reveal that the linker did not use it for" 7714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** its dynamic dependency list that programs get resolved with at runtime." 7715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $i" 7720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Error occurred in the first compile. Let's try to salvage 7725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the situation: Compile a separate program for each library. 7726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for i in $deplibs; do 7727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $i in 7728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -l*) 7729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname -l '' "$i" 7730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name=$func_stripname_result 7731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM conftest 7732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 7733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ldd_output=`ldd conftest` 7734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $predeps $postdeps " in 7736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $i "*) 7737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $i" 7738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org i="" 7739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$i" ; then 7743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libname=`eval "\\$ECHO \"$libname_spec\""` 7744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $deplib_matches; shift 7746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplib_match=$1 7747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $i" 7749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org droppeddeps=yes 7751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 7752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** I have the capability to make that library automatically link in when" 7754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** you link to this library. But I can only do this if you have a" 7755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** shared version of the library, which you do not appear to have" 7756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** because a test_compile did reveal that the linker did not use this one" 7757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** as a dynamic dependency that programs can get resolved with at runtime." 7758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org droppeddeps=yes 7762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 7763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 7764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** make it link in! You will probably need to install it or some" 7765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** library that it depends on before this library will be fully" 7766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** functional. Installing it before continuing would be even better." 7767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $i" 7771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file_magic*) 7777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $deplibs_check_method; shift 7778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for a_deplib in $deplibs; do 7780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $a_deplib in 7781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -l*) 7782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname -l '' "$a_deplib" 7783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name=$func_stripname_result 7784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $predeps $postdeps " in 7786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $a_deplib "*) 7787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $a_deplib" 7788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org a_deplib="" 7789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$a_deplib" ; then 7793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libname=`eval "\\$ECHO \"$libname_spec\""` 7794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$file_magic_glob"; then 7795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 7796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libnameglob=$libname 7798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 7800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$want_nocaseglob" = yes; then 7802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shopt -s nocaseglob 7803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $nocaseglob 7805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for potent_lib in $potential_libs; do 7809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Follow soft links. 7810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ls -lLd "$potent_lib" 2>/dev/null | 7811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $GREP " -> " >/dev/null; then 7812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 7813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The statement above tries to avoid entering an 7815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # endless loop below, in case of cyclic links. 7816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We might still enter an endless loop, since a link 7817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # loop can be closed while we follow links, 7818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # but so what? 7819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org potlib="$potent_lib" 7820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while test -h "$potlib" 2>/dev/null; do 7821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 7822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $potliblink in 7823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 7824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 7825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 7828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $SED -e 10q | 7829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $EGREP "$file_magic_regex" > /dev/null; then 7830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $a_deplib" 7831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org a_deplib="" 7832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 2 7833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$a_deplib" ; then 7838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org droppeddeps=yes 7839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 7840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** I have the capability to make that library automatically link in when" 7842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** you link to this library. But I can only do this if you have a" 7843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** shared version of the library, which you do not appear to have" 7844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** because I did check the linker path looking for a file starting" 7845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$potlib" ; then 7846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 7847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** with $libname and none of the candidates passed a file format test" 7849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** using a file magic. Last file checked: $potlib" 7850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add a -L argument. 7855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $a_deplib" 7856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done # Gone through all deplibs. 7859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org match_pattern*) 7861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $deplibs_check_method; shift 7862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for a_deplib in $deplibs; do 7864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $a_deplib in 7865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -l*) 7866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname -l '' "$a_deplib" 7867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name=$func_stripname_result 7868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $predeps $postdeps " in 7870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $a_deplib "*) 7871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $a_deplib" 7872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org a_deplib="" 7873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$a_deplib" ; then 7877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libname=`eval "\\$ECHO \"$libname_spec\""` 7878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 7880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for potent_lib in $potential_libs; do 7881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org potlib="$potent_lib" # see symlink-check above in file_magic test 7882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 7883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $EGREP "$match_pattern_regex" > /dev/null; then 7884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $a_deplib" 7885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org a_deplib="" 7886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 2 7887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$a_deplib" ; then 7892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org droppeddeps=yes 7893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 7894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** I have the capability to make that library automatically link in when" 7896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** you link to this library. But I can only do this if you have a" 7897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** shared version of the library, which you do not appear to have" 7898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** because I did check the linker path looking for a file starting" 7899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$potlib" ; then 7900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 7901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** with $libname and none of the candidates passed a file format test" 7903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** using a regex pattern. Last file checked: $potlib" 7904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 7908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add a -L argument. 7909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdeplibs " $a_deplib" 7910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done # Gone through all deplibs. 7913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org none | unknown | *) 7915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdeplibs="" 7916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 7917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for i in $predeps $postdeps ; do 7919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # can't use Xsed below, because $i might contain '/' 7920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 7921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 7922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $tmp_deplibs in 7924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[!\ \ ]*) 7925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 7926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$deplibs_check_method" = "Xnone"; then 7927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** Warning: inter-library dependencies are not supported in this platform." 7928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** Warning: inter-library dependencies are not known to be supported." 7930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** All declared inter-library dependencies are being dropped." 7932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org droppeddeps=yes 7933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org versuffix=$versuffix_save 7938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org major=$major_save 7939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org release=$release_save 7940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libname=$libname_save 7941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name=$name_save 7942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 7944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-rhapsody* | *-*-darwin1.[012]) 7945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # On Rhapsody replace the C library with the System framework 7946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 7947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 7948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 7949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$droppeddeps" = yes; then 7951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$module" = yes; then 7952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 7953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** Warning: libtool could not satisfy all declared inter-library" 7954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 7955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** a static module, that should work as long as the dlopening" 7956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** application is linked with the -dlopen flag." 7957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$global_symbol_pipe"; then 7958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 7959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** However, this would only work if libtool was able to extract symbol" 7960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 7961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** not find such a program. So, this module is probably useless." 7962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** \`nm' from GNU binutils and a full rebuild may help." 7963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_old_libs" = no; then 7965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldlibs="$output_objdir/$libname.$libext" 7966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=module 7967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_old_libs=yes 7968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=no 7970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** The inter-library dependencies that have been dropped here will be" 7973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** automatically added whenever a program is linked with this library" 7974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** or is declared to -dlopen it." 7975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 7976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$allow_undefined" = no; then 7977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 7978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** Since this library must not contain undefined symbols," 7979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** because either the platform does not support them or" 7980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** it was explicitly requested with -no-undefined," 7981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "*** libtool will only create a static version of it." 7982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_old_libs" = no; then 7983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldlibs="$output_objdir/$libname.$libext" 7984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=module 7985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_old_libs=yes 7986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 7987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=no 7988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Done checking deplibs! 7993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs=$newdeplibs 7994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 7995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Time to change all our "foo.ltframework" stuff back to "-framework foo" 7996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 7997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-darwin*) 7998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # move library search paths that coincide with paths to not yet 8005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # installed libraries to the beginning of the library search list 8006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_libs= 8007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for path in $notinst_path; do 8008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $new_libs " in 8009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" -L$path/$objdir "*) ;; 8010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 8011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $deplibs " in 8012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" -L$path/$objdir "*) 8013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append new_libs " -L$path/$objdir" ;; 8014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $deplibs; do 8019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplib in 8020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L*) 8021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $new_libs " in 8022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) ;; 8023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append new_libs " $deplib" ;; 8024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append new_libs " $deplib" ;; 8027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$new_libs" 8030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # All the library-specific variables (install_libdir is set above). 8032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org library_names= 8033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org old_library= 8034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlname= 8035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Test again, we may have decided not to build it any more 8037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = yes; then 8038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remove ${wl} instances when linking with ld. 8039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # FIXME: should test the right _cmds variable. 8040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $archive_cmds in 8041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *\$LD\ *) wl= ;; 8042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$hardcode_into_libs" = yes; then 8044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Hardcode the library paths 8045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org hardcode_libdirs= 8046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dep_rpath= 8047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rpath="$finalize_rpath" 8048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 8049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for libdir in $rpath; do 8050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$hardcode_libdir_flag_spec"; then 8051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$hardcode_libdir_separator"; then 8052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_replace_sysroot "$libdir" 8053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libdir=$func_replace_sysroot_result 8054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$hardcode_libdirs"; then 8055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org hardcode_libdirs="$libdir" 8056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Just accumulate the unique libdirs. 8058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 8062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval flag=\"$hardcode_libdir_flag_spec\" 8068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append dep_rpath " $flag" 8069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -n "$runpath_var"; then 8071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$perm_rpath " in 8072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 8073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append perm_rpath " $libdir" ;; 8074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Substitute the hardcoded libdirs into the rpath. 8078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$hardcode_libdir_separator" && 8079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$hardcode_libdirs"; then 8080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libdir="$hardcode_libdirs" 8081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 8082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$runpath_var" && test -n "$perm_rpath"; then 8084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We should set the runpath_var. 8085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rpath= 8086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for dir in $perm_rpath; do 8087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rpath "$dir:" 8088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 8090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 8092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shlibpath="$finalize_shlibpath" 8095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 8096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$shlibpath"; then 8097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 8098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Get the real and link names of the library. 8101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval shared_ext=\"$shrext_cmds\" 8102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval library_names=\"$library_names_spec\" 8103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set dummy $library_names 8104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 8105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org realname="$1" 8106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 8107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$soname_spec"; then 8109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval soname=\"$soname_spec\" 8110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org soname="$realname" 8112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$dlname"; then 8114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlname=$soname 8115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lib="$output_objdir/$realname" 8118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org linknames= 8119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for link 8120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 8121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append linknames " $link" 8122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Use standard objects if they are pic 8125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 8126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$libobjs" = "X " && libobjs= 8127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org delfiles= 8129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols" && test -n "$include_expsyms"; then 8130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 8131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols="$output_objdir/$libname.uexp" 8132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append delfiles " $export_symbols" 8133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org orig_export_symbols= 8136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host_os in 8137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cygwin* | mingw* | cegcc*) 8138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 8139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # exporting using user supplied symfile 8140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 8141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # and it's NOT already a .def file. Must figure out 8142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # which of the given symbols are data symbols and tag 8143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # them as such. So, trigger use of export_symbols_cmds. 8144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # export_symbols gets reassigned inside the "prepare 8145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the list of exported symbols" if statement, so the 8146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # include_expsyms logic still works. 8147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org orig_export_symbols="$export_symbols" 8148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols= 8149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org always_export_symbols=yes 8150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Prepare the list of exported symbols 8156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$export_symbols"; then 8157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 8158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "generating symbol list for \`$libname.la'" 8159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols="$output_objdir/$libname.exp" 8160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM $export_symbols 8161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$export_symbols_cmds 8162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_ifs="$IFS"; IFS='~' 8163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for cmd1 in $cmds; do 8164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 8165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Take the normal branch if the nm_file_list_spec branch 8166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # doesn't work or if tool conversion is not needed. 8167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $nm_file_list_spec~$to_tool_file_cmd in 8168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 8169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org try_normal_branch=yes 8170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval cmd=\"$cmd1\" 8171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_len " $cmd" 8172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len=$func_len_result 8173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 8175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org try_normal_branch=no 8176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$try_normal_branch" = yes \ 8179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org && { test "$len" -lt "$max_cmd_len" \ 8180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org || test "$max_cmd_len" -le -1; } 8181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org then 8182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$cmd" 'exit $?' 8183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org skipped_export=false 8184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -n "$nm_file_list_spec"; then 8185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$output" 8186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output_la=$func_basename_result 8187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_libobjs=$libobjs 8188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_output=$output 8189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=${output_objdir}/${output_la}.nm 8190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$output" 8191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobjs=$nm_file_list_spec$func_to_tool_file_result 8192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append delfiles " $output" 8193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "creating $NM input file list: $output" 8194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for obj in $save_libobjs; do 8195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$obj" 8196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$func_to_tool_file_result" 8197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done > "$output" 8198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval cmd=\"$cmd1\" 8199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$cmd" 'exit $?' 8200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=$save_output 8201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobjs=$save_libobjs 8202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org skipped_export=false 8203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The command line is too long to execute in one step. 8205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "using reloadable object file for export list..." 8206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org skipped_export=: 8207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Break out early, otherwise skipped_export may be 8208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # set to false by a later but shorter cmd. 8209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 8210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 8213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 8214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols" && test -n "$include_expsyms"; then 8221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_export_symbols="$export_symbols" 8222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 8227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The given exports_symbols file has to be filtered, so filter it. 8228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # FIXME: $output_objdir/$libname.filter potentially contains lots of 8230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # 's' commands which not all seds can handle. GNU sed should be fine 8231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # though. Also, the filter scales superlinearly with the number of 8232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # global variables. join(1) would be nice here, but unfortunately 8233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # isn't a blessed tool. 8234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols=$output_objdir/$libname.def 8237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_deplibs= 8241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for test_deplib in $deplibs; do 8242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $convenience " in 8243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $test_deplib "*) ;; 8244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 8245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append tmp_deplibs " $test_deplib" 8246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org deplibs="$tmp_deplibs" 8250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$convenience"; then 8252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$whole_archive_flag_spec" && 8253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$compiler_needs_object" = yes && 8254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$libobjs"; then 8255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # extract the archives, so we have objects to list. 8256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # TODO: could optimize this to just extract one archive. 8257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org whole_archive_flag_spec= 8258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$whole_archive_flag_spec"; then 8260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_libobjs=$libobjs 8261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$libobjs" = "X " && libobjs= 8263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org gentop="$output_objdir/${outputname}x" 8265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append generated " $gentop" 8266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_extract_archives $gentop $convenience 8268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libobjs " $func_extract_archives_result" 8269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$libobjs" = "X " && libobjs= 8270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 8274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval flag=\"$thread_safe_flag_spec\" 8275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append linker_flags " $flag" 8276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make a backup of the uninstalled library when relinking 8279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$opt_mode" = relink; then 8280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 8281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do each of the archive commands. 8284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$module" = yes && test -n "$module_cmds" ; then 8285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval test_cmds=\"$module_expsym_cmds\" 8287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$module_expsym_cmds 8288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval test_cmds=\"$module_cmds\" 8290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$module_cmds 8291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval test_cmds=\"$archive_expsym_cmds\" 8295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$archive_expsym_cmds 8296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval test_cmds=\"$archive_cmds\" 8298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$archive_cmds 8299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$skipped_export" != "X:" && 8303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_len " $test_cmds" && 8304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len=$func_len_result && 8305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 8306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org : 8307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The command line is too long to link in one step, link piecewise 8309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # or, if using GNU ld and skipped_export is not :, use a linker 8310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # script. 8311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Save the value of $output and $libobjs because we want to 8313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # use them later. If we have whole_archive_flag_spec, we 8314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # want to use save_libobjs as it was before 8315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # whole_archive_flag_spec was expanded, because we can't 8316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # assume the linker understands whole_archive_flag_spec. 8317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This may have to be revisited, in case too many 8318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # convenience libraries get linked in and end up exceeding 8319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the spec. 8320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 8321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_libobjs=$libobjs 8322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_output=$output 8324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$output" 8325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output_la=$func_basename_result 8326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Clear the reloadable object creation command queue and 8328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # initialize k to one. 8329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test_cmds= 8330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org concat_cmds= 8331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org objlist= 8332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org last_robj= 8333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org k=1 8334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 8336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=${output_objdir}/${output_la}.lnkscript 8337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "creating GNU ld script: $output" 8338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo 'INPUT (' > $output 8339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for obj in $save_libobjs 8340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 8341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$obj" 8342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$func_to_tool_file_result" >> $output 8343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo ')' >> $output 8345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append delfiles " $output" 8346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$output" 8347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=$func_to_tool_file_result 8348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 8349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=${output_objdir}/${output_la}.lnk 8350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "creating linker input file list: $output" 8351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org : > $output 8352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org set x $save_libobjs 8353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 8354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org firstobj= 8355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$compiler_needs_object" = yes; then 8356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org firstobj="$1 " 8357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org shift 8358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for obj 8360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 8361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$obj" 8362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$func_to_tool_file_result" >> $output 8363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append delfiles " $output" 8365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$output" 8366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 8367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$save_libobjs"; then 8369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "creating reloadable object files..." 8370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=$output_objdir/$output_la-${k}.$objext 8371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval test_cmds=\"$reload_cmds\" 8372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_len " $test_cmds" 8373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len0=$func_len_result 8374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len=$len0 8375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Loop over the list of objects to be linked. 8377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for obj in $save_libobjs 8378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 8379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_len " $obj" 8380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $len + $func_len_result 8381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len=$func_arith_result 8382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$objlist" = X || 8383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$len" -lt "$max_cmd_len"; then 8384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append objlist " $obj" 8385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The command $test_cmds is almost too long, add a 8387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # command to the queue. 8388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$k" -eq 1 ; then 8389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The first file doesn't have a previous command to add. 8390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org reload_objs=$objlist 8391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval concat_cmds=\"$reload_cmds\" 8392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # All subsequent reloadable object files will link in 8394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the last one created. 8395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org reload_objs="$objlist $last_robj" 8396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 8397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org last_robj=$output_objdir/$output_la-${k}.$objext 8399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $k + 1 8400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org k=$func_arith_result 8401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=$output_objdir/$output_la-${k}.$objext 8402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org objlist=" $obj" 8403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_len " $last_robj" 8404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $len0 + $func_len_result 8405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len=$func_arith_result 8406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Handle the remaining objects by creating one last 8409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # reloadable object file. All subsequent reloadable object 8410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # files will link in the last one created. 8411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org reload_objs="$objlist $last_robj" 8413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 8414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$last_robj"; then 8415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 8416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append delfiles " $output" 8418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output= 8421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ${skipped_export-false}; then 8424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "generating symbol list for \`$libname.la'" 8425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols="$output_objdir/$libname.exp" 8426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM $export_symbols 8427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobjs=$output 8428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Append the command to create the export file. 8429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 8431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$last_robj"; then 8432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 8433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$save_libobjs" && 8437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "creating a temporary reloadable object file: $output" 8438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Loop through the commands generated above and execute them. 8440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_ifs="$IFS"; IFS='~' 8441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for cmd in $concat_cmds; do 8442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 8443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_silent || { 8444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_expand "$cmd" 8445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "func_echo $func_quote_for_expand_result" 8446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 8447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || eval "$cmd" || { 8448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_exit=$? 8449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Restore the uninstalled library and exit 8451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$opt_mode" = relink; then 8452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ( cd "$output_objdir" && \ 8453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM "${realname}T" && \ 8454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $MV "${realname}U" "$realname" ) 8455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $lt_exit 8458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 8459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 8461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols_regex" && ${skipped_export-false}; then 8463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if ${skipped_export-false}; then 8469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols" && test -n "$include_expsyms"; then 8470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tmp_export_symbols="$export_symbols" 8471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$orig_export_symbols"; then 8476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The given exports_symbols file has to be filtered, so filter it. 8477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # FIXME: $output_objdir/$libname.filter potentially contains lots of 8479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # 's' commands which not all seds can handle. GNU sed should be fine 8480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # though. Also, the filter scales superlinearly with the number of 8481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # global variables. join(1) would be nice here, but unfortunately 8482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # isn't a blessed tool. 8483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org export_symbols=$output_objdir/$libname.def 8486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobjs=$output 8491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Restore the value of output. 8492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=$save_output 8493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 8495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$libobjs" = "X " && libobjs= 8497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Expand the library linking commands again to reset the 8499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # value of $libobjs for piecewise linking. 8500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do each of the archive commands. 8502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$module" = yes && test -n "$module_cmds" ; then 8503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$module_expsym_cmds 8505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$module_cmds 8507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$archive_expsym_cmds 8511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$archive_cmds 8513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$delfiles"; then 8518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Append the command to remove temporary files to $cmds. 8519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval cmds=\"\$cmds~\$RM $delfiles\" 8520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add any objects from preloaded convenience libraries 8523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dlprefiles"; then 8524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org gentop="$output_objdir/${outputname}x" 8525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append generated " $gentop" 8526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_extract_archives $gentop $dlprefiles 8528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append libobjs " $func_extract_archives_result" 8529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "X$libobjs" = "X " && libobjs= 8530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_ifs="$IFS"; IFS='~' 8533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for cmd in $cmds; do 8534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 8535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval cmd=\"$cmd\" 8536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_silent || { 8537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_expand "$cmd" 8538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval "func_echo $func_quote_for_expand_result" 8539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 8540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || eval "$cmd" || { 8541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org lt_exit=$? 8542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Restore the uninstalled library and exit 8544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$opt_mode" = relink; then 8545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ( cd "$output_objdir" && \ 8546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM "${realname}T" && \ 8547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $MV "${realname}U" "$realname" ) 8548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $lt_exit 8551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 8552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org IFS="$save_ifs" 8554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Restore the uninstalled library and exit 8556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$opt_mode" = relink; then 8557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 8558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$convenience"; then 8560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$whole_archive_flag_spec"; then 8561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '${RM}r "$gentop"' 8562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 8566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Create links to the real library. 8569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for linkname in $linknames; do 8570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$realname" != "$linkname"; then 8571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 8572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If -module or -export-dynamic was specified, set the dlname. 8576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$module" = yes || test "$export_dynamic" = yes; then 8577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # On all known operating systems, these are identical. 8578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlname="$soname" 8579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org obj) 8584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 8585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-dlopen' is ignored for objects" 8586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $deplibs" in 8589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *\ -l* | *\ -L*) 8590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-l' and \`-L' are ignored for objects" ;; 8591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$rpath" && \ 8594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-rpath' is ignored for objects" 8595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$xrpath" && \ 8597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-R' is ignored for objects" 8598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$vinfo" && \ 8600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-version-info' is ignored for objects" 8601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$release" && \ 8603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-release' is ignored for objects" 8604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $output in 8606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.lo) 8607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$objs$old_deplibs" && \ 8608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "cannot build library object \`$output' from non-libtool objects" 8609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobj=$output 8611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_lo2o "$libobj" 8612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org obj=$func_lo2o_result 8613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 8615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libobj= 8616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org obj="$output" 8617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Delete the old objects. 8621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM $obj $libobj 8622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Objects from convenience libraries. This assumes 8624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # single-version convenience libraries. Whenever we create 8625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # different ones for PIC/non-PIC, this we'll have to duplicate 8626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the extraction. 8627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org reload_conv_objs= 8628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org gentop= 8629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # reload_cmds runs $LD directly, so let us get rid of 8630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # -Wl from whole_archive_flag_spec and hope we can get by with 8631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # turning comma into space.. 8632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org wl= 8633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$convenience"; then 8635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$whole_archive_flag_spec"; then 8636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 8637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 8638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org gentop="$output_objdir/${obj}x" 8640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append generated " $gentop" 8641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_extract_archives $gentop $convenience 8643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org reload_conv_objs="$reload_objs $func_extract_archives_result" 8644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If we're not building shared, we need to use non_pic_objs 8648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 8649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Create the old-style object. 8651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 8652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output="$obj" 8654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$reload_cmds" 'exit $?' 8655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8656885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Exit if we aren't doing a library object file. 8657885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$libobj"; then 8658885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$gentop"; then 8659885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '${RM}r "$gentop"' 8660885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8661885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8662885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 8663885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8664885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8665885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" != yes; then 8666885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$gentop"; then 8667885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '${RM}r "$gentop"' 8668885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8669885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8670885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Create an invalid libtool object if no PIC, so that we don't 8671885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # accidentally link it into a program. 8672885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # $show "echo timestamp > $libobj" 8673885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 8674885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 8675885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8676885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8677885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$pic_flag" || test "$pic_mode" != default; then 8678885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Only do commands if we really have different PIC objects. 8679885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org reload_objs="$libobjs $reload_conv_objs" 8680885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output="$libobj" 8681885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$reload_cmds" 'exit $?' 8682885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8683885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8684885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$gentop"; then 8685885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '${RM}r "$gentop"' 8686885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8687885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8688885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 8689885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8690885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8691885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org prog) 8692885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 8693885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin*) func_stripname '' '.exe' "$output" 8694885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=$func_stripname_result.exe;; 8695885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8696885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$vinfo" && \ 8697885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-version-info' is ignored for programs" 8698885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8699885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$release" && \ 8700885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`-release' is ignored for programs" 8701885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8702885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$preload" = yes \ 8703885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org && test "$dlopen_support" = unknown \ 8704885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org && test "$dlopen_self" = unknown \ 8705885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org && test "$dlopen_self_static" = unknown && \ 8706885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 8707885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8708885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 8709885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-rhapsody* | *-*-darwin1.[012]) 8710885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # On Rhapsody replace the C library is the System framework 8711885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 8712885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 8713885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8714885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8715885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8716885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 8717885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-darwin*) 8718885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Don't allow lazy linking, it breaks C++ global constructors 8719885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # But is supposedly fixed on 10.4 or later (yay!). 8720885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$tagname" = CXX ; then 8721885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 8722885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 10.[0123]) 8723885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " ${wl}-bind_at_load" 8724885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " ${wl}-bind_at_load" 8725885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8726885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8727885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8728885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8729885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8730885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8731885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8732885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8733885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8734885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8735885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # move library search paths that coincide with paths to not yet 8736885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # installed libraries to the beginning of the library search list 8737885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org new_libs= 8738885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for path in $notinst_path; do 8739885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $new_libs " in 8740885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" -L$path/$objdir "*) ;; 8741885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 8742885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $compile_deplibs " in 8743885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" -L$path/$objdir "*) 8744885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append new_libs " -L$path/$objdir" ;; 8745885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8746885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8747885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8748885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8749885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $compile_deplibs; do 8750885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplib in 8751885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L*) 8752885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $new_libs " in 8753885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $deplib "*) ;; 8754885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append new_libs " $deplib" ;; 8755885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8756885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8757885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append new_libs " $deplib" ;; 8758885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8759885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8760885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_deplibs="$new_libs" 8761885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8762885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8763885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append compile_command " $compile_deplibs" 8764885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append finalize_command " $finalize_deplibs" 8765885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8766885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$rpath$xrpath"; then 8767885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If the user specified any rpath flags, then add them. 8768885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for libdir in $rpath $xrpath; do 8769885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This is the magic to use -rpath. 8770885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$finalize_rpath " in 8771885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 8772885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append finalize_rpath " $libdir" ;; 8773885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8774885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8775885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8776885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8777885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now hardcode the library paths 8778885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rpath= 8779885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org hardcode_libdirs= 8780885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for libdir in $compile_rpath $finalize_rpath; do 8781885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$hardcode_libdir_flag_spec"; then 8782885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$hardcode_libdir_separator"; then 8783885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$hardcode_libdirs"; then 8784885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org hardcode_libdirs="$libdir" 8785885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8786885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Just accumulate the unique libdirs. 8787885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8788885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8789885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8790885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 8791885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8792885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8793885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8794885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8795885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8796885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval flag=\"$hardcode_libdir_flag_spec\" 8797885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rpath " $flag" 8798885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8799885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -n "$runpath_var"; then 8800885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$perm_rpath " in 8801885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 8802885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append perm_rpath " $libdir" ;; 8803885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8804885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8805885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 8806885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 8807885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 8808885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case :$dllsearchpath: in 8809885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *":$libdir:"*) ;; 8810885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ::) dllsearchpath=$libdir;; 8811885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append dllsearchpath ":$libdir";; 8812885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8813885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case :$dllsearchpath: in 8814885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *":$testbindir:"*) ;; 8815885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ::) dllsearchpath=$testbindir;; 8816885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append dllsearchpath ":$testbindir";; 8817885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8818885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8819885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8820885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8821885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Substitute the hardcoded libdirs into the rpath. 8822885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$hardcode_libdir_separator" && 8823885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$hardcode_libdirs"; then 8824885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libdir="$hardcode_libdirs" 8825885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval rpath=\" $hardcode_libdir_flag_spec\" 8826885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8827885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_rpath="$rpath" 8828885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8829885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rpath= 8830885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org hardcode_libdirs= 8831885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for libdir in $finalize_rpath; do 8832885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$hardcode_libdir_flag_spec"; then 8833885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$hardcode_libdir_separator"; then 8834885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$hardcode_libdirs"; then 8835885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org hardcode_libdirs="$libdir" 8836885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8837885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Just accumulate the unique libdirs. 8838885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8839885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8840885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8841885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 8842885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8843885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8844885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8845885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8846885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8847885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval flag=\"$hardcode_libdir_flag_spec\" 8848885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rpath " $flag" 8849885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8850885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -n "$runpath_var"; then 8851885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$finalize_perm_rpath " in 8852885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $libdir "*) ;; 8853885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append finalize_perm_rpath " $libdir" ;; 8854885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8855885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8856885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8857885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Substitute the hardcoded libdirs into the rpath. 8858885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$hardcode_libdir_separator" && 8859885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$hardcode_libdirs"; then 8860885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libdir="$hardcode_libdirs" 8861885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval rpath=\" $hardcode_libdir_flag_spec\" 8862885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8863885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_rpath="$rpath" 8864885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8865885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$libobjs" && test "$build_old_libs" = yes; then 8866885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Transform all the library objects into standard objects. 8867885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8868885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8869885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8870885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8871885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8872885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8873885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # template prelinking step 8874885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$prelink_cmds"; then 8875885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$prelink_cmds" 'exit $?' 8876885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8877885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8878885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org wrappers_required=yes 8879885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 8880885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cegcc* | *mingw32ce*) 8881885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 8882885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org wrappers_required=no 8883885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8884885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | *mingw* ) 8885885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" != yes; then 8886885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org wrappers_required=no 8887885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8888885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8889885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 8890885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 8891885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org wrappers_required=no 8892885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8893885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 8894885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 8895885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$wrappers_required" = no; then 8896885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Replace the output file specification. 8897885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8898885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link_command="$compile_command$compile_rpath" 8899885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8900885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We have no uninstalled library dependencies, so finalize right now. 8901885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit_status=0 8902885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$link_command" 'exit_status=$?' 8903885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8904885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$postlink_cmds"; then 8905885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$output" 8906885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8907885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$postlink_cmds" 'exit $?' 8908885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8909885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8910885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Delete the generated files. 8911885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -f "$output_objdir/${outputname}S.${objext}"; then 8912885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 8913885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8914885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8915885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $exit_status 8916885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8917885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8918885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$compile_shlibpath$finalize_shlibpath"; then 8919885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 8920885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8921885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$finalize_shlibpath"; then 8922885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 8923885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8924885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8925885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_var= 8926885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_var= 8927885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$runpath_var"; then 8928885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$perm_rpath"; then 8929885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We should set the runpath_var. 8930885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rpath= 8931885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for dir in $perm_rpath; do 8932885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rpath "$dir:" 8933885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8934885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8935885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8936885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$finalize_perm_rpath"; then 8937885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We should set the runpath_var. 8938885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rpath= 8939885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for dir in $finalize_perm_rpath; do 8940885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rpath "$dir:" 8941885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 8942885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8943885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8944885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8945885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8946885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$no_install" = yes; then 8947885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # We don't need to create a wrapper script. 8948885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link_command="$compile_var$compile_command$compile_rpath" 8949885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Replace the output file specification. 8950885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8951885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Delete the old output file. 8952885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM $output 8953885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Link the executable and exit 8954885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$link_command" 'exit $?' 8955885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8956885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$postlink_cmds"; then 8957885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$output" 8958885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8959885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$postlink_cmds" 'exit $?' 8960885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8961885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8962885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 8963885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8964885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8965885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$hardcode_action" = relink; then 8966885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Fast installation is not supported 8967885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link_command="$compile_var$compile_command$compile_rpath" 8968885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command="$finalize_var$finalize_command$finalize_rpath" 8969885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8970885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "this platform does not like uninstalled shared libraries" 8971885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_warning "\`$output' will be relinked during installation" 8972885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8973885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$fast_install" != no; then 8974885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link_command="$finalize_var$compile_command$finalize_rpath" 8975885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$fast_install" = yes; then 8976885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 8977885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8978885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # fast_install is set to needless 8979885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command= 8980885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8981885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 8982885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link_command="$compile_var$compile_command$compile_rpath" 8983885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command="$finalize_var$finalize_command$finalize_rpath" 8984885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8985885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 8986885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8987885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Replace the output file specification. 8988885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8989885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8990885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Delete the old output files. 8991885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8992885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8993885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$link_command" 'exit $?' 8994885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 8995885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$postlink_cmds"; then 8996885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$output_objdir/$outputname" 8997885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 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'` 8998885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$postlink_cmds" 'exit $?' 8999885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9000885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9001885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now create the wrapper script. 9002885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "creating $output" 9003885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9004885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Quote the relink command for shipping. 9005885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$relink_command"; then 9006885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Preserve any variables that may affect compiler behavior 9007885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for var in $variables_saved_for_relink; do 9008885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if eval test -z \"\${$var+set}\"; then 9009885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9010885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif eval var_value=\$$var; test -z "$var_value"; then 9011885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command="$var=; export $var; $relink_command" 9012885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9013885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$var_value" 9014885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9015885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9016885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9017885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command="(cd `pwd`; $relink_command)" 9018885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9019885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9020885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9021885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Only actually do things if not in dry run mode. 9022885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 9023885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # win32 will think the script is a binary if it has 9024885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # a .exe suffix, so we strip it off here. 9025885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $output in 9026885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.exe) func_stripname '' '.exe' "$output" 9027885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output=$func_stripname_result ;; 9028885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9029885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # test for cygwin because mv fails w/o .exe extensions 9030885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 9031885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin*) 9032885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exeext=.exe 9033885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '.exe' "$outputname" 9034885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org outputname=$func_stripname_result ;; 9035885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) exeext= ;; 9036885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9037885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host in 9038885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin* | *mingw* ) 9039885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname_and_basename "$output" "" "." 9040885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output_name=$func_basename_result 9041885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output_path=$func_dirname_result 9042885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cwrappersource="$output_path/$objdir/lt-$output_name.c" 9043885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cwrapper="$output_path/$output_name.exe" 9044885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM $cwrappersource $cwrapper 9045885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 9046885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9047885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_emit_cwrapperexe_src > $cwrappersource 9048885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9049885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # The wrapper executable is built using the $host compiler, 9050885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # because it contains $host paths and files. If cross- 9051885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # compiling, it, like the target executable, must be 9052885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # executed on the $host or under an emulation environment. 9053885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 9054885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 9055885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $STRIP $cwrapper 9056885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 9057885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9058885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now, create the wrapper script for func_source use: 9059885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_ltwrapper_scriptname $cwrapper 9060885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM $func_ltwrapper_scriptname_result 9061885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 9062885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 9063885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # note: this script will not be executed, so do not chmod. 9064885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "x$build" = "x$host" ; then 9065885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 9066885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9067885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_emit_wrapper no > $func_ltwrapper_scriptname_result 9068885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9069885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 9070885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9071885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org * ) 9072885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM $output 9073885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 9074885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9075885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_emit_wrapper no > $output 9076885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org chmod +x $output 9077885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9078885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9079885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 9080885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 9081885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9082885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9083885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9084885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # See if we need to build an old-fashioned archive. 9085885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for oldlib in $oldlibs; do 9086885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9087885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = convenience; then 9088885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldobjs="$libobjs_save $symfileobj" 9089885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org addlibs="$convenience" 9090885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=no 9091885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9092885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$build_libtool_libs" = module; then 9093885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldobjs="$libobjs_save" 9094885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org build_libtool_libs=no 9095885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9096885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldobjs="$old_deplibs $non_pic_objects" 9097885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$preload" = yes && test -f "$symfileobj"; then 9098885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append oldobjs " $symfileobj" 9099885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9100885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9101885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org addlibs="$old_convenience" 9102885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9103885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9104885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$addlibs"; then 9105885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org gentop="$output_objdir/${outputname}x" 9106885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append generated " $gentop" 9107885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9108885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_extract_archives $gentop $addlibs 9109885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append oldobjs " $func_extract_archives_result" 9110885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9111885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9112885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do each command in the archive commands. 9113885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 9114885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$old_archive_from_new_cmds 9115885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9116885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9117885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add any objects from preloaded convenience libraries 9118885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$dlprefiles"; then 9119885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org gentop="$output_objdir/${outputname}x" 9120885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append generated " $gentop" 9121885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9122885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_extract_archives $gentop $dlprefiles 9123885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append oldobjs " $func_extract_archives_result" 9124885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9125885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9126885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # POSIX demands no paths to be encoded in archives. We have 9127885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # to avoid creating archives with duplicate basenames if we 9128885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # might have to extract them afterwards, e.g., when creating a 9129885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # static archive out of a convenience library, or when linking 9130885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the entirety of a libtool archive into another (currently 9131885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # not supported by libtool). 9132885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if (for obj in $oldobjs 9133885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 9134885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$obj" 9135885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$func_basename_result" 9136885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done | sort | sort -uc >/dev/null 2>&1); then 9137885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org : 9138885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9139885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org echo "copying selected object files to avoid basename conflicts..." 9140885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org gentop="$output_objdir/${outputname}x" 9141885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append generated " $gentop" 9142885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_mkdir_p "$gentop" 9143885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_oldobjs=$oldobjs 9144885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldobjs= 9145885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org counter=1 9146885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for obj in $save_oldobjs 9147885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 9148885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$obj" 9149885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org objbase="$func_basename_result" 9150885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $oldobjs " in 9151885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org " ") oldobjs=$obj ;; 9152885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[\ /]"$objbase "*) 9153885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org while :; do 9154885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Make sure we don't pick an alternate name that also 9155885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # overlaps. 9156885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newobj=lt$counter-$objbase 9157885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $counter + 1 9158885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org counter=$func_arith_result 9159885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $oldobjs " in 9160885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *[\ /]"$newobj "*) ;; 9161885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) if test ! -f "$gentop/$newobj"; then break; fi ;; 9162885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9163885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9164885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 9165885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append oldobjs " $gentop/$newobj" 9166885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9167885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append oldobjs " $obj" ;; 9168885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9169885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9170885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9171885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 9172885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tool_oldlib=$func_to_tool_file_result 9173885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval cmds=\"$old_archive_cmds\" 9174885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9175885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_len " $cmds" 9176885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len=$func_len_result 9177885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 9178885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$old_archive_cmds 9179885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -n "$archiver_list_spec"; then 9180885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "using command file archive linking..." 9181885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for obj in $oldobjs 9182885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 9183885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$obj" 9184885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO "$func_to_tool_file_result" 9185885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done > $output_objdir/$libname.libcmd 9186885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_to_tool_file "$output_objdir/$libname.libcmd" 9187885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldobjs=" $archiver_list_spec$func_to_tool_file_result" 9188885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org cmds=$old_archive_cmds 9189885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9190885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the command line is too long to link in one step, link in parts 9191885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "using piecewise archive linking..." 9192885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_RANLIB=$RANLIB 9193885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org RANLIB=: 9194885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org objlist= 9195885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org concat_cmds= 9196885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org save_oldobjs=$oldobjs 9197885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldobjs= 9198885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Is there a better way of finding the last object in the list? 9199885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for obj in $save_oldobjs 9200885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 9201885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org last_oldobj=$obj 9202885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9203885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval test_cmds=\"$old_archive_cmds\" 9204885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_len " $test_cmds" 9205885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len0=$func_len_result 9206885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len=$len0 9207885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for obj in $save_oldobjs 9208885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 9209885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_len " $obj" 9210885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_arith $len + $func_len_result 9211885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len=$func_arith_result 9212885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append objlist " $obj" 9213885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$len" -lt "$max_cmd_len"; then 9214885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org : 9215885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9216885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the above command should be used before it gets too long 9217885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldobjs=$objlist 9218885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$obj" = "$last_oldobj" ; then 9219885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org RANLIB=$save_RANLIB 9220885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9221885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 9222885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 9223885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org objlist= 9224885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org len=$len0 9225885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9226885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9227885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org RANLIB=$save_RANLIB 9228885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org oldobjs=$objlist 9229885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$oldobjs" = "X" ; then 9230885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval cmds=\"\$concat_cmds\" 9231885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9232885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 9233885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9234885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9235885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9236885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$cmds" 'exit $?' 9237885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9238885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9239885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$generated" && \ 9240885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "${RM}r$generated" 9241885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9242885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Now create the libtool archive. 9243885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $output in 9244885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) 9245885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org old_library= 9246885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$build_old_libs" = yes && old_library="$libname.$libext" 9247885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_verbose "creating $output" 9248885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9249885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Preserve any variables that may affect compiler behavior 9250885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for var in $variables_saved_for_relink; do 9251885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if eval test -z \"\${$var+set}\"; then 9252885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9253885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif eval var_value=\$$var; test -z "$var_value"; then 9254885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command="$var=; export $var; $relink_command" 9255885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9256885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_quote_for_eval "$var_value" 9257885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9258885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9259885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9260885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Quote the link command for shipping. 9261885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 9262885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9263885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$hardcode_automatic" = yes ; then 9264885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command= 9265885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9266885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9267885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Only create the output if not a dry run. 9268885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_dry_run || { 9269885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for installed in no yes; do 9270885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$installed" = yes; then 9271885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -z "$install_libdir"; then 9272885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org break 9273885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9274885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org output="$output_objdir/$outputname"i 9275885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Replace all uninstalled libtool libraries with the installed ones 9276885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdependency_libs= 9277885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for deplib in $dependency_libs; do 9278885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $deplib in 9279885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) 9280885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$deplib" 9281885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name="$func_basename_result" 9282885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_resolve_sysroot "$deplib" 9283885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 9284885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$libdir" && \ 9285885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$deplib' is not a valid libtool archive" 9286885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 9287885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9288885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -L*) 9289885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname -L '' "$deplib" 9290885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_replace_sysroot "$func_stripname_result" 9291885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdependency_libs " -L$func_replace_sysroot_result" 9292885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9293885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -R*) 9294885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname -R '' "$deplib" 9295885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_replace_sysroot "$func_stripname_result" 9296885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdependency_libs " -R$func_replace_sysroot_result" 9297885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9298885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append newdependency_libs " $deplib" ;; 9299885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9300885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9301885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dependency_libs="$newdependency_libs" 9302885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdlfiles= 9303885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9304885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lib in $dlfiles; do 9305885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $lib in 9306885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) 9307885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$lib" 9308885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name="$func_basename_result" 9309885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9310885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$libdir" && \ 9311885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$lib' is not a valid libtool archive" 9312885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 9313885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9314885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append newdlfiles " $lib" ;; 9315885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9316885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9317885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlfiles="$newdlfiles" 9318885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdlprefiles= 9319885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lib in $dlprefiles; do 9320885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $lib in 9321885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) 9322885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Only pass preopened files to the pseudo-archive (for 9323885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # eventual linking with the app. that links it) if we 9324885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # didn't already link the preopened objects directly into 9325885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # the library: 9326885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$lib" 9327885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name="$func_basename_result" 9328885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9329885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$libdir" && \ 9330885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_error "\`$lib' is not a valid libtool archive" 9331885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 9332885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9333885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9334885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9335885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlprefiles="$newdlprefiles" 9336885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9337885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdlfiles= 9338885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lib in $dlfiles; do 9339885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $lib in 9340885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9341885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) abs=`pwd`"/$lib" ;; 9342885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9343885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlfiles " $abs" 9344885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9345885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlfiles="$newdlfiles" 9346885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org newdlprefiles= 9347885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for lib in $dlprefiles; do 9348885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $lib in 9349885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9350885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) abs=`pwd`"/$lib" ;; 9351885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9352885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append newdlprefiles " $abs" 9353885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9354885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dlprefiles="$newdlprefiles" 9355885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9356885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $RM $output 9357885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # place dlname in correct position for cygwin 9358885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # In fact, it would be nice if we could use this code for all target 9359885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # systems that can't hard-code library paths into their executables 9360885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # and that have no shared library path variable independent of PATH, 9361885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # but it turns out we can't easily determine that from inspecting 9362885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # libtool variables, so we have to hard-code the OSs to which it 9363885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # applies here; at the moment, that means platforms that use the PE 9364885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # object format with DLL files. See the long comment at the top of 9365885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # tests/bindir.at for full details. 9366885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tdlname=$dlname 9367885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $host,$output,$installed,$module,$dlname in 9368885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 9369885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # If a -bindir argument was supplied, place the dll there. 9370885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "x$bindir" != x ; 9371885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org then 9372885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_relative_path "$install_libdir" "$bindir" 9373885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tdlname=$func_relative_path_result$dlname 9374885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9375885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Otherwise fall back on heuristic. 9376885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org tdlname=../bin/$dlname 9377885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9378885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9379885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9380885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO > $output "\ 9381885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# $outputname - a libtool library file 9382885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 9383885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# 9384885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Please DO NOT delete this file! 9385885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# It is necessary for linking the library. 9386885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9387885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The name that we can dlopen(3). 9388885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdlname='$tdlname' 9389885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9390885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Names of this library. 9391885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglibrary_names='$library_names' 9392885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9393885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The name of the static archive. 9394885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgold_library='$old_library' 9395885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9396885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Linker flags that can not go in dependency_libs. 9397885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginherited_linker_flags='$new_inherited_linker_flags' 9398885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9399885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Libraries that this one depends upon. 9400885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdependency_libs='$dependency_libs' 9401885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9402885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Names of additional weak libraries provided by this library 9403885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgweak_library_names='$weak_libs' 9404885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9405885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Version information for $libname. 9406885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgcurrent=$current 9407885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgage=$age 9408885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrevision=$revision 9409885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9410885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Is this an already installed library? 9411885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orginstalled=$installed 9412885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9413885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Should we warn about portability when linking against -modules? 9414885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgshouldnotlink=$module 9415885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9416885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Files to dlopen/dlpreopen 9417885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdlopen='$dlfiles' 9418885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgdlpreopen='$dlprefiles' 9419885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9420885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Directory that this library needs to be installed in: 9421885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orglibdir='$install_libdir'" 9422885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$installed" = no && test "$need_relink" = yes; then 9423885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $ECHO >> $output "\ 9424885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgrelink_command=\"$relink_command\"" 9425885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9426885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9427885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org } 9428885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9429885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do a symbolic link so that the libtool archive can be found in 9430885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # LD_LIBRARY_PATH before the program is installed. 9431885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 9432885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9433885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9434885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_SUCCESS 9435885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 9436885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9437885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 9438885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_mode_link ${1+"$@"} 9439885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9440885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9441885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# func_mode_uninstall arg... 9442885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfunc_mode_uninstall () 9443885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ 9444885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org $opt_debug 9445885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org RM="$nonopt" 9446885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org files= 9447885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rmforce= 9448885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit_status=0 9449885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9450885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # This variable tells wrapper scripts just to set variables rather 9451885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # than running their programs. 9452885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org libtool_install_magic="$magic" 9453885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9454885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for arg 9455885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org do 9456885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $arg in 9457885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -f) func_append RM " $arg"; rmforce=yes ;; 9458885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org -*) func_append RM " $arg" ;; 9459885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append files " $arg" ;; 9460885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9461885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9462885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9463885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -z "$RM" && \ 9464885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "you must specify an RM program" 9465885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9466885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rmdirs= 9467885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9468885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for file in $files; do 9469885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_dirname "$file" "" "." 9470885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org dir="$func_dirname_result" 9471885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$dir" = X.; then 9472885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org odir="$objdir" 9473885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9474885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org odir="$dir/$objdir" 9475885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9476885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_basename "$file" 9477885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org name="$func_basename_result" 9478885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$opt_mode" = uninstall && odir="$dir" 9479885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9480885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Remember odir for removal later, being careful to avoid duplicates 9481885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$opt_mode" = clean; then 9482885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $rmdirs " in 9483885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $odir "*) ;; 9484885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) func_append rmdirs " $odir" ;; 9485885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9486885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9487885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9488885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Don't error if the file doesn't exist and rm -f was used. 9489885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if { test -L "$file"; } >/dev/null 2>&1 || 9490885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org { test -h "$file"; } >/dev/null 2>&1 || 9491885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -f "$file"; then 9492885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org : 9493885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test -d "$file"; then 9494885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit_status=1 9495885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 9496885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org elif test "$rmforce" = yes; then 9497885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org continue 9498885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9499885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9500885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org rmfiles="$file" 9501885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9502885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $name in 9503885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.la) 9504885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Possibly a libtool archive, so verify it. 9505885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_lalib_p "$file"; then 9506885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source $dir/$name 9507885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9508885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Delete the libtool libraries and symlinks. 9509885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for n in $library_names; do 9510885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rmfiles " $odir/$n" 9511885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9512885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$old_library" && func_append rmfiles " $odir/$old_library" 9513885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9514885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case "$opt_mode" in 9515885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org clean) 9516885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case " $library_names " in 9517885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *" $dlname "*) ;; 9518885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 9519885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9520885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 9521885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9522885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org uninstall) 9523885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$library_names"; then 9524885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do each command in the postuninstall commands. 9525885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9526885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9527885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9528885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$old_library"; then 9529885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do each command in the old_postuninstall commands. 9530885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9531885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9532885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # FIXME: should reinstall the best remaining shared library. 9533885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9534885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9535885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9536885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9537885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9538885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.lo) 9539885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Possibly a libtool object, so verify it. 9540885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_lalib_p "$file"; then 9541885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9542885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Read the .lo file 9543885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source $dir/$name 9544885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9545885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add PIC object to the list of files to remove. 9546885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$pic_object" && 9547885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$pic_object" != none; then 9548885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rmfiles " $dir/$pic_object" 9549885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9550885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9551885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Add non-PIC object to the list of files to remove. 9552885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -n "$non_pic_object" && 9553885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org test "$non_pic_object" != none; then 9554885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rmfiles " $dir/$non_pic_object" 9555885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9556885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9557885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9558885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9559885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *) 9560885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$opt_mode" = clean ; then 9561885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org noexename=$name 9562885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org case $file in 9563885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org *.exe) 9564885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '.exe' "$file" 9565885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org file=$func_stripname_result 9566885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_stripname '' '.exe' "$name" 9567885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org noexename=$func_stripname_result 9568885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # $file with .exe has already been added to rmfiles, 9569885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # add $file without .exe 9570885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rmfiles " $file" 9571885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9572885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9573885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Do a test to see if this is a libtool program. 9574885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_ltwrapper_p "$file"; then 9575885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if func_ltwrapper_executable_p "$file"; then 9576885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_ltwrapper_scriptname "$file" 9577885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command= 9578885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source $func_ltwrapper_scriptname_result 9579885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rmfiles " $func_ltwrapper_scriptname_result" 9580885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org else 9581885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org relink_command= 9582885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_source $dir/$noexename 9583885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9584885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9585885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # note $name still contains .exe if it was in $file originally 9586885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # as does the version of $file that was added into $rmfiles 9587885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 9588885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "$fast_install" = yes && test -n "$relink_command"; then 9589885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rmfiles " $odir/lt-$name" 9590885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9591885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test "X$noexename" != "X$name" ; then 9592885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_append rmfiles " $odir/lt-${noexename}.c" 9593885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9594885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9595885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9596885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org ;; 9597885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org esac 9598885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "$RM $rmfiles" 'exit_status=1' 9599885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9600885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9601885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org # Try to remove the ${objdir}s in the directories where we deleted files 9602885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org for dir in $rmdirs; do 9603885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org if test -d "$dir"; then 9604885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_show_eval "rmdir $dir >/dev/null 2>&1" 9605885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org fi 9606885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org done 9607885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9608885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $exit_status 9609885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 9610885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9611885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 9612885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_mode_uninstall ${1+"$@"} 9613885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9614885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest -z "$opt_mode" && { 9615885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org help="$generic_help" 9616885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "you must specify a MODE" 9617885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org} 9618885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9619885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgtest -z "$exec_cmd" && \ 9620885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org func_fatal_help "invalid operation mode \`$opt_mode'" 9621885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9622885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgif test -n "$exec_cmd"; then 9623885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org eval exec "$exec_cmd" 9624885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org exit $EXIT_FAILURE 9625885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgfi 9626885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9627885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgexit $exit_status 9628885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9629885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9630885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# The TAGs below are defined such that we never get into a situation 9631885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# in which we disable both kinds of libraries. Given conflicting 9632885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# choices, we go for a static library, that is the most portable, 9633885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# since we can't tell whether shared libraries were disabled because 9634885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# the user asked for that or because the platform doesn't support 9635885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# them. This is particularly important on AIX, because we don't 9636885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# support having both static and shared libraries enabled at the same 9637885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# time on that platform, so we default to a shared-only configuration. 9638885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# If a disable-shared tag is given, we'll fallback to a static-only 9639885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# configuration. But we'll never go from static-only to shared-only. 9640885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9641885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 9642885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbuild_libtool_libs=no 9643885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbuild_old_libs=yes 9644885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ### END LIBTOOL TAG CONFIG: disable-shared 9645885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9646885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ### BEGIN LIBTOOL TAG CONFIG: disable-static 9647885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.orgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 9648885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# ### END LIBTOOL TAG CONFIG: disable-static 9649885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9650885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# Local Variables: 9651885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# mode:shell-script 9652885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# sh-indentation:2 9653885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# End: 9654885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org# vi:sw=2 9655885f2ff5a7a7d6a73432d26a6c0ae9147e6b452sergeyu@chromium.org 9656