1c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# ltmain.sh - Provide generalized library-building support services. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# NOTE: Changing this file will not affect anything until you rerun configure. 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 2007, 2008 Free Software Foundation, Inc. 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# This program is free software; you can redistribute it and/or modify 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# it under the terms of the GNU General Public License as published by 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# the Free Software Foundation; either version 2 of the License, or 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# (at your option) any later version. 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# This program is distributed in the hope that it will be useful, but 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# WITHOUT ANY WARRANTY; without even the implied warranty of 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# General Public License for more details. 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# You should have received a copy of the GNU General Public License 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# along with this program; if not, write to the Free Software 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# As a special exception to the GNU General Public License, if you 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# distribute this file as part of a program that contains a 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# configuration script generated by Autoconf, you may include it under 25c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# the same distribution terms that you use for the rest of that program. 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottbasename="s,^.*/,,g" 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# is ksh but when the shell is invoked as "sh" and the current value of 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# the _XPG environment variable is not equal to 1 (one), the special 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# positional parameter $0, within a function call, is the name of the 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# function. 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottprogpath="$0" 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# The name of this program: 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottprogname=`echo "$progpath" | $SED $basename` 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottmodename="$progname" 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Global variables: 41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEXIT_SUCCESS=0 42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEXIT_FAILURE=1 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottPROGRAM=ltmain.sh 45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottPACKAGE=libtool 46c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottVERSION="1.5.26 Debian 1.5.26-1ubuntu1" 47c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)" 48c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 49c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 50c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 51c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott emulate sh 52c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott NULLCMD=: 53c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 54c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # is contrary to our usage. Disable this feature. 55c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott alias -g '${1+"$@"}'='"$@"' 56c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott setopt NO_GLOB_SUBST 57c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottelse 58c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 59c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfi 60c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottBIN_SH=xpg4; export BIN_SH # for Tru64 61c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottDUALCASE=1; export DUALCASE # for MKS sh 62c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 63c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Check that we have a working $echo. 64c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottif test "X$1" = X--no-reexec; then 65c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Discard the --no-reexec flag, and continue. 66c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift 67c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottelif test "X$1" = X--fallback-echo; then 68c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Avoid inline document here, it may be left over 69c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott : 70c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 71c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Yippee, $echo works! 72c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott : 73c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottelse 74c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Restart under the correct shell, and then maybe $echo will work. 75c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exec $SHELL "$progpath" --no-reexec ${1+"$@"} 76c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfi 77c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 78c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottif test "X$1" = X--fallback-echo; then 79c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # used as fallback echo 80c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift 81c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cat <<EOF 82c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott$* 83c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 84c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 85c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfi 86c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 87c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdefault_mode= 88c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotthelp="Try \`$progname --help' for more information." 89c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottmagic="%%%MAGIC variable%%%" 90c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottmkdir="mkdir" 91c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottmv="mv -f" 92c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottrm="rm -f" 93c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 94c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Sed substitution that helps us do robust quoting. It backslashifies 95c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# metacharacters that are still active within double-quoted strings. 96c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottXsed="${SED}"' -e 1s/^X//' 97c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 98c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# test EBCDIC or ASCII 99c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcase `echo X|tr X '\101'` in 100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott A) # ASCII based system 101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott SP2NL='tr \040 \012' 103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott NL2SP='tr \015\012 \040\040' 104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) # EBCDIC based system 106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott SP2NL='tr \100 \n' 107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott NL2SP='tr \r\n \100\100' 108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottesac 110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# NLS nuisances. 112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Only set LANG and LC_ALL to C if already set. 113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# These must not be set unconditionally because not all systems understand 114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# e.g. LANG=C (notably SCO). 115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# We save the old values to restore during execute mode. 116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottlt_env= 117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdo 119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "if test \"\${$lt_var+set}\" = set; then 120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_$lt_var=\$$lt_var 121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_env=\"$lt_var=\$$lt_var \$lt_env\" 122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $lt_var=C 123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export $lt_var 124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi" 125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdone 126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottif test -n "$lt_env"; then 128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_env="env $lt_env" 129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfi 130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Make sure IFS has a sensible default 132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottlt_nl=' 133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott' 134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottIFS=" $lt_nl" 135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: not configured to build any kind of library" 1>&2 138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfi 141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Global variables. 143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottmode=$default_mode 144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnonopt= 145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottprev= 146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottprevopt= 147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottrun= 148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottshow="$echo" 149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottshow_help= 150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottexecute_dlfiles= 151c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottduplicate_deps=no 152c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottpreserve_args= 153c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottlo2o="s/\\.lo\$/.${objext}/" 154c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotto2lo="s/\\.${objext}\$/.lo/" 155c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextracted_archives= 156c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextracted_serial=0 157c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 158c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott##################################### 159c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Shell function definitions: 160c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# This seems to be the best place for them 161c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 162c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# func_mktempdir [string] 163c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Make a temporary directory that won't clash with other running 164c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# libtool processes, and avoids race conditions if possible. If 165c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# given, STRING is the basename for that directory. 166c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfunc_mktempdir () 167c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 168c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_template="${TMPDIR-/tmp}/${1-$progname}" 169c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 170c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$run" = ":"; then 171c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Return a directory name, but don't create it in dry-run mode 172c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_tmpdir="${my_template}-$$" 173c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 174c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 175c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If mktemp works, use that first and foremost 176c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 177c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 178c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -d "$my_tmpdir"; then 179c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Failing that, at least try and use $RANDOM to avoid a race 180c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_tmpdir="${my_template}-${RANDOM-0}$$" 181c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 182c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_mktempdir_umask=`umask` 183c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott umask 0077 184c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $mkdir "$my_tmpdir" 185c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott umask $save_mktempdir_umask 186c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 187c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 188c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If we're not in dry-run mode, bomb out on failure 189c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -d "$my_tmpdir" || { 190c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 191c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 192c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 193c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 194c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 195c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "X$my_tmpdir" | $Xsed 196c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 197c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 198c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 199c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# func_win32_libid arg 200c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# return the library type of file 'arg' 201c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 202c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Need a lot of goo to handle *both* DLLs and import libs 203c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Has to be a shell function in order to 'eat' the argument 204c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# that is supplied when $file_magic_command is called. 205c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfunc_win32_libid () 206c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 207c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott win32_libid_type="unknown" 208c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott win32_fileres=`file -L $1 2>/dev/null` 209c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $win32_fileres in 210c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *ar\ archive\ import\ library*) # definitely import 211c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott win32_libid_type="x86 archive import" 212c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 213c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *ar\ archive*) # could be an import, or static 214c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 215c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 216c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott win32_nmres=`eval $NM -f posix -A $1 | \ 217c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $SED -n -e '1,100{ 218c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott / I /{ 219c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott s,.*,import, 220c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott p 221c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott q 222c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 223c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott }'` 224c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $win32_nmres in 225c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott import*) win32_libid_type="x86 archive import";; 226c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) win32_libid_type="x86 archive static";; 227c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 228c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 229c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 230c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *DLL*) 231c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott win32_libid_type="x86 DLL" 232c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 233c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *executable*) # but shell scripts are "executable" too... 234c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $win32_fileres in 235c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *MS\ Windows\ PE\ Intel*) 236c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott win32_libid_type="x86 DLL" 237c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 238c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 239c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 240c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 241c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo $win32_libid_type 242c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 243c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 244c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 245c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# func_infer_tag arg 246c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Infer tagged configuration to use if any are available and 247c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# if one wasn't chosen via the "--tag" command line option. 248c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Only attempt this if the compiler in the base compile 249c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# command doesn't match the default compiler. 250c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# arg is usually of the form 'gcc ...' 251c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfunc_infer_tag () 252c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 253c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$available_tags" && test -z "$tagname"; then 254c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott CC_quoted= 255c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg in $CC; do 256c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 257c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 258c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="\"$arg\"" 259c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 260c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 261c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott CC_quoted="$CC_quoted $arg" 262c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 263c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $@ in 264c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Blanks in the command may have been stripped by the calling shell, 265c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # but not from the CC environment variable when configure was run. 266c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 267c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Blanks at the start of $base_compile will cause this to fail 268c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # if we don't check for them as well. 269c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 270c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for z in $available_tags; do 271c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 272c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Evaluate the configuration. 273c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 274c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott CC_quoted= 275c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg in $CC; do 276c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Double-quote args containing other shell metacharacters. 277c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 278c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 279c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="\"$arg\"" 280c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 281c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 282c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott CC_quoted="$CC_quoted $arg" 283c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 284c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$@ " in 285c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 286c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The compiler in the base compile command matches 287c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # the one in the tagged configuration. 288c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Assume this is the tagged configuration we want. 289c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tagname=$z 290c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break 291c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 292c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 293c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 294c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 295c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If $tagname still isn't set, then no tagged configuration 296c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # was found and let the user know that the "--tag" command 297c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # line option must be used. 298c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$tagname"; then 299c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: unable to infer tagged configuration" 300c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: specify a tag with \`--tag'" 1>&2 301c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 302c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# else 303c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# $echo "$modename: using $tagname tagged configuration" 304c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 305c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 306c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 307c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 308c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 309c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 310c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 311c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# func_extract_an_archive dir oldlib 312c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfunc_extract_an_archive () 313c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 314c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott f_ex_an_ar_dir="$1"; shift 315c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott f_ex_an_ar_oldlib="$1" 316c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 317c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 318c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 319c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 320c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott : 321c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 322c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 323c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 324c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 325c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 326c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 327c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# func_extract_archives gentop oldlib ... 328c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfunc_extract_archives () 329c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 330c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_gentop="$1"; shift 331c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_oldlibs=${1+"$@"} 332c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_oldobjs="" 333c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_xlib="" 334c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_xabs="" 335c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_xdir="" 336c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_status="" 337c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 338c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "${rm}r $my_gentop" 339c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run ${rm}r "$my_gentop" 340c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$mkdir $my_gentop" 341c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $mkdir "$my_gentop" 342c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_status=$? 343c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 344c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $my_status 345c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 346c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 347c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for my_xlib in $my_oldlibs; do 348c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Extract the objects. 349c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $my_xlib in 350c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 351c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) my_xabs=`pwd`"/$my_xlib" ;; 352c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 353c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 354c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_xlib_u=$my_xlib 355c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott while :; do 356c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $extracted_archives " in 357c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $my_xlib_u "*) 358c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott extracted_serial=`expr $extracted_serial + 1` 359c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_xlib_u=lt$extracted_serial-$my_xlib ;; 360c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) break ;; 361c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 362c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 363c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott extracted_archives="$extracted_archives $my_xlib_u" 364c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_xdir="$my_gentop/$my_xlib_u" 365c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 366c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "${rm}r $my_xdir" 367c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run ${rm}r "$my_xdir" 368c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$mkdir $my_xdir" 369c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $mkdir "$my_xdir" 370c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit_status=$? 371c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 372c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $exit_status 373c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 374c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 375c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-darwin*) 376c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "Extracting $my_xabs" 377c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do not bother doing anything if just a dry run 378c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$run"; then 379c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_orig_dir=`pwd` 380c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cd $my_xdir || exit $? 381c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_archive=$my_xabs 382c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_curdir=`pwd` 383c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 384c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 385c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$darwin_arches"; then 386c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 387c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_arch= 388c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$darwin_base_archive has multiple architectures $darwin_arches" 389c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for darwin_arch in $darwin_arches ; do 390c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 391c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 392c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 393c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott func_extract_an_archive "`pwd`" "${darwin_base_archive}" 394c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cd "$darwin_curdir" 395c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 396c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done # $darwin_arches 397c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ## Okay now we have a bunch of thin objects, gotta fatten them up :) 398c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 399c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_file= 400c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_files= 401c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for darwin_file in $darwin_filelist; do 402c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 403c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lipo -create -output "$darwin_file" $darwin_files 404c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done # $darwin_filelist 405c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ${rm}r unfat-$$ 406c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cd "$darwin_orig_dir" 407c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 408c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cd "$darwin_orig_dir" 409c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott func_extract_an_archive "$my_xdir" "$my_xabs" 410c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # $darwin_arches 411c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # $run 412c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 413c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 414c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott func_extract_an_archive "$my_xdir" "$my_xabs" 415c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 416c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 417c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 418c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 419c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott func_extract_archives_result="$my_oldobjs" 420c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 421c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# End of Shell function definitions 422c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott##################################### 423c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 424c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Darwin sucks 425c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotteval std_shrext=\"$shrext_cmds\" 426c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 427c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdisable_libs=no 428c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 429c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Parse our command line options once, thoroughly. 430c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottwhile test "$#" -gt 0 431c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdo 432c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="$1" 433c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift 434c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 435c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 436c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 437c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) optarg= ;; 438c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 439c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 440c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the previous option needs an argument, assign it. 441c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$prev"; then 442c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $prev in 443c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott execute_dlfiles) 444c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott execute_dlfiles="$execute_dlfiles $arg" 445c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 446c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tag) 447c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tagname="$arg" 448c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott preserve_args="${preserve_args}=$arg" 449c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 450c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check whether tagname contains only valid characters 451c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $tagname in 452c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[!-_A-Za-z0-9,/]*) 453c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$progname: invalid tag name: $tagname" 1>&2 454c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 455c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 456c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 457c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 458c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $tagname in 459c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott CC) 460c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Don't test for the "default" C tag, as we know, it's there, but 461c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # not specially marked. 462c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 463c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 464c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 465c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott taglist="$taglist $tagname" 466c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Evaluate the configuration. 467c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 468c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 469c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$progname: ignoring unknown tag $tagname" 1>&2 470c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 471c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 472c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 473c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 474c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 475c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "$prev=\$arg" 476c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 477c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 478c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 479c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 480c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prevopt= 481c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 482c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 483c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 484c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Have we seen a non-optional argument yet? 485c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 486c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --help) 487c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott show_help=yes 488c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 489c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 490c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --version) 491c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott echo "\ 492c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 493c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 494c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottCopyright (C) 2008 Free Software Foundation, Inc. 495c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThis is free software; see the source for copying conditions. There is NO 496c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 497c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $? 498c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 499c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 500c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --config) 501c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 502c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Now print the configurations for the tags. 503c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for tagname in $taglist; do 504c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 505c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 506c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $? 507c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 508c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 509c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --debug) 510c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$progname: enabling shell trace mode" 511c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set -x 512c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott preserve_args="$preserve_args $arg" 513c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 514c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 515c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --dry-run | -n) 516c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott run=: 517c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 518c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 519c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --features) 520c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "host: $host" 521c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" = yes; then 522c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "enable shared libraries" 523c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 524c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "disable shared libraries" 525c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 526c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_old_libs" = yes; then 527c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "enable static libraries" 528c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 529c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "disable static libraries" 530c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 531c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $? 532c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 533c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 534c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --finish) mode="finish" ;; 535c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 536c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --mode) prevopt="--mode" prev=mode ;; 537c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --mode=*) mode="$optarg" ;; 538c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 539c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --preserve-dup-deps) duplicate_deps="yes" ;; 540c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 541c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --quiet | --silent) 542c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott show=: 543c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott preserve_args="$preserve_args $arg" 544c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 545c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 546c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --tag) 547c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prevopt="--tag" 548c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=tag 549c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott preserve_args="$preserve_args --tag" 550c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 551c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --tag=*) 552c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set tag "$optarg" ${1+"$@"} 553c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift 554c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=tag 555c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott preserve_args="$preserve_args --tag" 556c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 557c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 558c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -dlopen) 559c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prevopt="-dlopen" 560c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=execute_dlfiles 561c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 562c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 563c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -*) 564c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: unrecognized option \`$arg'" 1>&2 565c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 566c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 567c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 568c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 569c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 570c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott nonopt="$arg" 571c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break 572c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 573c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 574c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdone 575c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 576c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottif test -n "$prevopt"; then 577c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: option \`$prevopt' requires an argument" 1>&2 578c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 579c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 580c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfi 581c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 582c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcase $disable_libs in 583c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottno) 584c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 585c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottshared) 586c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=no 587c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_old_libs=yes 588c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 589c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstatic) 590c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 591c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 592c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottesac 593c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 594c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# If this variable is set in any of the actions, the command in it 595c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# will be execed at the end. This prevents here-documents from being 596c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# left over by shells. 597c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottexec_cmd= 598c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 599c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottif test -z "$show_help"; then 600c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 601c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Infer the operation mode. 602c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$mode"; then 603c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 604c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 605c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $nonopt in 606c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 607c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott mode=link 608c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg 609c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 610c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 611c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -c) 612c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott mode=compile 613c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break 614c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 615c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 616c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 617c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 618c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *db | *dbx | *strace | *truss) 619c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott mode=execute 620c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 621c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *install*|cp|mv) 622c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott mode=install 623c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 624c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *rm) 625c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott mode=uninstall 626c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 627c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 628c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If we have no mode, but dlfiles were specified, then do execute mode. 629c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$execute_dlfiles" && mode=execute 630c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 631c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Just use the default operation mode. 632c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$mode"; then 633c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$nonopt"; then 634c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 635c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 636c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 637c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 638c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 639c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 640c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 641c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 642c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 643c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only execute mode is allowed to have -dlopen flags. 644c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$execute_dlfiles" && test "$mode" != execute; then 645c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: unrecognized option \`-dlopen'" 1>&2 646c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 647c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 648c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 649c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 650c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Change the help message to a mode-specific one. 651c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott generic_help="$help" 652c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott help="Try \`$modename --help --mode=$mode' for more information." 653c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 654c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # These modes are in order of execution frequency so that they run quickly. 655c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $mode in 656c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # libtool compile mode 657c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile) 658c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott modename="$modename: compile" 659c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Get the compilation command and the source file. 660c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott base_compile= 661c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott srcfile="$nonopt" # always keep a non-empty value in "srcfile" 662c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott suppress_opt=yes 663c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott suppress_output= 664c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg_mode=normal 665c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobj= 666c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott later= 667c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 668c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg 669c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 670c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg_mode in 671c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg ) 672c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # do not "continue". Instead, add this to base_compile 673c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lastarg="$arg" 674c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg_mode=normal 675c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 676c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 677c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott target ) 678c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobj="$arg" 679c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg_mode=normal 680c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 681c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 682c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 683c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott normal ) 684c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Accept any command-line options. 685c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 686c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -o) 687c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$libobj" ; then 688c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: you cannot specify \`-o' more than once" 1>&2 689c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 690c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 691c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg_mode=target 692c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 693c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 694c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 695c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -static | -prefer-pic | -prefer-non-pic) 696c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott later="$later $arg" 697c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 698c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 699c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 700c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -no-suppress) 701c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott suppress_opt=no 702c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 703c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 704c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 705c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -Xcompiler) 706c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg_mode=arg # the next one goes into the "base_compile" arg list 707c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue # The current "srcfile" will either be retained or 708c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; # replaced later. I would guess that would be a bug. 709c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 710c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -Wc,*) 711c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 712c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lastarg= 713c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS=',' 714c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg in $args; do 715c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 716c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 717c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Double-quote args containing other shell metacharacters. 718c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Many Bourne shells cannot handle close brackets correctly 719c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # in scan sets, so we specify it separately. 720c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 721c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 722c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="\"$arg\"" 723c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 724c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 725c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lastarg="$lastarg $arg" 726c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 727c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 728c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 729c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 730c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add the arguments to base_compile. 731c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott base_compile="$base_compile $lastarg" 732c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 733c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 734c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 735c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott * ) 736c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Accept the current argument as the source file. 737c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The previous "srcfile" becomes the current argument. 738c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # 739c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lastarg="$srcfile" 740c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott srcfile="$arg" 741c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 742c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac # case $arg 743c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 744c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac # case $arg_mode 745c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 746c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Aesthetically quote the previous argument. 747c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 748c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 749c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $lastarg in 750c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Double-quote args containing other shell metacharacters. 751c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Many Bourne shells cannot handle close brackets correctly 752c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # in scan sets, and some SunOS ksh mistreat backslash-escaping 753c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # in scan sets (worked around with variable expansion), 754c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # and furthermore cannot handle '|' '&' '(' ')' in scan sets 755c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # at all, so we specify them separately. 756c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 757c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lastarg="\"$lastarg\"" 758c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 759c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 760c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 761c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott base_compile="$base_compile $lastarg" 762c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done # for arg 763c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 764c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg_mode in 765c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg) 766c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: you must specify an argument for -Xcompile" 767c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 768c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 769c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott target) 770c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: you must specify a target with \`-o'" 1>&2 771c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 772c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 773c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 774c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Get the name of the library object. 775c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 776c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 777c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 778c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 779c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Recognize several different file suffixes. 780c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the user specifies -o file.o, it is replaced with file.lo 781c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xform='[cCFSifmso]' 782c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $libobj in 783c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.ada) xform=ada ;; 784c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.adb) xform=adb ;; 785c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.ads) xform=ads ;; 786c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.asm) xform=asm ;; 787c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.c++) xform=c++ ;; 788c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.cc) xform=cc ;; 789c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.ii) xform=ii ;; 790c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.class) xform=class ;; 791c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.cpp) xform=cpp ;; 792c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.cxx) xform=cxx ;; 793c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.[fF][09]?) xform=[fF][09]. ;; 794c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.for) xform=for ;; 795c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.java) xform=java ;; 796c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.obj) xform=obj ;; 797c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.sx) xform=sx ;; 798c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 799c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 800c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 801c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 802c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $libobj in 803c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 804c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 805c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 806c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 807c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 808c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 809c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 810c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott func_infer_tag $base_compile 811c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 812c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg in $later; do 813c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 814c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -static) 815c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_old_libs=yes 816c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 817c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 818c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 819c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -prefer-pic) 820c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_mode=yes 821c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 822c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 823c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 824c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -prefer-non-pic) 825c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_mode=no 826c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 827c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 828c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 829c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 830c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 831c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 832c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $qlibobj in 833c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 834c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott qlibobj="\"$qlibobj\"" ;; 835c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 836c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$libobj" != "X$qlibobj" \ 837c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 838c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 839c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 840c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 841c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$xdir" = "X$obj"; then 842c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir= 843c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 844c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir=$xdir/ 845c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 846c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lobj=${xdir}$objdir/$objname 847c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 848c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$base_compile"; then 849c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: you must specify a compilation command" 1>&2 850c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 851c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 852c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 853c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 854c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Delete any leftover library objects. 855c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_old_libs" = yes; then 856c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott removelist="$obj $lobj $libobj ${libobj}T" 857c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 858c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott removelist="$lobj $libobj ${libobj}T" 859c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 860c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 861c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $removelist 862c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 863c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 864c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # On Cygwin there's no "real" PIC flag so we must build both object types 865c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host_os in 866c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cygwin* | mingw* | pw32* | os2*) 867c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_mode=default 868c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 869c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 870c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 871c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # non-PIC code in shared libraries is not supported 872c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_mode=default 873c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 874c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 875c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Calculate the filename of the output object if compiler does 876c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # not support -o with -c 877c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$compiler_c_o" = no; then 878c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 879c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lockfile="$output_obj.lock" 880c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott removelist="$removelist $output_obj $lockfile" 881c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 882c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 883c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output_obj= 884c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott need_locks=no 885c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lockfile= 886c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 887c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 888c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Lock this critical section if it is needed 889c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We use this script file to make the link, it avoids creating a new file 890c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$need_locks" = yes; then 891c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott until $run ln "$progpath" "$lockfile" 2>/dev/null; do 892c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "Waiting for $lockfile to be removed" 893c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott sleep 2 894c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 895c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$need_locks" = warn; then 896c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$lockfile"; then 897c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "\ 898c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott*** ERROR, $lockfile exists and contains: 899c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott`cat $lockfile 2>/dev/null` 900c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 901c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThis indicates that another process is trying to use the same 902c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotttemporary object file, and libtool could not work around it because 903c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottyour compiler does not support \`-c' and \`-o' together. If you 904c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottrepeat this compilation, it may succeed, by chance, but you had better 905c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottavoid parallel builds (make -j) in this platform, or get a better 906c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcompiler." 907c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 908c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $removelist 909c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 910c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 911c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$srcfile" > "$lockfile" 912c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 913c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 914c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$fix_srcfile_path"; then 915c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval srcfile=\"$fix_srcfile_path\" 916c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 917c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 918c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $qsrcfile in 919c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 920c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott qsrcfile="\"$qsrcfile\"" ;; 921c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 922c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 923c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm "$libobj" "${libobj}T" 924c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 925c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Create a libtool object file (analogous to a ".la" file), 926c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # but don't create it if we're doing a dry run. 927c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$run" && cat > ${libobj}T <<EOF 928c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# $libobj - a libtool object file 929c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 930c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 931c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Please DO NOT delete this file! 932c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# It is necessary for linking the library. 933c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 934c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Name of the PIC object. 935c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 936c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 937c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only build a PIC object if we are building libtool libraries. 938c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" = yes; then 939c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Without this assignment, base_compile gets emptied. 940c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fbsd_hideous_sh_bug=$base_compile 941c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 942c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pic_mode" != no; then 943c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott command="$base_compile $qsrcfile $pic_flag" 944c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 945c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Don't build PIC code 946c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott command="$base_compile $qsrcfile" 947c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 948c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 949c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -d "${xdir}$objdir"; then 950c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$mkdir ${xdir}$objdir" 951c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $mkdir ${xdir}$objdir 952c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit_status=$? 953c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 954c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $exit_status 955c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 956c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 957c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 958c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$output_obj"; then 959c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Place PIC objects in $objdir 960c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott command="$command -o $lobj" 961c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 962c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 963c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm "$lobj" "$output_obj" 964c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 965c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$command" 966c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if $run eval $lt_env "$command"; then : 967c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 968c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$output_obj" && $run $rm $removelist 969c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 970c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 971c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 972c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$need_locks" = warn && 973c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 974c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "\ 975c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott*** ERROR, $lockfile contains: 976c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott`cat $lockfile 2>/dev/null` 977c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 978c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottbut it should contain: 979c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott$srcfile 980c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 981c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThis indicates that another process is trying to use the same 982c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotttemporary object file, and libtool could not work around it because 983c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottyour compiler does not support \`-c' and \`-o' together. If you 984c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottrepeat this compilation, it may succeed, by chance, but you had better 985c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottavoid parallel builds (make -j) in this platform, or get a better 986c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcompiler." 987c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 988c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $removelist 989c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 990c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 991c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 992c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Just move the object if needed, then go on to compile the next one 993c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 994c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$mv $output_obj $lobj" 995c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if $run $mv $output_obj $lobj; then : 996c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 997c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott error=$? 998c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $removelist 999c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $error 1000c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1001c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1002c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1003c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Append the name of the PIC object to the libtool object file. 1004c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$run" && cat >> ${libobj}T <<EOF 1005c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottpic_object='$objdir/$objname' 1006c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1007c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 1008c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1009c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Allow error messages only from the first compilation. 1010c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$suppress_opt" = yes; then 1011c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott suppress_output=' >/dev/null 2>&1' 1012c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1013c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1014c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # No PIC object so indicate it doesn't exist in the libtool 1015c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # object file. 1016c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$run" && cat >> ${libobj}T <<EOF 1017c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottpic_object=none 1018c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1019c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 1020c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1021c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1022c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only build a position-dependent object if we build old libraries. 1023c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_old_libs" = yes; then 1024c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pic_mode" != yes; then 1025c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Don't build PIC code 1026c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott command="$base_compile $qsrcfile" 1027c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1028c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott command="$base_compile $qsrcfile $pic_flag" 1029c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1030c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$compiler_c_o" = yes; then 1031c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott command="$command -o $obj" 1032c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1033c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1034c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Suppress compiler output if we already did a PIC compilation. 1035c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott command="$command$suppress_output" 1036c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm "$obj" "$output_obj" 1037c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$command" 1038c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if $run eval $lt_env "$command"; then : 1039c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1040c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $removelist 1041c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1042c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1043c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1044c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$need_locks" = warn && 1045c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1046c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "\ 1047c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott*** ERROR, $lockfile contains: 1048c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott`cat $lockfile 2>/dev/null` 1049c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1050c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottbut it should contain: 1051c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott$srcfile 1052c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1053c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThis indicates that another process is trying to use the same 1054c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotttemporary object file, and libtool could not work around it because 1055c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottyour compiler does not support \`-c' and \`-o' together. If you 1056c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottrepeat this compilation, it may succeed, by chance, but you had better 1057c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottavoid parallel builds (make -j) in this platform, or get a better 1058c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcompiler." 1059c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1060c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $removelist 1061c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1062c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1063c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1064c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Just move the object if needed 1065c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1066c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$mv $output_obj $obj" 1067c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if $run $mv $output_obj $obj; then : 1068c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1069c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott error=$? 1070c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $removelist 1071c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $error 1072c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1073c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1074c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1075c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Append the name of the non-PIC object the libtool object file. 1076c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only append if the libtool object file exists. 1077c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$run" && cat >> ${libobj}T <<EOF 1078c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Name of the non-PIC object. 1079c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnon_pic_object='$objname' 1080c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1081c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 1082c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1083c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Append the name of the non-PIC object the libtool object file. 1084c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only append if the libtool object file exists. 1085c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$run" && cat >> ${libobj}T <<EOF 1086c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Name of the non-PIC object. 1087c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnon_pic_object=none 1088c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1089c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 1090c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1091c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1092c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $mv "${libobj}T" "${libobj}" 1093c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1094c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Unlock the critical section if it was locked 1095c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$need_locks" != no; then 1096c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm "$lockfile" 1097c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1098c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1099c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 1100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # libtool link mode 1103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link | relink) 1104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott modename="$modename: link" 1105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 1106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # It is impossible to link a dll without this setting, and 1108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # we shouldn't force the makefile maintainer to figure out 1109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # which system we are compiling for in order to pass an extra 1110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # flag for every libtool invocation. 1111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # allow_undefined=no 1112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # FIXME: Unfortunately, there are problems with the above when trying 1114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # to make a dll which has undefined symbols, in which case not 1115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # even a static library is built. For now, we need to specify 1116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # -no-undefined on the libtool link line when we can be certain 1117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # that all symbols are satisfied, otherwise we get a static library. 1118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott allow_undefined=yes 1119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 1121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott allow_undefined=yes 1122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libtool_args="$nonopt" 1125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott base_compile="$nonopt $@" 1126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$nonopt" 1127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$nonopt" 1128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_rpath= 1130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_rpath= 1131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_shlibpath= 1132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_shlibpath= 1133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott convenience= 1134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_convenience= 1135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs= 1136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_deplibs= 1137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compiler_flags= 1138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linker_flags= 1139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dllsearchpath= 1140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib_search_path=`pwd` 1141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott inst_prefix_dir= 1142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott avoid_version=no 1144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlfiles= 1145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlprefiles= 1146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlself=no 1147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_dynamic=no 1148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_symbols= 1149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_symbols_regex= 1150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott generated= 1151c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobjs= 1152c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ltlibs= 1153c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott module=no 1154c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott no_install=no 1155c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objs= 1156c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_objects= 1157c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott notinst_path= # paths that contain not-installed libtool libraries 1158c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott precious_files_regex= 1159c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prefer_static_libs=no 1160c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott preload=no 1161c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1162c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prevarg= 1163c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott release= 1164c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath= 1165c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xrpath= 1166c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott perm_rpath= 1167c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott temp_rpath= 1168c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott thread_safe=no 1169c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott vinfo= 1170c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott vinfo_number=no 1171c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott single_module="${wl}-single_module" 1172c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1173c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott func_infer_tag $base_compile 1174c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1175c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We need to know -static, to get the right output filenames. 1176c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg 1177c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 1178c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1179c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -all-static | -static | -static-libtool-libs) 1180c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1181c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -all-static) 1182c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 1183c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 1184c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1185c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$link_static_flag"; then 1186c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlopen_self=$dlopen_self_static 1187c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1188c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prefer_static_libs=yes 1189c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1190c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -static) 1191c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$pic_flag" && test -n "$link_static_flag"; then 1192c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlopen_self=$dlopen_self_static 1193c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1194c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prefer_static_libs=built 1195c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1196c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -static-libtool-libs) 1197c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$pic_flag" && test -n "$link_static_flag"; then 1198c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlopen_self=$dlopen_self_static 1199c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1200c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prefer_static_libs=yes 1201c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1202c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1203c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=no 1204c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_old_libs=yes 1205c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break 1206c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1207c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1208c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 1209c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1210c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # See if our shared archives depend on static archives. 1211c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$old_archive_from_new_cmds" && build_old_libs=yes 1212c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1213c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Go through the arguments, transforming them on the way. 1214c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott while test "$#" -gt 0; do 1215c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="$1" 1216c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift 1217c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1218c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1219c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 1220c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1221c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) qarg=$arg ;; 1222c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1223c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libtool_args="$libtool_args $qarg" 1224c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1225c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the previous option needs an argument, assign it. 1226c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$prev"; then 1227c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $prev in 1228c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output) 1229c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command @OUTPUT@" 1230c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command @OUTPUT@" 1231c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1232c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1233c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1234c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $prev in 1235c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlfiles|dlprefiles) 1236c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$preload" = no; then 1237c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add the symbol object into the linking commands. 1238c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command @SYMFILE@" 1239c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command @SYMFILE@" 1240c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott preload=yes 1241c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1242c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1243c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la | *.lo) ;; # We handle these cases below. 1244c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott force) 1245c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$dlself" = no; then 1246c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlself=needless 1247c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_dynamic=yes 1248c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1249c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1250c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1251c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1252c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott self) 1253c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$prev" = dlprefiles; then 1254c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlself=yes 1255c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 1256c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlself=yes 1257c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1258c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlself=needless 1259c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_dynamic=yes 1260c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1261c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1262c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1263c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1264c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 1265c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$prev" = dlfiles; then 1266c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlfiles="$dlfiles $arg" 1267c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1268c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlprefiles="$dlprefiles $arg" 1269c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1270c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1271c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1272c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1273c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1274c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1275c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott expsyms) 1276c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_symbols="$arg" 1277c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -f "$arg"; then 1278c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: symbol file \`$arg' does not exist" 1279c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1280c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1281c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1282c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1283c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1284c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott expsyms_regex) 1285c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_symbols_regex="$arg" 1286c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1287c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1288c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1289c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott inst_prefix) 1290c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott inst_prefix_dir="$arg" 1291c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1292c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1293c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1294c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott precious_regex) 1295c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott precious_files_regex="$arg" 1296c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1297c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1298c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1299c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott release) 1300c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott release="-$arg" 1301c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1302c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1303c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1304c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objectlist) 1305c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$arg"; then 1306c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_arg=$arg 1307c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott moreargs= 1308c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for fil in `cat $save_arg` 1309c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 1310c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# moreargs="$moreargs $fil" 1311c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=$fil 1312c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # A libtool-controlled object. 1313c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1314c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check to see that this really is a libtool object. 1315c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1316c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_object= 1317c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_object= 1318c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1319c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Read the .lo file 1320c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there is no directory component, then add one. 1321c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1322c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */* | *\\*) . $arg ;; 1323c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) . ./$arg ;; 1324c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1325c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1326c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$pic_object" || \ 1327c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$non_pic_object" || 1328c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$pic_object" = none && \ 1329c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$non_pic_object" = none; then 1330c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1331c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1332c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1333c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1334c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Extract subdirectory from the argument. 1335c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1336c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$xdir" = "X$arg"; then 1337c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir= 1338c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1339c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir="$xdir/" 1340c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1341c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1342c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pic_object" != none; then 1343c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Prepend the subdirectory the object is found in. 1344c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_object="$xdir$pic_object" 1345c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1346c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$prev" = dlfiles; then 1347c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1348c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlfiles="$dlfiles $pic_object" 1349c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1350c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1351c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1352c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If libtool objects are unsupported, then we need to preload. 1353c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=dlprefiles 1354c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1355c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1356c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1357c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # CHECK ME: I think I busted this. -Ossama 1358c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$prev" = dlprefiles; then 1359c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Preload the old-style object. 1360c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlprefiles="$dlprefiles $pic_object" 1361c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1362c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1363c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1364c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # A PIC object. 1365c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobjs="$libobjs $pic_object" 1366c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="$pic_object" 1367c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1368c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1369c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Non-PIC object. 1370c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$non_pic_object" != none; then 1371c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Prepend the subdirectory the object is found in. 1372c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_object="$xdir$non_pic_object" 1373c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1374c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # A standard non-PIC object 1375c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_objects="$non_pic_objects $non_pic_object" 1376c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$pic_object" || test "$pic_object" = none ; then 1377c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="$non_pic_object" 1378c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1379c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1380c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the PIC object exists, use it instead. 1381c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # $xdir was prepended to $pic_object above. 1382c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_object="$pic_object" 1383c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_objects="$non_pic_objects $non_pic_object" 1384c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1385c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1386c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only an error if not doing a dry-run. 1387c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$run"; then 1388c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1389c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1390c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1391c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Dry-run case. 1392c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1393c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Extract subdirectory from the argument. 1394c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1395c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$xdir" = "X$arg"; then 1396c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir= 1397c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1398c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir="$xdir/" 1399c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1400c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1401c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1402c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1403c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobjs="$libobjs $pic_object" 1404c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_objects="$non_pic_objects $non_pic_object" 1405c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1406c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1407c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 1408c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1409c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: link input file \`$save_arg' does not exist" 1410c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1411c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1412c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=$save_arg 1413c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1414c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1415c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1416c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath | xrpath) 1417c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We need an absolute path. 1418c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1419c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) ;; 1420c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 1421c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: only absolute run-paths are allowed" 1>&2 1422c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1423c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1424c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1425c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$prev" = rpath; then 1426c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$rpath " in 1427c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $arg "*) ;; 1428c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) rpath="$rpath $arg" ;; 1429c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1430c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1431c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$xrpath " in 1432c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $arg "*) ;; 1433c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) xrpath="$xrpath $arg" ;; 1434c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1435c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1436c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1437c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1438c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1439c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xcompiler) 1440c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compiler_flags="$compiler_flags $qarg" 1441c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1442c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $qarg" 1443c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $qarg" 1444c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1445c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1446c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xlinker) 1447c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linker_flags="$linker_flags $qarg" 1448c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compiler_flags="$compiler_flags $wl$qarg" 1449c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1450c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $wl$qarg" 1451c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $wl$qarg" 1452c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1453c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1454c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xcclinker) 1455c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linker_flags="$linker_flags $qarg" 1456c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compiler_flags="$compiler_flags $qarg" 1457c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1458c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $qarg" 1459c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $qarg" 1460c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1461c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1462c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shrext) 1463c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shrext_cmds="$arg" 1464c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1465c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1466c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1467c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin_framework|darwin_framework_skip) 1468c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 1469c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $arg" 1470c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $arg" 1471c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1472c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1473c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1474c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 1475c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "$prev=\"\$arg\"" 1476c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1477c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1478c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1479c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1480c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # test -n "$prev" 1481c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1482c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prevarg="$arg" 1483c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1484c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1485c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -all-static) 1486c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$link_static_flag"; then 1487c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $link_static_flag" 1488c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $link_static_flag" 1489c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1490c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1491c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1492c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1493c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -allow-undefined) 1494c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # FIXME: remove this flag sometime in the future. 1495c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 1496c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1497c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1498c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1499c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -avoid-version) 1500c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott avoid_version=yes 1501c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1502c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1503c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1504c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -dlopen) 1505c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=dlfiles 1506c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1507c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1508c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1509c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -dlpreopen) 1510c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=dlprefiles 1511c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1512c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1513c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1514c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -export-dynamic) 1515c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_dynamic=yes 1516c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1517c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1518c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1519c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -export-symbols | -export-symbols-regex) 1520c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1521c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: more than one -exported-symbols argument is not allowed" 1522c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1523c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1524c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$arg" = "X-export-symbols"; then 1525c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=expsyms 1526c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1527c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=expsyms_regex 1528c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1529c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1530c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1531c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1532c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -framework|-arch|-isysroot) 1533c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $CC " in 1534c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" ${arg} ${1} "* | *" ${arg} ${1} "*) 1535c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=darwin_framework_skip ;; 1536c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) compiler_flags="$compiler_flags $arg" 1537c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=darwin_framework ;; 1538c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1539c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $arg" 1540c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $arg" 1541c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1542c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1543c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1544c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -inst-prefix-dir) 1545c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=inst_prefix 1546c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1547c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1548c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1549c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 1550c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # so, if we see these flags be careful not to treat them like -L 1551c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -L[A-Z][A-Z]*:*) 1552c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $with_gcc/$host in 1553c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott no/*-*-irix* | /*-*-irix*) 1554c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $arg" 1555c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $arg" 1556c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1557c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1558c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1559c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1560c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1561c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -L*) 1562c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 1563c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We need an absolute path. 1564c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $dir in 1565c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) ;; 1566c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 1567c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott absdir=`cd "$dir" && pwd` 1568c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$absdir"; then 1569c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 1570c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott absdir="$dir" 1571c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott notinst_path="$notinst_path $dir" 1572c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1573c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir="$absdir" 1574c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1575c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1576c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$deplibs " in 1577c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" -L$dir "*) ;; 1578c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 1579c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplibs -L$dir" 1580c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib_search_path="$lib_search_path $dir" 1581c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1582c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1583c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 1584c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1585c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 1586c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case :$dllsearchpath: in 1587c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *":$dir:"*) ;; 1588c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) dllsearchpath="$dllsearchpath:$dir";; 1589c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1590c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case :$dllsearchpath: in 1591c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *":$testbindir:"*) ;; 1592c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) dllsearchpath="$dllsearchpath:$testbindir";; 1593c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1594c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1595c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1596c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1597c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1598c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1599c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -l*) 1600c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 1601c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 1602c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 1603c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # These systems don't actually have a C or math library (as such) 1604c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1605c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1606c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-os2*) 1607c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # These systems don't actually have a C library (as such) 1608c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$arg" = "X-lc" && continue 1609c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1610c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1611c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do not include libc due to us having libc/libc_r. 1612c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$arg" = "X-lc" && continue 1613c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1614c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-rhapsody* | *-*-darwin1.[012]) 1615c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Rhapsody C and math libraries are in the System framework 1616c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplibs -framework System" 1617c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1618c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1619c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-sco3.2v5* | *-*-sco5v6*) 1620c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Causes problems with __ctype 1621c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$arg" = "X-lc" && continue 1622c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1623c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 1624c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Compiler inserts libc in the correct place for threads to work 1625c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$arg" = "X-lc" && continue 1626c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1627c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1628c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "X$arg" = "X-lc_r"; then 1629c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 1630c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1631c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do not include libc_r directly, use -pthread flag. 1632c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1633c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1634c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1635c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1636c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplibs $arg" 1637c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1638c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1639c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1640c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Tru64 UNIX uses -model [arg] to determine the layout of C++ 1641c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # classes, name mangling, and exception handling. 1642c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -model) 1643c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $arg" 1644c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compiler_flags="$compiler_flags $arg" 1645c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $arg" 1646c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=xcompiler 1647c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1648c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1649c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1650c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 1651c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compiler_flags="$compiler_flags $arg" 1652c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $arg" 1653c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $arg" 1654c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1655c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1656c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1657c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -multi_module) 1658c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott single_module="${wl}-multi_module" 1659c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1660c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1661c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1662c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -module) 1663c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott module=yes 1664c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1665c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1666c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1667c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 1668c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # -r[0-9][0-9]* specifies the processor on the SGI compiler 1669c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 1670c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # +DA*, +DD* enable 64-bit mode on the HP compiler 1671c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # -q* pass through compiler args for the IBM compiler 1672c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # -m* pass through architecture-specific compiler args for GCC 1673c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # -m*, -t[45]*, -txscale* pass through architecture-specific 1674c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # compiler args for GCC 1675c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 1676c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # -F/path gives path to uninstalled frameworks, gcc on darwin 1677c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # @file GCC response files 1678c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 1679c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 1680c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1681c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Unknown arguments in both finalize_command and compile_command need 1682c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # to be aesthetically quoted because they are evaled later. 1683c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1684c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1685c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1686c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="\"$arg\"" 1687c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1688c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1689c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $arg" 1690c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $arg" 1691c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compiler_flags="$compiler_flags $arg" 1692c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1693c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1694c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1695c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -shrext) 1696c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=shrext 1697c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1698c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1699c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1700c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -no-fast-install) 1701c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fast_install=no 1702c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1703c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1704c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1705c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -no-install) 1706c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 1707c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 1708c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The PATH hackery in wrapper scripts is required on Windows 1709c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # and Darwin in order for the loader to find any dlls it needs. 1710c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 1711c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 1712c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fast_install=no 1713c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1714c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) no_install=yes ;; 1715c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1716c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1717c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1718c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1719c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -no-undefined) 1720c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott allow_undefined=no 1721c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1722c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1723c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1724c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -objectlist) 1725c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=objectlist 1726c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1727c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1728c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1729c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -o) prev=output ;; 1730c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1731c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -precious-files-regex) 1732c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=precious_regex 1733c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1734c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1735c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1736c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -release) 1737c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=release 1738c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1739c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1740c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1741c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -rpath) 1742c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=rpath 1743c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1744c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1745c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1746c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -R) 1747c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=xrpath 1748c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1749c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1750c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1751c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -R*) 1752c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 1753c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We need an absolute path. 1754c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $dir in 1755c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) ;; 1756c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 1757c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: only absolute run-paths are allowed" 1>&2 1758c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1759c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1760c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1761c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$xrpath " in 1762c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $dir "*) ;; 1763c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) xrpath="$xrpath $dir" ;; 1764c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1765c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1766c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1767c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1768c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -static | -static-libtool-libs) 1769c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The effects of -static are defined in a previous loop. 1770c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We used to do the same as -all-static on platforms that 1771c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # didn't have a PIC flag, but the assumption that the effects 1772c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # would be equivalent was wrong. It would break on at least 1773c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Digital Unix and AIX. 1774c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1775c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1776c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1777c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -thread-safe) 1778c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott thread_safe=yes 1779c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1780c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1781c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1782c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -version-info) 1783c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=vinfo 1784c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1785c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1786c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -version-number) 1787c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=vinfo 1788c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott vinfo_number=yes 1789c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1790c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1791c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1792c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -Wc,*) 1793c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 1794c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg= 1795c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS=',' 1796c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for flag in $args; do 1797c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 1798c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $flag in 1799c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1800c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott flag="\"$flag\"" 1801c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1802c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1803c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="$arg $wl$flag" 1804c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compiler_flags="$compiler_flags $flag" 1805c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 1806c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 1807c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1808c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1809c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1810c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -Wl,*) 1811c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 1812c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg= 1813c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS=',' 1814c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for flag in $args; do 1815c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 1816c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $flag in 1817c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1818c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott flag="\"$flag\"" 1819c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1820c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1821c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="$arg $wl$flag" 1822c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compiler_flags="$compiler_flags $wl$flag" 1823c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linker_flags="$linker_flags $flag" 1824c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 1825c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 1826c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1827c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1828c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1829c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -Xcompiler) 1830c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=xcompiler 1831c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1832c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1833c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1834c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -Xlinker) 1835c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=xlinker 1836c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1837c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1838c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1839c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -XCClinker) 1840c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=xcclinker 1841c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1842c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1843c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1844c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Some other compiler flag. 1845c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -* | +*) 1846c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Unknown arguments in both finalize_command and compile_command need 1847c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # to be aesthetically quoted because they are evaled later. 1848c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1849c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1850c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1851c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="\"$arg\"" 1852c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1853c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1854c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1855c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1856c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.$objext) 1857c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # A standard object. 1858c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objs="$objs $arg" 1859c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1860c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1861c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.lo) 1862c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # A libtool-controlled object. 1863c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1864c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check to see that this really is a libtool object. 1865c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1866c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_object= 1867c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_object= 1868c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1869c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Read the .lo file 1870c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there is no directory component, then add one. 1871c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1872c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */* | *\\*) . $arg ;; 1873c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) . ./$arg ;; 1874c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1875c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1876c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$pic_object" || \ 1877c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$non_pic_object" || 1878c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$pic_object" = none && \ 1879c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$non_pic_object" = none; then 1880c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1881c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1882c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1883c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1884c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Extract subdirectory from the argument. 1885c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1886c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$xdir" = "X$arg"; then 1887c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir= 1888c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1889c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir="$xdir/" 1890c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1891c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1892c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pic_object" != none; then 1893c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Prepend the subdirectory the object is found in. 1894c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_object="$xdir$pic_object" 1895c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1896c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$prev" = dlfiles; then 1897c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1898c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlfiles="$dlfiles $pic_object" 1899c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1900c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1901c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1902c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If libtool objects are unsupported, then we need to preload. 1903c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev=dlprefiles 1904c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1905c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1906c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1907c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # CHECK ME: I think I busted this. -Ossama 1908c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$prev" = dlprefiles; then 1909c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Preload the old-style object. 1910c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlprefiles="$dlprefiles $pic_object" 1911c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1912c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1913c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1914c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # A PIC object. 1915c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobjs="$libobjs $pic_object" 1916c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="$pic_object" 1917c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1918c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1919c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Non-PIC object. 1920c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$non_pic_object" != none; then 1921c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Prepend the subdirectory the object is found in. 1922c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_object="$xdir$non_pic_object" 1923c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1924c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # A standard non-PIC object 1925c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_objects="$non_pic_objects $non_pic_object" 1926c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$pic_object" || test "$pic_object" = none ; then 1927c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="$non_pic_object" 1928c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1929c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1930c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the PIC object exists, use it instead. 1931c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # $xdir was prepended to $pic_object above. 1932c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_object="$pic_object" 1933c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_objects="$non_pic_objects $non_pic_object" 1934c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1935c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1936c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only an error if not doing a dry-run. 1937c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$run"; then 1938c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1939c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 1940c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1941c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Dry-run case. 1942c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1943c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Extract subdirectory from the argument. 1944c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1945c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$xdir" = "X$arg"; then 1946c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir= 1947c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1948c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xdir="$xdir/" 1949c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1950c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1951c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1952c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1953c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobjs="$libobjs $pic_object" 1954c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott non_pic_objects="$non_pic_objects $non_pic_object" 1955c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1956c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1957c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1958c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1959c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.$libext) 1960c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # An archive. 1961c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplibs $arg" 1962c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_deplibs="$old_deplibs $arg" 1963c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1964c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1965c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1966c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la) 1967c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # A libtool-controlled library. 1968c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1969c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$prev" = dlfiles; then 1970c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This library was specified with -dlopen. 1971c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlfiles="$dlfiles $arg" 1972c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1973c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$prev" = dlprefiles; then 1974c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The library was specified with -dlpreopen. 1975c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlprefiles="$dlprefiles $arg" 1976c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 1977c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 1978c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplibs $arg" 1979c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 1980c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 1981c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1982c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1983c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Some other compiler argument. 1984c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 1985c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Unknown arguments in both finalize_command and compile_command need 1986c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # to be aesthetically quoted because they are evaled later. 1987c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1988c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 1989c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1990c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="\"$arg\"" 1991c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1992c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 1993c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 1994c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac # arg 1995c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 1996c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Now actually substitute the argument into the commands. 1997c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$arg"; then 1998c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $arg" 1999c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $arg" 2000c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2001c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done # argument parsing loop 2002c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2003c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$prev"; then 2004c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 2005c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 2006c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2007c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2008c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2009c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 2010c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval arg=\"$export_dynamic_flag_spec\" 2011c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $arg" 2012c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $arg" 2013c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2014c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2015c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldlibs= 2016c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # calculate the name of the file, without its directory 2017c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 2018c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobjs_save="$libobjs" 2019c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2020c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$shlibpath_var"; then 2021c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # get the directories listed in $shlibpath_var 2022c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 2023c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2024c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shlib_search_path= 2025c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2026c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 2027c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 2028c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2029c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2030c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$output_objdir" = "X$output"; then 2031c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output_objdir="$objdir" 2032c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2033c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output_objdir="$output_objdir/$objdir" 2034c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2035c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Create the object directory. 2036c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -d "$output_objdir"; then 2037c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$mkdir $output_objdir" 2038c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $mkdir $output_objdir 2039c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit_status=$? 2040c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 2041c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $exit_status 2042c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2043c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2044c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2045c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Determine the type of output 2046c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $output in 2047c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott "") 2048c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: you must specify an output file" 1>&2 2049c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 2050c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2051c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2052c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.$libext) linkmode=oldlib ;; 2053c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.lo | *.$objext) linkmode=obj ;; 2054c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la) linkmode=lib ;; 2055c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) linkmode=prog ;; # Anything else should be a program. 2056c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2057c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2058c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 2059c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin* | *mingw* | *pw32*) 2060c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # don't eliminate duplications in $postdeps and $predeps 2061c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott duplicate_compiler_generated_deps=yes 2062c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2063c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 2064c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott duplicate_compiler_generated_deps=$duplicate_deps 2065c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2066c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2067c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott specialdeplibs= 2068c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2069c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libs= 2070c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Find all interdependent deplibs by searching for libraries 2071c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # that are linked more than once (e.g. -la -lb -la) 2072c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $deplibs; do 2073c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$duplicate_deps" = "Xyes" ; then 2074c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$libs " in 2075c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2076c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2077c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2078c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libs="$libs $deplib" 2079c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2080c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2081c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = lib; then 2082c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libs="$predeps $libs $compiler_lib_search_path $postdeps" 2083c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2084c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Compute libraries that are listed more than once in $predeps 2085c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # $postdeps and mark them as special (i.e., whose duplicates are 2086c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # not to be eliminated). 2087c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pre_post_deps= 2088c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 2089c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for pre_post_dep in $predeps $postdeps; do 2090c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$pre_post_deps " in 2091c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 2092c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2093c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pre_post_deps="$pre_post_deps $pre_post_dep" 2094c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2095c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2096c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pre_post_deps= 2097c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2098c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2099c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs= 2100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdependency_libs= 2101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newlib_search_path= 2102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott need_relink=no # whether we're linking any uninstalled libtool libraries 2103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott notinst_deplibs= # not-installed libtool libraries 2104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $linkmode in 2105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib) 2106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott passes="conv link" 2107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for file in $dlfiles $dlprefiles; do 2108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file in 2109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la) ;; 2110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 2111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 2112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prog) 2118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs= 2119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs= 2120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott alldeplibs=no 2121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlfiles= 2122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlprefiles= 2123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott passes="conv scan dlopen dlpreopen link" 2124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) passes="conv" 2126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for pass in $passes; do 2129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode,$pass" = "lib,link" || 2130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$linkmode,$pass" = "prog,scan"; then 2131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libs="$deplibs" 2132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs= 2133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = prog; then 2135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $pass in 2136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlopen) libs="$dlfiles" ;; 2137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlpreopen) libs="$dlprefiles" ;; 2138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link) 2139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libs="$deplibs %DEPLIBS%" 2140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 2141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = dlopen; then 2145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Collect dlpreopened libraries 2146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_deplibs="$deplibs" 2147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs= 2148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $libs; do 2150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib= 2151c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott found=no 2152c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $deplib in 2153c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 2154c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode,$pass" = "prog,link"; then 2155c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs="$deplib $compile_deplibs" 2156c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs="$deplib $finalize_deplibs" 2157c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2158c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compiler_flags="$compiler_flags $deplib" 2159c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2160c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2161c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2162c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -l*) 2163c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" != lib && test "$linkmode" != prog; then 2164c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 2165c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2166c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2167c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 2168c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = lib; then 2169c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 2170c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2171c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 2172c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2173c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for searchdir in $searchdirs; do 2174c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for search_ext in .la $std_shrext .so .a; do 2175c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Search the libtool library 2176c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib="$searchdir/lib${name}${search_ext}" 2177c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$lib"; then 2178c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$search_ext" = ".la"; then 2179c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott found=yes 2180c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2181c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott found=no 2182c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2183c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break 2 2184c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2185c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2186c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2187c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$found" != yes; then 2188c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # deplib doesn't seem to be a libtool library 2189c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode,$pass" = "prog,link"; then 2190c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs="$deplib $compile_deplibs" 2191c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs="$deplib $finalize_deplibs" 2192c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2193c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2194c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2195c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2196c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2197c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else # deplib is a libtool library 2198c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 2199c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We need to do some special things here, and not later. 2200c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 2201c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $predeps $postdeps " in 2202c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $deplib "*) 2203c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '2q' $lib | 2204c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2205c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott library_names= 2206c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_library= 2207c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $lib in 2208c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */* | *\\*) . $lib ;; 2209c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) . ./$lib ;; 2210c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2211c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for l in $old_library $library_names; do 2212c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ll="$l" 2213c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2214c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$ll" = "X$old_library" ; then # only static version available 2215c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott found=no 2216c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2217c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$ladir" = "X$lib" && ladir="." 2218c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib=$ladir/$old_library 2219c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode,$pass" = "prog,link"; then 2220c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs="$deplib $compile_deplibs" 2221c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs="$deplib $finalize_deplibs" 2222c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2223c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2224c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2225c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2226c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2227c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2228c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2229c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2230c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) ;; 2231c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2232c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2233c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2234c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; # -l 2235c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -L*) 2236c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $linkmode in 2237c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib) 2238c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2239c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$pass" = conv && continue 2240c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdependency_libs="$deplib $newdependency_libs" 2241c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2242c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2243c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prog) 2244c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = conv; then 2245c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2246c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2247c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2248c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = scan; then 2249c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2250c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2251c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs="$deplib $compile_deplibs" 2252c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs="$deplib $finalize_deplibs" 2253c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2254c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2255c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2256c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 2257c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 2258c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2259c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac # linkmode 2260c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2261c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; # -L 2262c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -R*) 2263c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = link; then 2264c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 2265c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make sure the xrpath contains only unique directories. 2266c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$xrpath " in 2267c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $dir "*) ;; 2268c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) xrpath="$xrpath $dir" ;; 2269c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2270c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2271c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2272c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2273c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2274c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la) lib="$deplib" ;; 2275c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.$libext) 2276c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = conv; then 2277c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2278c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2279c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2280c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $linkmode in 2281c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib) 2282c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott valid_a_lib=no 2283c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $deplibs_check_method in 2284c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott match_pattern*) 2285c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $deplibs_check_method 2286c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 2287c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if eval $echo \"$deplib\" 2>/dev/null \ 2288c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott | $SED 10q \ 2289c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott | $EGREP "$match_pattern_regex" > /dev/null; then 2290c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott valid_a_lib=yes 2291c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2292c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2293c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pass_all) 2294c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott valid_a_lib=yes 2295c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2296c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2297c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$valid_a_lib" != yes; then 2298c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 2299c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: Trying to link with static lib archive $deplib." 2300c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** I have the capability to make that library automatically link in when" 2301c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** you link to this library. But I can only do this if you have a" 2302c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** shared version of the library, which you do not appear to have" 2303c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** because the file extensions .$libext of this argument makes me believe" 2304c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** that it is just a static archive that I should not used here." 2305c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2306c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 2307c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: Linking the shared library $output against the" 2308c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** static library $deplib is not portable!" 2309c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2310c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2311c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2312c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2313c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prog) 2314c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" != link; then 2315c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2316c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2317c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs="$deplib $compile_deplibs" 2318c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs="$deplib $finalize_deplibs" 2319c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2320c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2321c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2322c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac # linkmode 2323c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; # *.$libext 2324c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.lo | *.$objext) 2325c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = conv; then 2326c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2327c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$linkmode" = prog; then 2328c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 2329c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there is no dlopen support or we're linking statically, 2330c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # we need to preload. 2331c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlprefiles="$newdlprefiles $deplib" 2332c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs="$deplib $compile_deplibs" 2333c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs="$deplib $finalize_deplibs" 2334c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2335c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlfiles="$newdlfiles $deplib" 2336c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2337c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2338c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2339c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2340c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott %DEPLIBS%) 2341c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott alldeplibs=yes 2342c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2343c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2344c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac # case $deplib 2345c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$found" = yes || test -f "$lib"; then : 2346c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2347c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 2348c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2349c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2350c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2351c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check to see that this really is a libtool archive. 2352c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2353c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2354c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2355c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2356c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2357c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2358c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2359c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$ladir" = "X$lib" && ladir="." 2360c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2361c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlname= 2362c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlopen= 2363c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlpreopen= 2364c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libdir= 2365c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott library_names= 2366c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_library= 2367c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the library was installed with an old release of libtool, 2368c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # it will not redefine variables installed, or shouldnotlink 2369c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott installed=yes 2370c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shouldnotlink=no 2371c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott avoidtemprpath= 2372c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2373c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2374c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Read the .la file 2375c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $lib in 2376c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */* | *\\*) . $lib ;; 2377c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) . ./$lib ;; 2378c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2379c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2380c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode,$pass" = "lib,link" || 2381c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$linkmode,$pass" = "prog,scan" || 2382c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { test "$linkmode" != prog && test "$linkmode" != lib; }; then 2383c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 2384c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 2385c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2386c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2387c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = conv; then 2388c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only check for convenience libraries 2389c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$lib $deplibs" 2390c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$libdir"; then 2391c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$old_library"; then 2392c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2393c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2394c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2395c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # It is a libtool convenience library, so add in its objects. 2396c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott convenience="$convenience $ladir/$objdir/$old_library" 2397c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_convenience="$old_convenience $ladir/$objdir/$old_library" 2398c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_libs= 2399c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $dependency_libs; do 2400c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2401c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$duplicate_deps" = "Xyes" ; then 2402c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$tmp_libs " in 2403c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2404c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2405c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2406c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_libs="$tmp_libs $deplib" 2407c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2408c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$linkmode" != prog && test "$linkmode" != lib; then 2409c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$lib' is not a convenience library" 1>&2 2410c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2411c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2412c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2413c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # $pass = conv 2414c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2415c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2416c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Get the name of the library we link against. 2417c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linklib= 2418c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for l in $old_library $library_names; do 2419c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linklib="$l" 2420c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2421c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$linklib"; then 2422c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2423c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2424c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2425c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2426c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This library was specified with -dlopen. 2427c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = dlopen; then 2428c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$libdir"; then 2429c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 2430c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2431c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2432c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$dlname" || 2433c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$dlopen_support" != yes || 2434c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$build_libtool_libs" = no; then 2435c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there is no dlname, no dlopen support or we're linking 2436c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # statically, we need to preload. We also need to preload any 2437c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # dependent libraries so libltdl's deplib preloader doesn't 2438c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # bomb out in the load deplibs phase. 2439c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlprefiles="$dlprefiles $lib $dependency_libs" 2440c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2441c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlfiles="$newdlfiles $lib" 2442c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2443c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2444c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # $pass = dlopen 2445c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2446c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We need an absolute path. 2447c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $ladir in 2448c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 2449c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 2450c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott abs_ladir=`cd "$ladir" && pwd` 2451c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$abs_ladir"; then 2452c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 2453c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 2454c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott abs_ladir="$ladir" 2455c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2456c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2457c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2458c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 2459c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2460c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Find the relevant object directory and library name. 2461c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$installed" = Xyes; then 2462c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2463c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: library \`$lib' was moved." 1>&2 2464c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir="$ladir" 2465c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott absdir="$abs_ladir" 2466c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libdir="$abs_ladir" 2467c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2468c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir="$libdir" 2469c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott absdir="$libdir" 2470c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2471c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 2472c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2473c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2474c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir="$ladir" 2475c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott absdir="$abs_ladir" 2476c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Remove this search path later 2477c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott notinst_path="$notinst_path $abs_ladir" 2478c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2479c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir="$ladir/$objdir" 2480c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott absdir="$abs_ladir/$objdir" 2481c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Remove this search path later 2482c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott notinst_path="$notinst_path $abs_ladir" 2483c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2484c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # $installed = yes 2485c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 2486c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2487c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This library was specified with -dlpreopen. 2488c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = dlpreopen; then 2489c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$libdir"; then 2490c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 2491c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2492c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2493c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Prefer using a static library (so that no silly _DYNAMIC symbols 2494c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # are required to link). 2495c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$old_library"; then 2496c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlprefiles="$newdlprefiles $dir/$old_library" 2497c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Otherwise, use the dlname, so that lt_dlopen finds it. 2498c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test -n "$dlname"; then 2499c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlprefiles="$newdlprefiles $dir/$dlname" 2500c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2501c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlprefiles="$newdlprefiles $dir/$linklib" 2502c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2503c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # $pass = dlpreopen 2504c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2505c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$libdir"; then 2506c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Link the convenience library 2507c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = lib; then 2508c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$dir/$old_library $deplibs" 2509c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$linkmode,$pass" = "prog,link"; then 2510c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs="$dir/$old_library $compile_deplibs" 2511c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs="$dir/$old_library $finalize_deplibs" 2512c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2513c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$lib $deplibs" # used for prog,scan pass 2514c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2515c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2516c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2517c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2518c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2519c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = prog && test "$pass" != link; then 2520c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newlib_search_path="$newlib_search_path $ladir" 2521c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$lib $deplibs" 2522c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2523c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linkalldeplibs=no 2524c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$link_all_deplibs" != no || test -z "$library_names" || 2525c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$build_libtool_libs" = no; then 2526c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linkalldeplibs=yes 2527c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2528c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2529c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_libs= 2530c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $dependency_libs; do 2531c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $deplib in 2532c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 2533c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2534c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Need to link against all dependency_libs? 2535c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkalldeplibs" = yes; then 2536c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 2537c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2538c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Need to hardcode shared library paths 2539c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # or/and link against static libraries 2540c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdependency_libs="$deplib $newdependency_libs" 2541c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2542c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$duplicate_deps" = "Xyes" ; then 2543c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$tmp_libs " in 2544c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2545c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2546c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2547c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_libs="$tmp_libs $deplib" 2548c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done # for deplib 2549c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2550c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # $linkmode = prog... 2551c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2552c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode,$pass" = "prog,link"; then 2553c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$library_names" && 2554c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { { test "$prefer_static_libs" = no || 2555c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$prefer_static_libs,$installed" = "built,yes"; } || 2556c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$old_library"; }; then 2557c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We need to hardcode the library path 2558c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 2559c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make sure the rpath contains only unique directories. 2560c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$temp_rpath " in 2561c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $dir "*) ;; 2562c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $absdir "*) ;; 2563c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) temp_rpath="$temp_rpath $absdir" ;; 2564c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2565c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2566c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2567c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Hardcode the library path. 2568c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Skip directories that are in the system default run-time 2569c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # search path. 2570c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $sys_lib_dlsearch_path " in 2571c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $absdir "*) ;; 2572c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 2573c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$compile_rpath " in 2574c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $absdir "*) ;; 2575c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) compile_rpath="$compile_rpath $absdir" 2576c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2577c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2578c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2579c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $sys_lib_dlsearch_path " in 2580c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 2581c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 2582c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$finalize_rpath " in 2583c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 2584c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) finalize_rpath="$finalize_rpath $libdir" 2585c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2586c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2587c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2588c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # $linkmode,$pass = prog,link... 2589c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2590c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$alldeplibs" = yes && 2591c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { test "$deplibs_check_method" = pass_all || 2592c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { test "$build_libtool_libs" = yes && 2593c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$library_names"; }; }; then 2594c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We only need to search for static libraries 2595c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 2596c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2597c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2598c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2599c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link_static=no # Whether the deplib will be linked statically 2600c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott use_static_libs=$prefer_static_libs 2601c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$use_static_libs" = built && test "$installed" = yes ; then 2602c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott use_static_libs=no 2603c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2604c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$library_names" && 2605c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { test "$use_static_libs" = no || test -z "$old_library"; }; then 2606c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$installed" = no; then 2607c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott notinst_deplibs="$notinst_deplibs $lib" 2608c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott need_relink=yes 2609c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2610c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This is a shared library 2611c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2612c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Warn about portability, can't link against -module's on 2613c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # some systems (darwin) 2614c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$shouldnotlink" = yes && test "$pass" = link ; then 2615c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 2616c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = prog; then 2617c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: Linking the executable $output against the loadable module" 2618c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2619c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: Linking the shared library $output against the loadable module" 2620c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2621c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** $linklib is not portable!" 2622c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2623c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = lib && 2624c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$hardcode_into_libs" = yes; then 2625c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Hardcode the library path. 2626c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Skip directories that are in the system default run-time 2627c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # search path. 2628c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $sys_lib_dlsearch_path " in 2629c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $absdir "*) ;; 2630c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 2631c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$compile_rpath " in 2632c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $absdir "*) ;; 2633c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) compile_rpath="$compile_rpath $absdir" 2634c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2635c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2636c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2637c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $sys_lib_dlsearch_path " in 2638c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 2639c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 2640c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$finalize_rpath " in 2641c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 2642c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) finalize_rpath="$finalize_rpath $libdir" 2643c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2644c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2645c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2646c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2647c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2648c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$old_archive_from_expsyms_cmds"; then 2649c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # figure out the soname 2650c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $library_names 2651c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott realname="$2" 2652c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift; shift 2653c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libname=`eval \\$echo \"$libname_spec\"` 2654c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # use dlname if we got it. it's perfectly good, no? 2655c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$dlname"; then 2656c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott soname="$dlname" 2657c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test -n "$soname_spec"; then 2658c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # bleh windows 2659c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 2660c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin* | mingw*) 2661c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=`expr $current - $age` 2662c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix="-$major" 2663c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2664c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2665c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval soname=\"$soname_spec\" 2666c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2667c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott soname="$realname" 2668c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2669c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2670c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make a new name for the extract_expsyms_cmds to use 2671c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott soroot="$soname" 2672c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 2673c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 2674c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2675c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the library has no export list, then create one now 2676c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$output_objdir/$soname-def"; then : 2677c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2678c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "extracting exported symbol list from \`$soname'" 2679c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 2680c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$extract_expsyms_cmds 2681c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 2682c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 2683c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 2684c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 2685c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || exit $? 2686c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2687c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 2688c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2689c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2690c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Create $newlib 2691c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$output_objdir/$newlib"; then :; else 2692c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "generating import library for \`$soname'" 2693c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 2694c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$old_archive_from_expsyms_cmds 2695c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 2696c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 2697c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 2698c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 2699c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || exit $? 2700c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2701c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 2702c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2703c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # make sure the library variables are pointing to the new library 2704c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir=$output_objdir 2705c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linklib=$newlib 2706c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # test -n "$old_archive_from_expsyms_cmds" 2707c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2708c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = prog || test "$mode" != relink; then 2709c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_shlibpath= 2710c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_dir= 2711c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add= 2712c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib_linked=yes 2713c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $hardcode_action in 2714c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott immediate | unsupported) 2715c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$hardcode_direct" = no; then 2716c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="$dir/$linklib" 2717c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 2718c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 2719c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-sysv4*uw2*) add_dir="-L$dir" ;; 2720c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 2721c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-unixware7*) add_dir="-L$dir" ;; 2722c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-darwin* ) 2723c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # if the lib is a module then we can not link against 2724c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # it, someone is ignoring the new warnings I added 2725c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if /usr/bin/file -L $add 2> /dev/null | 2726c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $EGREP ": [^:]* bundle" >/dev/null ; then 2727c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "** Warning, lib $linklib is a module, not a shared library" 2728c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$old_library" ; then 2729c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 2730c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "** And there doesn't seem to be a static archive available" 2731c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "** The link will probably fail, sorry" 2732c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2733c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="$dir/$old_library" 2734c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2735c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2736c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2737c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$hardcode_minus_L" = no; then 2738c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 2739c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-sunos*) add_shlibpath="$dir" ;; 2740c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2741c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_dir="-L$dir" 2742c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="-l$name" 2743c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$hardcode_shlibpath_var" = no; then 2744c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_shlibpath="$dir" 2745c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="-l$name" 2746c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2747c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib_linked=no 2748c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2749c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2750c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink) 2751c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$hardcode_direct" = yes; then 2752c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="$dir/$linklib" 2753c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$hardcode_minus_L" = yes; then 2754c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_dir="-L$dir" 2755c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Try looking first in the location we're being installed to. 2756c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$inst_prefix_dir"; then 2757c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $libdir in 2758c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]*) 2759c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_dir="$add_dir -L$inst_prefix_dir$libdir" 2760c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2761c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2762c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2763c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="-l$name" 2764c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$hardcode_shlibpath_var" = yes; then 2765c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_shlibpath="$dir" 2766c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="-l$name" 2767c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2768c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib_linked=no 2769c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2770c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2771c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) lib_linked=no ;; 2772c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2773c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2774c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$lib_linked" != yes; then 2775c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: configuration error: unsupported hardcode properties" 2776c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2777c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2778c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2779c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$add_shlibpath"; then 2780c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case :$compile_shlibpath: in 2781c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *":$add_shlibpath:"*) ;; 2782c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 2783c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2784c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2785c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = prog; then 2786c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 2787c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$add" && compile_deplibs="$add $compile_deplibs" 2788c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2789c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$add_dir" && deplibs="$add_dir $deplibs" 2790c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$add" && deplibs="$add $deplibs" 2791c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$hardcode_direct" != yes && \ 2792c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$hardcode_minus_L" != yes && \ 2793c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$hardcode_shlibpath_var" = yes; then 2794c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case :$finalize_shlibpath: in 2795c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *":$libdir:"*) ;; 2796c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2797c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2798c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2799c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2800c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2801c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2802c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = prog || test "$mode" = relink; then 2803c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_shlibpath= 2804c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_dir= 2805c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add= 2806c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Finalize command for both is simple: just hardcode it. 2807c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$hardcode_direct" = yes; then 2808c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="$libdir/$linklib" 2809c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$hardcode_minus_L" = yes; then 2810c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_dir="-L$libdir" 2811c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="-l$name" 2812c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$hardcode_shlibpath_var" = yes; then 2813c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case :$finalize_shlibpath: in 2814c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *":$libdir:"*) ;; 2815c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2816c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2817c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="-l$name" 2818c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$hardcode_automatic" = yes; then 2819c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$inst_prefix_dir" && 2820c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -f "$inst_prefix_dir$libdir/$linklib" ; then 2821c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="$inst_prefix_dir$libdir/$linklib" 2822c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2823c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="$libdir/$linklib" 2824c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2825c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2826c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We cannot seem to hardcode it, guess we'll fake it. 2827c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_dir="-L$libdir" 2828c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Try looking first in the location we're being installed to. 2829c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$inst_prefix_dir"; then 2830c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $libdir in 2831c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]*) 2832c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add_dir="$add_dir -L$inst_prefix_dir$libdir" 2833c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2834c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2835c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2836c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott add="-l$name" 2837c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2838c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2839c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = prog; then 2840c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 2841c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 2842c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2843c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$add_dir" && deplibs="$add_dir $deplibs" 2844c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$add" && deplibs="$add $deplibs" 2845c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2846c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2847c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$linkmode" = prog; then 2848c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Here we assume that one of hardcode_direct or hardcode_minus_L 2849c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # is not unsupported. This is valid on all known static and 2850c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # shared platforms. 2851c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$hardcode_direct" != unsupported; then 2852c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$old_library" && linklib="$old_library" 2853c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs="$dir/$linklib $compile_deplibs" 2854c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs="$dir/$linklib $finalize_deplibs" 2855c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2856c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs="-l$name -L$dir $compile_deplibs" 2857c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs="-l$name -L$dir $finalize_deplibs" 2858c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2859c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$build_libtool_libs" = yes; then 2860c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Not a shared library 2861c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$deplibs_check_method" != pass_all; then 2862c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We're trying link a shared library against a static one 2863c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # but the system doesn't support it. 2864c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2865c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Just print a warning and add the library to dependency_libs so 2866c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # that the program can be linked against the static library. 2867c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 2868c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: This system can not link to static lib archive $lib." 2869c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** I have the capability to make that library automatically link in when" 2870c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** you link to this library. But I can only do this if you have a" 2871c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** shared version of the library, which you do not appear to have." 2872c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$module" = yes; then 2873c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** But as you try to build a module library, libtool will still create " 2874c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** a static module, that should work as long as the dlopening application" 2875c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 2876c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$global_symbol_pipe"; then 2877c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 2878c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** However, this would only work if libtool was able to extract symbol" 2879c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2880c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** not find such a program. So, this module is probably useless." 2881c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** \`nm' from GNU binutils and a full rebuild may help." 2882c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2883c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_old_libs" = no; then 2884c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=module 2885c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_old_libs=yes 2886c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2887c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=no 2888c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2889c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2890c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2891c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$dir/$old_library $deplibs" 2892c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link_static=yes 2893c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2894c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # link shared/static library? 2895c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2896c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = lib; then 2897c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$dependency_libs" && 2898c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { test "$hardcode_into_libs" != yes || 2899c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$build_old_libs" = yes || 2900c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$link_static" = yes; }; then 2901c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Extract -R from dependency_libs 2902c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott temp_deplibs= 2903c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for libdir in $dependency_libs; do 2904c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $libdir in 2905c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 2906c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $xrpath " in 2907c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $temp_xrpath "*) ;; 2908c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) xrpath="$xrpath $temp_xrpath";; 2909c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac;; 2910c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) temp_deplibs="$temp_deplibs $libdir";; 2911c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2912c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2913c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dependency_libs="$temp_deplibs" 2914c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2915c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2916c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newlib_search_path="$newlib_search_path $absdir" 2917c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Link against this library 2918c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 2919c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # ... and its dependency_libs 2920c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_libs= 2921c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $dependency_libs; do 2922c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdependency_libs="$deplib $newdependency_libs" 2923c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$duplicate_deps" = "Xyes" ; then 2924c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$tmp_libs " in 2925c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2926c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2927c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2928c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_libs="$tmp_libs $deplib" 2929c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2930c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 2931c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$link_all_deplibs" != no; then 2932c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add the search paths of all dependency libraries 2933c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $dependency_libs; do 2934c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $deplib in 2935c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -L*) path="$deplib" ;; 2936c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la) 2937c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 2938c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$dir" = "X$deplib" && dir="." 2939c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We need an absolute path. 2940c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $dir in 2941c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 2942c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 2943c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott absdir=`cd "$dir" && pwd` 2944c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$absdir"; then 2945c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 2946c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott absdir="$dir" 2947c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2948c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2949c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2950c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if grep "^installed=no" $deplib > /dev/null; then 2951c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott path="$absdir/$objdir" 2952c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2953c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2954c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$libdir"; then 2955c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 2956c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 2957c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2958c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$absdir" != "$libdir"; then 2959c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 2960c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2961c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott path="$absdir" 2962c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2963c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott depdepl= 2964c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 2965c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-darwin*) 2966c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # we do not want to link against static libs, 2967c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # but need to link against shared 2968c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 2969c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2970c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$deplibrary_names" ; then 2971c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for tmp in $deplibrary_names ; do 2972c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott depdepl=$tmp 2973c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 2974c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$deplibdir/$depdepl" ; then 2975c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott depdepl="$deplibdir/$depdepl" 2976c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test -f "$path/$depdepl" ; then 2977c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott depdepl="$path/$depdepl" 2978c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 2979c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Can't find it, oh well... 2980c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott depdepl= 2981c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2982c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # do not add paths which are already there 2983c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $newlib_search_path " in 2984c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $path "*) ;; 2985c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) newlib_search_path="$newlib_search_path $path";; 2986c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2987c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 2988c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott path="" 2989c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2990c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 2991c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott path="-L$path" 2992c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2993c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 2994c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 2995c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -l*) 2996c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 2997c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-darwin*) 2998c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Again, we only want to link against shared libraries 2999c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 3000c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for tmp in $newlib_search_path ; do 3001c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$tmp/lib$tmp_libs.dylib" ; then 3002c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval depdepl="$tmp/lib$tmp_libs.dylib" 3003c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break 3004c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3005c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3006c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott path="" 3007c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3008c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) continue ;; 3009c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3010c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3011c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) continue ;; 3012c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3013c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $deplibs " in 3014c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $path "*) ;; 3015c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) deplibs="$path $deplibs" ;; 3016c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3017c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $deplibs " in 3018c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $depdepl "*) ;; 3019c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) deplibs="$depdepl $deplibs" ;; 3020c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3021c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3022c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # link_all_deplibs != no 3023c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi # linkmode = lib 3024c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done # for deplib in $libs 3025c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dependency_libs="$newdependency_libs" 3026c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" = dlpreopen; then 3027c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Link the dlpreopened libraries before other libraries 3028c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $save_deplibs; do 3029c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplib $deplibs" 3030c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3031c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3032c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" != dlopen; then 3033c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$pass" != conv; then 3034c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make sure lib_search_path contains only unique directories. 3035c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib_search_path= 3036c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for dir in $newlib_search_path; do 3037c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$lib_search_path " in 3038c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $dir "*) ;; 3039c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) lib_search_path="$lib_search_path $dir" ;; 3040c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3041c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3042c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newlib_search_path= 3043c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3044c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3045c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode,$pass" != "prog,link"; then 3046c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott vars="deplibs" 3047c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3048c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott vars="compile_deplibs finalize_deplibs" 3049c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3050c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for var in $vars dependency_libs; do 3051c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add libraries to $var in reverse order 3052c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval tmp_libs=\"\$$var\" 3053c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott new_libs= 3054c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $tmp_libs; do 3055c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # FIXME: Pedantically, this is the right thing to do, so 3056c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # that some nasty dependency loop isn't accidentally 3057c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # broken: 3058c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott #new_libs="$deplib $new_libs" 3059c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Pragmatically, this seems to cause very few problems in 3060c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # practice: 3061c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $deplib in 3062c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -L*) new_libs="$deplib $new_libs" ;; 3063c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -R*) ;; 3064c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3065c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # And here is the reason: when a library appears more 3066c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # than once as an explicit dependence of a library, or 3067c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # is implicitly linked in more than once by the 3068c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # compiler, it is considered special, and multiple 3069c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # occurrences thereof are not removed. Compare this 3070c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # with having the same library being listed as a 3071c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # dependency of multiple other libraries: in this case, 3072c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # we know (pedantically, we assume) the library does not 3073c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # need to be listed more than once, so we keep only the 3074c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # last copy. This is not always right, but it is rare 3075c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # enough that we require users that really mean to play 3076c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # such unportable linking tricks to link the library 3077c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # using -Wl,-lname, so that libtool does not consider it 3078c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # for duplicate removal. 3079c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $specialdeplibs " in 3080c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $deplib "*) new_libs="$deplib $new_libs" ;; 3081c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3082c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $new_libs " in 3083c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $deplib "*) ;; 3084c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) new_libs="$deplib $new_libs" ;; 3085c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3086c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3087c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3088c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3089c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3090c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3091c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_libs= 3092c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $new_libs; do 3093c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $deplib in 3094c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -L*) 3095c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $tmp_libs " in 3096c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $deplib "*) ;; 3097c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) tmp_libs="$tmp_libs $deplib" ;; 3098c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3099c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) tmp_libs="$tmp_libs $deplib" ;; 3101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval $var=\"$tmp_libs\" 3104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done # for var 3105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Last step: remove runtime libs from dependency_libs 3107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # (they stay in deplibs) 3108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_libs= 3109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for i in $dependency_libs ; do 3110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $predeps $postdeps $compiler_lib_search_path " in 3111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $i "*) 3112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott i="" 3113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$i" ; then 3116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_libs="$tmp_libs $i" 3117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dependency_libs=$tmp_libs 3120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done # for pass 3121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkmode" = prog; then 3122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlfiles="$newdlfiles" 3123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlprefiles="$newdlprefiles" 3124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $linkmode in 3127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldlib) 3128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $deplibs" in 3129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *\ -l* | *\ -L*) 3130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; 3131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 3135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$rpath"; then 3138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 3139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$xrpath"; then 3142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 3143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$vinfo"; then 3146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 3147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$release"; then 3150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 3151c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3152c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3153c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 3154c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 3155c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3156c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3157c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Now set the variables for building old libraries. 3158c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=no 3159c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldlibs="$output" 3160c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objs="$objs$old_deplibs" 3161c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3162c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3163c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib) 3164c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make sure we only generate libraries of the form `libNAME.la'. 3165c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $outputname in 3166c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib*) 3167c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 3168c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval shared_ext=\"$shrext_cmds\" 3169c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval libname=\"$libname_spec\" 3170c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3171c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3172c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$module" = no; then 3173c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 3174c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 3175c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 3176c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3177c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$need_lib_prefix" != no; then 3178c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add the "lib" prefix for modules if required 3179c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3180c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval shared_ext=\"$shrext_cmds\" 3181c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval libname=\"$libname_spec\" 3182c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3183c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3184c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3185c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3186c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3187c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3188c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$objs"; then 3189c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$deplibs_check_method" != pass_all; then 3190c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 3191c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 3192c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3193c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 3194c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: Linking the shared library $output against the non-libtool" 3195c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** objects $objs is not portable!" 3196c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobjs="$libobjs $objs" 3197c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3198c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3199c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3200c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$dlself" != no; then 3201c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 3202c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3203c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3204c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $rpath 3205c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$#" -gt 2; then 3206c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 3207c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3208c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott install_libdir="$2" 3209c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3210c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldlibs= 3211c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$rpath"; then 3212c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" = yes; then 3213c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Building a libtool convenience library. 3214c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Some compilers have problems with a `.al' extension so 3215c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # convenience libraries should have the same extension an 3216c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # archive normally would. 3217c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldlibs="$output_objdir/$libname.$libext $oldlibs" 3218c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=convenience 3219c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_old_libs=yes 3220c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3221c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3222c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$vinfo"; then 3223c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 3224c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3225c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3226c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$release"; then 3227c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 3228c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3229c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3230c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3231c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Parse the version information argument. 3232c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS=':' 3233c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $vinfo 0 0 0 3234c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 3235c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3236c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$8"; then 3237c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: too many parameters to \`-version-info'" 1>&2 3238c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 3239c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 3240c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3241c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3242c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # convert absolute version numbers to libtool ages 3243c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # this retains compatibility with .la files and attempts 3244c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # to make the code below a bit more comprehensible 3245c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3246c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $vinfo_number in 3247c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott yes) 3248c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott number_major="$2" 3249c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott number_minor="$3" 3250c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott number_revision="$4" 3251c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # 3252c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # There are really only two kinds -- those that 3253c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # use the current revision as the major version 3254c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # and those that subtract age and use age as 3255c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # a minor version. But, then there is irix 3256c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # which has an extra 1 added just for fun 3257c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # 3258c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $version_type in 3259c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin|linux|osf|windows|none) 3260c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott current=`expr $number_major + $number_minor` 3261c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott age="$number_minor" 3262c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott revision="$number_revision" 3263c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3264c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott freebsd-aout|freebsd-elf|sunos) 3265c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott current="$number_major" 3266c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott revision="$number_minor" 3267c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott age="0" 3268c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3269c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott irix|nonstopux) 3270c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott current=`expr $number_major + $number_minor` 3271c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott age="$number_minor" 3272c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott revision="$number_minor" 3273c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_irix_increment=no 3274c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3275c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3276c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: unknown library version type \`$version_type'" 1>&2 3277c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 3278c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 3279c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3280c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3281c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3282c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott no) 3283c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott current="$2" 3284c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott revision="$3" 3285c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott age="$4" 3286c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3287c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3288c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3289c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check that each of the things are valid numbers. 3290c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $current in 3291c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 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]) ;; 3292c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3293c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 3294c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3295c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 3296c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3297c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3298c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3299c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $revision in 3300c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 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]) ;; 3301c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3302c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 3303c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3304c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 3305c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3306c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3307c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3308c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $age in 3309c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 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]) ;; 3310c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3311c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 3312c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3313c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 3314c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3315c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3316c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3317c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$age" -gt "$current"; then 3318c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 3319c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3320c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 3321c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3322c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3323c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Calculate the version variables. 3324c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major= 3325c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix= 3326c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott verstring= 3327c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $version_type in 3328c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott none) ;; 3329c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3330c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin) 3331c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Like Linux, but with the current version available in 3332c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # verstring for coding it into the library header 3333c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=.`expr $current - $age` 3334c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix="$major.$age.$revision" 3335c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Darwin ld doesn't like 0 for these options... 3336c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott minor_current=`expr $current + 1` 3337c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 3338c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 3339c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3340c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3341c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott freebsd-aout) 3342c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=".$current" 3343c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix=".$current.$revision"; 3344c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3345c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3346c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott freebsd-elf) 3347c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=".$current" 3348c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix=".$current"; 3349c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3350c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3351c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott irix | nonstopux) 3352c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$lt_irix_increment" = "Xno"; then 3353c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=`expr $current - $age` 3354c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3355c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=`expr $current - $age + 1` 3356c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3357c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $version_type in 3358c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott nonstopux) verstring_prefix=nonstopux ;; 3359c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) verstring_prefix=sgi ;; 3360c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3361c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott verstring="$verstring_prefix$major.$revision" 3362c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3363c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add in all the interfaces that we are compatible with. 3364c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott loop=$revision 3365c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott while test "$loop" -ne 0; do 3366c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott iface=`expr $revision - $loop` 3367c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott loop=`expr $loop - 1` 3368c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott verstring="$verstring_prefix$major.$iface:$verstring" 3369c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3370c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3371c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Before this point, $major must not contain `.'. 3372c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=.$major 3373c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix="$major.$revision" 3374c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3375c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3376c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linux) 3377c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=.`expr $current - $age` 3378c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix="$major.$age.$revision" 3379c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3380c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3381c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott osf) 3382c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=.`expr $current - $age` 3383c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix=".$current.$age.$revision" 3384c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott verstring="$current.$age.$revision" 3385c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3386c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add in all the interfaces that we are compatible with. 3387c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott loop=$age 3388c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott while test "$loop" -ne 0; do 3389c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott iface=`expr $current - $loop` 3390c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott loop=`expr $loop - 1` 3391c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott verstring="$verstring:${iface}.0" 3392c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3393c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3394c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make executables depend on our current version. 3395c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott verstring="$verstring:${current}.0" 3396c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3397c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3398c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott sunos) 3399c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=".$current" 3400c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix=".$current.$revision" 3401c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3402c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3403c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott windows) 3404c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Use '-' rather than '.', since we only want one 3405c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # extension on DOS 8.3 filesystems. 3406c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=`expr $current - $age` 3407c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix="-$major" 3408c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3409c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3410c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3411c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: unknown library version type \`$version_type'" 1>&2 3412c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 3413c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 3414c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3415c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3416c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3417c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Clear the version info if we defaulted, and they specified a release. 3418c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$vinfo" && test -n "$release"; then 3419c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major= 3420c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $version_type in 3421c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott darwin) 3422c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # we can't check for "0.0" in archive_cmds due to quoting 3423c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # problems, so we reset it completely 3424c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott verstring= 3425c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3426c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3427c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott verstring="0.0" 3428c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3429c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3430c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$need_version" = no; then 3431c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix= 3432c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3433c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix=".0.0" 3434c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3435c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3436c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3437c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Remove version info from name if versioning should be avoided 3438c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$avoid_version" = yes && test "$need_version" = no; then 3439c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major= 3440c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix= 3441c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott verstring="" 3442c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3443c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3444c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check to see if the archive will have undefined symbols. 3445c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$allow_undefined" = yes; then 3446c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$allow_undefined_flag" = unsupported; then 3447c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 3448c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=no 3449c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_old_libs=yes 3450c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3451c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3452c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Don't allow undefined symbols. 3453c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott allow_undefined_flag="$no_undefined_flag" 3454c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3455c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3456c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3457c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$mode" != relink; then 3458c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Remove our outputs, but don't remove object files since they 3459c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # may have been created when compiling PIC objects. 3460c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott removelist= 3461c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tempremovelist=`$echo "$output_objdir/*"` 3462c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for p in $tempremovelist; do 3463c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $p in 3464c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.$objext) 3465c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3466c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 3467c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$precious_files_regex" != "X"; then 3468c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 3469c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott then 3470c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 3471c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3472c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3473c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott removelist="$removelist $p" 3474c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3475c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) ;; 3476c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3477c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3478c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$removelist"; then 3479c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "${rm}r $removelist" 3480c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run ${rm}r $removelist 3481c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3482c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3483c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3484c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Now set the variables for building old libraries. 3485c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 3486c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldlibs="$oldlibs $output_objdir/$libname.$libext" 3487c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3488c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Transform .lo files to .o files. 3489c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 3490c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3491c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3492c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Eliminate all temporary directories. 3493c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott #for path in $notinst_path; do 3494c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 3495c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 3496c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 3497c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott #done 3498c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3499c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$xrpath"; then 3500c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the user specified any rpath flags, then add them. 3501c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott temp_xrpath= 3502c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for libdir in $xrpath; do 3503c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott temp_xrpath="$temp_xrpath -R$libdir" 3504c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$finalize_rpath " in 3505c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 3506c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) finalize_rpath="$finalize_rpath $libdir" ;; 3507c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3508c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3509c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 3510c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dependency_libs="$temp_xrpath $dependency_libs" 3511c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3512c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3513c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3514c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make sure dlfiles contains only unique files that won't be dlpreopened 3515c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_dlfiles="$dlfiles" 3516c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlfiles= 3517c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for lib in $old_dlfiles; do 3518c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $dlprefiles $dlfiles " in 3519c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $lib "*) ;; 3520c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) dlfiles="$dlfiles $lib" ;; 3521c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3522c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3523c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3524c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make sure dlprefiles contains only unique files 3525c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_dlprefiles="$dlprefiles" 3526c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlprefiles= 3527c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for lib in $old_dlprefiles; do 3528c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$dlprefiles " in 3529c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $lib "*) ;; 3530c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) dlprefiles="$dlprefiles $lib" ;; 3531c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3532c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3533c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3534c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" = yes; then 3535c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$rpath"; then 3536c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 3537c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 3538c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # these systems don't actually have a c library (as such)! 3539c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3540c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-rhapsody* | *-*-darwin1.[012]) 3541c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Rhapsody C library is in the System framework 3542c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplibs -framework System" 3543c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3544c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-netbsd*) 3545c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Don't link with libc until the a.out ld.so is fixed. 3546c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3547c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 3548c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do not include libc due to us having libc/libc_r. 3549c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3550c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-sco3.2v5* | *-*-sco5v6*) 3551c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Causes problems with __ctype 3552c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3553c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 3554c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Compiler inserts libc in the correct place for threads to work 3555c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3556c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3557c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add libc to deplibs on all other systems if necessary. 3558c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_need_lc" = "yes"; then 3559c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$deplibs -lc" 3560c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3561c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3562c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3563c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3564c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3565c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Transform deplibs into only deplibs that can be linked in shared. 3566c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name_save=$name 3567c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libname_save=$libname 3568c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott release_save=$release 3569c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix_save=$versuffix 3570c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major_save=$major 3571c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # I'm not sure if I'm treating the release correctly. I think 3572c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # release should show up in the -l (ie -lgmp5) so we don't want to 3573c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # add it in twice. Is that correct? 3574c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott release="" 3575c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix="" 3576c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major="" 3577c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs= 3578c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott droppeddeps=no 3579c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $deplibs_check_method in 3580c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pass_all) 3581c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Don't check for shared/static. Everything works. 3582c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This might be a little naive. We might want to check 3583c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # whether the library exists or not. But this is on 3584c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # osf3 & osf4 and I'm not really sure... Just 3585c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # implementing what was already the behavior. 3586c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs=$deplibs 3587c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3588c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test_compile) 3589c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This code stresses the "libraries are programs" paradigm to its 3590c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # limits. Maybe even breaks it. We compile a program, linking it 3591c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # against the deplibs as a proxy for the library. Then we can check 3592c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # whether they linked in statically or dynamically with ldd. 3593c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $rm conftest.c 3594c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cat > conftest.c <<EOF 3595c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott int main() { return 0; } 3596c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 3597c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $rm conftest 3598c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 3599c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ldd_output=`ldd conftest` 3600c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for i in $deplibs; do 3601c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`expr $i : '-l\(.*\)'` 3602c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If $name is empty we are operating on a -L argument. 3603c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$name" != "" && test "$name" != "0"; then 3604c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3605c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $predeps $postdeps " in 3606c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $i "*) 3607c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $i" 3608c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott i="" 3609c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3610c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3611c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3612c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$i" ; then 3613c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libname=`eval \\$echo \"$libname_spec\"` 3614c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplib_matches=`eval \\$echo \"$library_names_spec\"` 3615c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $deplib_matches 3616c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplib_match=$2 3617c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3618c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $i" 3619c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3620c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott droppeddeps=yes 3621c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 3622c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: dynamic linker does not accept needed library $i." 3623c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** I have the capability to make that library automatically link in when" 3624c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** you link to this library. But I can only do this if you have a" 3625c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** shared version of the library, which I believe you do not have" 3626c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** because a test_compile did reveal that the linker did not use it for" 3627c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** its dynamic dependency list that programs get resolved with at runtime." 3628c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3629c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3630c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3631c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $i" 3632c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3633c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3634c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3635c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Error occurred in the first compile. Let's try to salvage 3636c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # the situation: Compile a separate program for each library. 3637c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for i in $deplibs; do 3638c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`expr $i : '-l\(.*\)'` 3639c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If $name is empty we are operating on a -L argument. 3640c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$name" != "" && test "$name" != "0"; then 3641c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $rm conftest 3642c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 3643c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ldd_output=`ldd conftest` 3644c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3645c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $predeps $postdeps " in 3646c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $i "*) 3647c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $i" 3648c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott i="" 3649c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3650c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3651c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3652c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$i" ; then 3653c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libname=`eval \\$echo \"$libname_spec\"` 3654c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplib_matches=`eval \\$echo \"$library_names_spec\"` 3655c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $deplib_matches 3656c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplib_match=$2 3657c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3658c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $i" 3659c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3660c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott droppeddeps=yes 3661c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 3662c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: dynamic linker does not accept needed library $i." 3663c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** I have the capability to make that library automatically link in when" 3664c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** you link to this library. But I can only do this if you have a" 3665c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** shared version of the library, which you do not appear to have" 3666c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** because a test_compile did reveal that the linker did not use this one" 3667c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 3668c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3669c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3670c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3671c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott droppeddeps=yes 3672c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 3673c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning! Library $i is needed by this library but I was not able to" 3674c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** make it link in! You will probably need to install it or some" 3675c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** library that it depends on before this library will be fully" 3676c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** functional. Installing it before continuing would be even better." 3677c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3678c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3679c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $i" 3680c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3681c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3682c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3683c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3684c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file_magic*) 3685c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $deplibs_check_method 3686c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3687c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for a_deplib in $deplibs; do 3688c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`expr $a_deplib : '-l\(.*\)'` 3689c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If $name is empty we are operating on a -L argument. 3690c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$name" != "" && test "$name" != "0"; then 3691c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3692c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $predeps $postdeps " in 3693c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $a_deplib "*) 3694c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $a_deplib" 3695c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott a_deplib="" 3696c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3697c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3698c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3699c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$a_deplib" ; then 3700c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libname=`eval \\$echo \"$libname_spec\"` 3701c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3702c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3703c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for potent_lib in $potential_libs; do 3704c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Follow soft links. 3705c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if ls -lLd "$potent_lib" 2>/dev/null \ 3706c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott | grep " -> " >/dev/null; then 3707c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 3708c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3709c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The statement above tries to avoid entering an 3710c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # endless loop below, in case of cyclic links. 3711c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We might still enter an endless loop, since a link 3712c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # loop can be closed while we follow links, 3713c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # but so what? 3714c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott potlib="$potent_lib" 3715c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott while test -h "$potlib" 2>/dev/null; do 3716c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 3717c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $potliblink in 3718c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 3719c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 3720c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3721c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3722c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 3723c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott | ${SED} 10q \ 3724c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott | $EGREP "$file_magic_regex" > /dev/null; then 3725c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $a_deplib" 3726c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott a_deplib="" 3727c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break 2 3728c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3729c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3730c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3731c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3732c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$a_deplib" ; then 3733c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott droppeddeps=yes 3734c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 3735c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: linker path does not have real file for library $a_deplib." 3736c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** I have the capability to make that library automatically link in when" 3737c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** you link to this library. But I can only do this if you have a" 3738c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** shared version of the library, which you do not appear to have" 3739c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** because I did check the linker path looking for a file starting" 3740c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$potlib" ; then 3741c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** with $libname but no candidates were found. (...for file magic test)" 3742c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3743c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** with $libname and none of the candidates passed a file format test" 3744c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** using a file magic. Last file checked: $potlib" 3745c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3746c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3747c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3748c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add a -L argument. 3749c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $a_deplib" 3750c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3751c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done # Gone through all deplibs. 3752c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3753c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott match_pattern*) 3754c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $deplibs_check_method 3755c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3756c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for a_deplib in $deplibs; do 3757c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`expr $a_deplib : '-l\(.*\)'` 3758c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If $name is empty we are operating on a -L argument. 3759c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$name" && test "$name" != "0"; then 3760c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3761c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $predeps $postdeps " in 3762c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $a_deplib "*) 3763c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $a_deplib" 3764c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott a_deplib="" 3765c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3766c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3767c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3768c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$a_deplib" ; then 3769c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libname=`eval \\$echo \"$libname_spec\"` 3770c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3771c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3772c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for potent_lib in $potential_libs; do 3773c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott potlib="$potent_lib" # see symlink-check above in file_magic test 3774c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if eval $echo \"$potent_lib\" 2>/dev/null \ 3775c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott | ${SED} 10q \ 3776c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott | $EGREP "$match_pattern_regex" > /dev/null; then 3777c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $a_deplib" 3778c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott a_deplib="" 3779c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break 2 3780c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3781c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3782c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3783c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3784c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$a_deplib" ; then 3785c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott droppeddeps=yes 3786c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 3787c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: linker path does not have real file for library $a_deplib." 3788c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** I have the capability to make that library automatically link in when" 3789c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** you link to this library. But I can only do this if you have a" 3790c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** shared version of the library, which you do not appear to have" 3791c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** because I did check the linker path looking for a file starting" 3792c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$potlib" ; then 3793c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 3794c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3795c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** with $libname and none of the candidates passed a file format test" 3796c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** using a regex pattern. Last file checked: $potlib" 3797c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3798c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3799c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3800c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add a -L argument. 3801c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="$newdeplibs $a_deplib" 3802c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3803c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done # Gone through all deplibs. 3804c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3805c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott none | unknown | *) 3806c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs="" 3807c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 3808c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -e 's/ -[LR][^ ]*//g'` 3809c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3810c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for i in $predeps $postdeps ; do 3811c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # can't use Xsed below, because $i might contain '/' 3812c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 3813c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3814c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3815c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 3816c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott | grep . >/dev/null; then 3817c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 3818c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$deplibs_check_method" = "Xnone"; then 3819c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: inter-library dependencies are not supported in this platform." 3820c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3821c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: inter-library dependencies are not known to be supported." 3822c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3823c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** All declared inter-library dependencies are being dropped." 3824c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott droppeddeps=yes 3825c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3826c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3827c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3828c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott versuffix=$versuffix_save 3829c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott major=$major_save 3830c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott release=$release_save 3831c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libname=$libname_save 3832c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=$name_save 3833c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3834c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 3835c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-rhapsody* | *-*-darwin1.[012]) 3836c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # On Rhapsody replace the C library is the System framework 3837c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 3838c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3839c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3840c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3841c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$droppeddeps" = yes; then 3842c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$module" = yes; then 3843c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 3844c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Warning: libtool could not satisfy all declared inter-library" 3845c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** dependencies of module $libname. Therefore, libtool will create" 3846c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** a static module, that should work as long as the dlopening" 3847c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** application is linked with the -dlopen flag." 3848c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$global_symbol_pipe"; then 3849c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 3850c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** However, this would only work if libtool was able to extract symbol" 3851c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 3852c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** not find such a program. So, this module is probably useless." 3853c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** \`nm' from GNU binutils and a full rebuild may help." 3854c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3855c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_old_libs" = no; then 3856c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldlibs="$output_objdir/$libname.$libext" 3857c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=module 3858c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_old_libs=yes 3859c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3860c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=no 3861c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3862c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3863c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** The inter-library dependencies that have been dropped here will be" 3864c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** automatically added whenever a program is linked with this library" 3865c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** or is declared to -dlopen it." 3866c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3867c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$allow_undefined" = no; then 3868c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 3869c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** Since this library must not contain undefined symbols," 3870c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** because either the platform does not support them or" 3871c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** it was explicitly requested with -no-undefined," 3872c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "*** libtool will only create a static version of it." 3873c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_old_libs" = no; then 3874c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldlibs="$output_objdir/$libname.$libext" 3875c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=module 3876c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_old_libs=yes 3877c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3878c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=no 3879c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3880c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3881c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3882c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3883c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Done checking deplibs! 3884c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs=$newdeplibs 3885c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3886c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3887c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3888c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # move library search paths that coincide with paths to not yet 3889c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # installed libraries to the beginning of the library search list 3890c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott new_libs= 3891c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for path in $notinst_path; do 3892c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $new_libs " in 3893c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" -L$path/$objdir "*) ;; 3894c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3895c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $deplibs " in 3896c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" -L$path/$objdir "*) 3897c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott new_libs="$new_libs -L$path/$objdir" ;; 3898c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3899c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3900c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3901c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3902c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $deplibs; do 3903c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $deplib in 3904c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -L*) 3905c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $new_libs " in 3906c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $deplib "*) ;; 3907c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) new_libs="$new_libs $deplib" ;; 3908c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3909c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3910c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) new_libs="$new_libs $deplib" ;; 3911c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3912c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3913c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$new_libs" 3914c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3915c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3916c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # All the library-specific variables (install_libdir is set above). 3917c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott library_names= 3918c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_library= 3919c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlname= 3920c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3921c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Test again, we may have decided not to build it any more 3922c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" = yes; then 3923c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$hardcode_into_libs" = yes; then 3924c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Hardcode the library paths 3925c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott hardcode_libdirs= 3926c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dep_rpath= 3927c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath="$finalize_rpath" 3928c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$mode" != relink && rpath="$compile_rpath$rpath" 3929c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for libdir in $rpath; do 3930c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_flag_spec"; then 3931c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_separator"; then 3932c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$hardcode_libdirs"; then 3933c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott hardcode_libdirs="$libdir" 3934c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3935c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Just accumulate the unique libdirs. 3936c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 3937c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 3938c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3939c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 3940c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 3941c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 3942c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3943c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3944c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3945c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval flag=\"$hardcode_libdir_flag_spec\" 3946c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dep_rpath="$dep_rpath $flag" 3947c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3948c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test -n "$runpath_var"; then 3949c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$perm_rpath " in 3950c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 3951c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) perm_rpath="$perm_rpath $libdir" ;; 3952c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3953c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3954c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3955c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Substitute the hardcoded libdirs into the rpath. 3956c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_separator" && 3957c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$hardcode_libdirs"; then 3958c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libdir="$hardcode_libdirs" 3959c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_flag_spec_ld"; then 3960c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $archive_cmds in 3961c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 3962c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 3963c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 3964c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3965c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval dep_rpath=\"$hardcode_libdir_flag_spec\" 3966c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3967c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3968c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$runpath_var" && test -n "$perm_rpath"; then 3969c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We should set the runpath_var. 3970c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath= 3971c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for dir in $perm_rpath; do 3972c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath="$rpath$dir:" 3973c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 3974c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 3975c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3976c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 3977c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3978c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3979c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shlibpath="$finalize_shlibpath" 3980c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 3981c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$shlibpath"; then 3982c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 3983c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3984c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3985c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Get the real and link names of the library. 3986c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval shared_ext=\"$shrext_cmds\" 3987c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval library_names=\"$library_names_spec\" 3988c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $library_names 3989c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott realname="$2" 3990c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift; shift 3991c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 3992c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$soname_spec"; then 3993c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval soname=\"$soname_spec\" 3994c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 3995c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott soname="$realname" 3996c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 3997c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$dlname"; then 3998c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlname=$soname 3999c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4000c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4001c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib="$output_objdir/$realname" 4002c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linknames= 4003c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for link 4004c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 4005c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linknames="$linknames $link" 4006c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4007c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4008c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Use standard objects if they are pic 4009c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4010c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4011c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Prepare the list of exported symbols 4012c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$export_symbols"; then 4013c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 4014c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "generating symbol list for \`$libname.la'" 4015c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_symbols="$output_objdir/$libname.exp" 4016c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $export_symbols 4017c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$export_symbols_cmds 4018c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 4019c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 4020c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 4021c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 4022c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if len=`expr "X$cmd" : ".*"` && 4023c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4024c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 4025c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || exit $? 4026c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott skipped_export=false 4027c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4028c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The command line is too long to execute in one step. 4029c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "using reloadable object file for export list..." 4030c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott skipped_export=: 4031c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Break out early, otherwise skipped_export may be 4032c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # set to false by a later but shorter cmd. 4033c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break 4034c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4035c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4036c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 4037c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$export_symbols_regex"; then 4038c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 4039c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 4040c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 4041c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '$mv "${export_symbols}T" "$export_symbols"' 4042c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4043c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4044c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4045c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4046c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$export_symbols" && test -n "$include_expsyms"; then 4047c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 4048c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4049c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4050c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_deplibs= 4051c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for test_deplib in $deplibs; do 4052c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $convenience " in 4053c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $test_deplib "*) ;; 4054c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 4055c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_deplibs="$tmp_deplibs $test_deplib" 4056c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4057c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4058c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4059c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott deplibs="$tmp_deplibs" 4060c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4061c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$convenience"; then 4062c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$whole_archive_flag_spec"; then 4063c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_libobjs=$libobjs 4064c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4065c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4066c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott gentop="$output_objdir/${outputname}x" 4067c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott generated="$generated $gentop" 4068c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4069c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott func_extract_archives $gentop $convenience 4070c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobjs="$libobjs $func_extract_archives_result" 4071c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4072c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4073c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4074c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 4075c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval flag=\"$thread_safe_flag_spec\" 4076c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott linker_flags="$linker_flags $flag" 4077c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4078c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4079c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make a backup of the uninstalled library when relinking 4080c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$mode" = relink; then 4081c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 4082c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4083c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4084c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do each of the archive commands. 4085c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$module" = yes && test -n "$module_cmds" ; then 4086c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4087c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval test_cmds=\"$module_expsym_cmds\" 4088c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$module_expsym_cmds 4089c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4090c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval test_cmds=\"$module_cmds\" 4091c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$module_cmds 4092c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4093c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4094c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4095c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval test_cmds=\"$archive_expsym_cmds\" 4096c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$archive_expsym_cmds 4097c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4098c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval test_cmds=\"$archive_cmds\" 4099c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$archive_cmds 4100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$skipped_export" != "X:" && 4104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott : 4107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The command line is too long to link in one step, link piecewise. 4109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "creating reloadable object files..." 4110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Save the value of $output and $libobjs because we want to 4112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # use them later. If we have whole_archive_flag_spec, we 4113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # want to use save_libobjs as it was before 4114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # whole_archive_flag_spec was expanded, because we can't 4115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # assume the linker understands whole_archive_flag_spec. 4116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This may have to be revisited, in case too many 4117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # convenience libraries get linked in and end up exceeding 4118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # the spec. 4119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 4120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_libobjs=$libobjs 4121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_output=$output 4123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output_la=`$echo "X$output" | $Xsed -e "$basename"` 4124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Clear the reloadable object creation command queue and 4126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # initialize k to one. 4127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test_cmds= 4128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott concat_cmds= 4129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objlist= 4130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott delfiles= 4131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott last_robj= 4132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott k=1 4133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output=$output_objdir/$output_la-${k}.$objext 4134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Loop over the list of objects to be linked. 4135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for obj in $save_libobjs 4136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 4137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval test_cmds=\"$reload_cmds $objlist $last_robj\" 4138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$objlist" = X || 4139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$len" -le "$max_cmd_len"; }; then 4141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objlist="$objlist $obj" 4142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The command $test_cmds is almost too long, add a 4144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # command to the queue. 4145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$k" -eq 1 ; then 4146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The first file doesn't have a previous command to add. 4147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 4148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # All subsequent reloadable object files will link in 4150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # the last one created. 4151c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 4152c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4153c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott last_robj=$output_objdir/$output_la-${k}.$objext 4154c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott k=`expr $k + 1` 4155c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output=$output_objdir/$output_la-${k}.$objext 4156c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objlist=$obj 4157c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott len=1 4158c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4159c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4160c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Handle the remaining objects by creating one last 4161c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # reloadable object file. All subsequent reloadable object 4162c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # files will link in the last one created. 4163c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 4164c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 4165c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4166c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if ${skipped_export-false}; then 4167c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "generating symbol list for \`$libname.la'" 4168c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_symbols="$output_objdir/$libname.exp" 4169c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $export_symbols 4170c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobjs=$output 4171c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Append the command to create the export file. 4172c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 4173c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4174c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4175c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Set up a command to remove the reloadable object files 4176c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # after they are used. 4177c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott i=0 4178c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott while test "$i" -lt "$k" 4179c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 4180c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott i=`expr $i + 1` 4181c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 4182c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4183c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4184c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "creating a temporary reloadable object file: $output" 4185c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4186c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Loop through the commands generated above and execute them. 4187c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 4188c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $concat_cmds; do 4189c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 4190c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 4191c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || exit $? 4192c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4193c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 4194c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4195c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobjs=$output 4196c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Restore the value of output. 4197c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output=$save_output 4198c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4199c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 4200c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4201c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4202c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Expand the library linking commands again to reset the 4203c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # value of $libobjs for piecewise linking. 4204c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4205c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do each of the archive commands. 4206c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$module" = yes && test -n "$module_cmds" ; then 4207c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4208c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$module_expsym_cmds 4209c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4210c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$module_cmds 4211c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4212c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4213c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4214c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$archive_expsym_cmds 4215c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4216c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$archive_cmds 4217c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4218c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4219c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4220c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Append the command to remove the reloadable object files 4221c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # to the just-reset $cmds. 4222c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmds=\"\$cmds~\$rm $delfiles\" 4223c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4224c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 4225c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 4226c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 4227c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 4228c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 4229c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || { 4230c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_exit=$? 4231c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4232c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Restore the uninstalled library and exit 4233c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$mode" = relink; then 4234c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 4235c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4236c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4237c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $lt_exit 4238c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 4239c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4240c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 4241c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4242c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Restore the uninstalled library and exit 4243c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$mode" = relink; then 4244c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 4245c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4246c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$convenience"; then 4247c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$whole_archive_flag_spec"; then 4248c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "${rm}r $gentop" 4249c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run ${rm}r "$gentop" 4250c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4251c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4252c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4253c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 4254c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4255c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4256c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Create links to the real library. 4257c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for linkname in $linknames; do 4258c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$realname" != "$linkname"; then 4259c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 4260c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 4261c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4262c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4263c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4264c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If -module or -export-dynamic was specified, set the dlname. 4265c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$module" = yes || test "$export_dynamic" = yes; then 4266c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # On all known operating systems, these are identical. 4267c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlname="$soname" 4268c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4269c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4270c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4271c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4272c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott obj) 4273c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $deplibs" in 4274c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *\ -l* | *\ -L*) 4275c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; 4276c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4277c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4278c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4279c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 4280c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4281c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4282c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$rpath"; then 4283c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 4284c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4285c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4286c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$xrpath"; then 4287c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 4288c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4289c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4290c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$vinfo"; then 4291c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 4292c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4293c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4294c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$release"; then 4295c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 4296c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4297c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4298c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $output in 4299c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.lo) 4300c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$objs$old_deplibs"; then 4301c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 4302c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 4303c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4304c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobj="$output" 4305c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott obj=`$echo "X$output" | $Xsed -e "$lo2o"` 4306c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4307c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 4308c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libobj= 4309c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott obj="$output" 4310c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4311c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4312c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4313c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Delete the old objects. 4314c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $obj $libobj 4315c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4316c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Objects from convenience libraries. This assumes 4317c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # single-version convenience libraries. Whenever we create 4318c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # different ones for PIC/non-PIC, this we'll have to duplicate 4319c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # the extraction. 4320c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott reload_conv_objs= 4321c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott gentop= 4322c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # reload_cmds runs $LD directly, so let us get rid of 4323c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # -Wl from whole_archive_flag_spec and hope we can get by with 4324c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # turning comma into space.. 4325c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott wl= 4326c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4327c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$convenience"; then 4328c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$whole_archive_flag_spec"; then 4329c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 4330c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 4331c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4332c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott gentop="$output_objdir/${obj}x" 4333c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott generated="$generated $gentop" 4334c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4335c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott func_extract_archives $gentop $convenience 4336c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott reload_conv_objs="$reload_objs $func_extract_archives_result" 4337c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4338c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4339c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4340c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Create the old-style object. 4341c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 4342c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4343c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output="$obj" 4344c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$reload_cmds 4345c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 4346c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 4347c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 4348c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 4349c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 4350c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || exit $? 4351c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4352c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 4353c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4354c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Exit if we aren't doing a library object file. 4355c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$libobj"; then 4356c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$gentop"; then 4357c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "${rm}r $gentop" 4358c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run ${rm}r $gentop 4359c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4360c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4361c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 4362c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4363c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4364c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" != yes; then 4365c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$gentop"; then 4366c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "${rm}r $gentop" 4367c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run ${rm}r $gentop 4368c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4369c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4370c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Create an invalid libtool object if no PIC, so that we don't 4371c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # accidentally link it into a program. 4372c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # $show "echo timestamp > $libobj" 4373c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # $run eval "echo timestamp > $libobj" || exit $? 4374c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 4375c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4376c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4377c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$pic_flag" || test "$pic_mode" != default; then 4378c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only do commands if we really have different PIC objects. 4379c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott reload_objs="$libobjs $reload_conv_objs" 4380c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output="$libobj" 4381c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$reload_cmds 4382c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 4383c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 4384c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 4385c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 4386c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 4387c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || exit $? 4388c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4389c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 4390c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4391c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4392c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$gentop"; then 4393c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "${rm}r $gentop" 4394c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run ${rm}r $gentop 4395c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4396c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4397c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 4398c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4399c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4400c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prog) 4401c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4402c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 4403c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4404c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$vinfo"; then 4405c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 4406c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4407c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4408c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$release"; then 4409c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 4410c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4411c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4412c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$preload" = yes; then 4413c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 4414c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$dlopen_self_static" = unknown; then 4415c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 4416c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4417c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4418c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4419c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4420c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-rhapsody* | *-*-darwin1.[012]) 4421c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # On Rhapsody replace the C library is the System framework 4422c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4423c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4424c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4425c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4426c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4427c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4428c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *darwin*) 4429c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Don't allow lazy linking, it breaks C++ global constructors 4430c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$tagname" = CXX ; then 4431c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command ${wl}-bind_at_load" 4432c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command ${wl}-bind_at_load" 4433c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4434c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4435c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4436c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4437c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4438c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # move library search paths that coincide with paths to not yet 4439c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # installed libraries to the beginning of the library search list 4440c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott new_libs= 4441c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for path in $notinst_path; do 4442c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $new_libs " in 4443c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" -L$path/$objdir "*) ;; 4444c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 4445c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $compile_deplibs " in 4446c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" -L$path/$objdir "*) 4447c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott new_libs="$new_libs -L$path/$objdir" ;; 4448c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4449c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4450c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4451c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4452c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $compile_deplibs; do 4453c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $deplib in 4454c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -L*) 4455c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $new_libs " in 4456c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $deplib "*) ;; 4457c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) new_libs="$new_libs $deplib" ;; 4458c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4459c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4460c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) new_libs="$new_libs $deplib" ;; 4461c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4462c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4463c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_deplibs="$new_libs" 4464c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4465c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4466c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$compile_command $compile_deplibs" 4467c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$finalize_command $finalize_deplibs" 4468c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4469c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$rpath$xrpath"; then 4470c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the user specified any rpath flags, then add them. 4471c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for libdir in $rpath $xrpath; do 4472c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This is the magic to use -rpath. 4473c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$finalize_rpath " in 4474c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 4475c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) finalize_rpath="$finalize_rpath $libdir" ;; 4476c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4477c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4478c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4479c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4480c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Now hardcode the library paths 4481c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath= 4482c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott hardcode_libdirs= 4483c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for libdir in $compile_rpath $finalize_rpath; do 4484c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_flag_spec"; then 4485c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_separator"; then 4486c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$hardcode_libdirs"; then 4487c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott hardcode_libdirs="$libdir" 4488c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4489c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Just accumulate the unique libdirs. 4490c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4491c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4492c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4493c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 4494c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4495c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4496c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4497c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4498c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4499c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval flag=\"$hardcode_libdir_flag_spec\" 4500c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath="$rpath $flag" 4501c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4502c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test -n "$runpath_var"; then 4503c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$perm_rpath " in 4504c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 4505c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) perm_rpath="$perm_rpath $libdir" ;; 4506c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4507c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4508c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4509c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 4510c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 4511c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case :$dllsearchpath: in 4512c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *":$libdir:"*) ;; 4513c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) dllsearchpath="$dllsearchpath:$libdir";; 4514c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4515c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case :$dllsearchpath: in 4516c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *":$testbindir:"*) ;; 4517c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) dllsearchpath="$dllsearchpath:$testbindir";; 4518c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4519c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4520c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4521c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4522c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Substitute the hardcoded libdirs into the rpath. 4523c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_separator" && 4524c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$hardcode_libdirs"; then 4525c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libdir="$hardcode_libdirs" 4526c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval rpath=\" $hardcode_libdir_flag_spec\" 4527c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4528c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_rpath="$rpath" 4529c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4530c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath= 4531c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott hardcode_libdirs= 4532c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for libdir in $finalize_rpath; do 4533c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_flag_spec"; then 4534c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_separator"; then 4535c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$hardcode_libdirs"; then 4536c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott hardcode_libdirs="$libdir" 4537c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4538c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Just accumulate the unique libdirs. 4539c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4540c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4541c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4542c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 4543c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4544c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4545c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4546c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4547c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4548c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval flag=\"$hardcode_libdir_flag_spec\" 4549c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath="$rpath $flag" 4550c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4551c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test -n "$runpath_var"; then 4552c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$finalize_perm_rpath " in 4553c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 4554c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 4555c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4556c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4557c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4558c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Substitute the hardcoded libdirs into the rpath. 4559c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_separator" && 4560c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$hardcode_libdirs"; then 4561c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libdir="$hardcode_libdirs" 4562c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval rpath=\" $hardcode_libdir_flag_spec\" 4563c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4564c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_rpath="$rpath" 4565c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4566c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$libobjs" && test "$build_old_libs" = yes; then 4567c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Transform all the library objects into standard objects. 4568c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4569c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4570c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4571c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4572c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlsyms= 4573c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4574c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$NM" && test -n "$global_symbol_pipe"; then 4575c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlsyms="${outputname}S.c" 4576c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4577c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 4578c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4579c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4580c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4581c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$dlsyms"; then 4582c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $dlsyms in 4583c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott "") ;; 4584c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.c) 4585c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Discover the nlist of each of the dlfiles. 4586c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott nlist="$output_objdir/${outputname}.nm" 4587c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4588c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$rm $nlist ${nlist}S ${nlist}T" 4589c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm "$nlist" "${nlist}S" "${nlist}T" 4590c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4591c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Parse the name list into a source file. 4592c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "creating $output_objdir/$dlsyms" 4593c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4594c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 4595c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 4596c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 4597c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4598c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifdef __cplusplus 4599c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottextern \"C\" { 4600c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 4601c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4602c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* Prevent the only kind of declaration conflicts we can make. */ 4603c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define lt_preloaded_symbols some_other_symbol 4604c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4605c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* External symbol declarations for the compiler. */\ 4606c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 4607c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4608c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$dlself" = yes; then 4609c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "generating symbol list for \`$output'" 4610c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4611c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 4612c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4613c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add our own program objects to the symbol list. 4614c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4615c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg in $progfiles; do 4616c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "extracting global C symbols from \`$arg'" 4617c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4618c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4619c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4620c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$exclude_expsyms"; then 4621c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 4622c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '$mv "$nlist"T "$nlist"' 4623c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4624c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4625c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$export_symbols_regex"; then 4626c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 4627c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '$mv "$nlist"T "$nlist"' 4628c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4629c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4630c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Prepare the list of exported symbols 4631c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$export_symbols"; then 4632c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export_symbols="$output_objdir/$outputname.exp" 4633c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $export_symbols 4634c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 4635c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4636c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin* | *mingw* ) 4637c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4638c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 4639c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4640c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4641c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4642c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 4643c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 4644c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval 'mv "$nlist"T "$nlist"' 4645c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4646c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin* | *mingw* ) 4647c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4648c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 4649c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4650c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4651c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4652c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4653c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4654c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg in $dlprefiles; do 4655c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "extracting global C symbols from \`$arg'" 4656c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 4657c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '$echo ": $name " >> "$nlist"' 4658c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4659c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4660c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4661c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$run"; then 4662c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make sure we have at least an empty file. 4663c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -f "$nlist" || : > "$nlist" 4664c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4665c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$exclude_expsyms"; then 4666c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 4667c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $mv "$nlist"T "$nlist" 4668c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4669c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4670c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Try sorting and uniquifying the output. 4671c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if grep -v "^: " < "$nlist" | 4672c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if sort -k 3 </dev/null >/dev/null 2>&1; then 4673c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott sort -k 3 4674c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4675c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott sort +2 4676c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi | 4677c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott uniq > "$nlist"S; then 4678c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott : 4679c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4680c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott grep -v "^: " < "$nlist" > "$nlist"S 4681c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4682c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4683c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$nlist"S; then 4684c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 4685c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4686c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo '/* NONE */' >> "$output_objdir/$dlsyms" 4687c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4688c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4689c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> "$output_objdir/$dlsyms" "\ 4690c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4691c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#undef lt_preloaded_symbols 4692c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4693c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined (__STDC__) && __STDC__ 4694c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define lt_ptr void * 4695c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#else 4696c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define lt_ptr char * 4697c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define const 4698c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 4699c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4700c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* The mapping between symbol names and symbols. */ 4701c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 4702c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4703c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4704c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin* | *mingw* ) 4705c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> "$output_objdir/$dlsyms" "\ 4706c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* DATA imports from DLLs on WIN32 can't be const, because 4707c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott runtime relocations are performed -- see ld's documentation 4708c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott on pseudo-relocs */ 4709c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstruct { 4710c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 4711c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4712c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott * ) 4713c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> "$output_objdir/$dlsyms" "\ 4714c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottconst struct { 4715c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 4716c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4717c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4718c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4719c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4720c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> "$output_objdir/$dlsyms" "\ 4721c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const char *name; 4722c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_ptr address; 4723c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 4724c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottlt_preloaded_symbols[] = 4725c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{\ 4726c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 4727c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4728c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 4729c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4730c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> "$output_objdir/$dlsyms" "\ 4731c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott {0, (lt_ptr) 0} 4732c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}; 4733c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4734c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* This works around a problem in FreeBSD linker */ 4735c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifdef FREEBSD_WORKAROUND 4736c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstatic const void *lt_preloaded_setup() { 4737c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return lt_preloaded_symbols; 4738c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 4739c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 4740c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4741c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifdef __cplusplus 4742c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 4743c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif\ 4744c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 4745c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4746c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4747c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott pic_flag_for_symtable= 4748c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4749c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # compiling the symbol table file with pic_flag works around 4750c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # a FreeBSD bug that causes programs to crash when -lm is 4751c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # linked before any other PIC object. But we must not use 4752c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # pic_flag when linking with -static. The problem exists in 4753c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 4754c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 4755c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$compile_command " in 4756c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" -static "*) ;; 4757c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 4758c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac;; 4759c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-hpux*) 4760c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$compile_command " in 4761c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" -static "*) ;; 4762c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) pic_flag_for_symtable=" $pic_flag";; 4763c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4764c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4765c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4766c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Now compile the dynamic symbol file. 4767c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 4768c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 4769c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4770c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Clean up the generated files. 4771c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 4772c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 4773c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4774c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Transform the symbol file into the correct name. 4775c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4776c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin* | *mingw* ) 4777c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$output_objdir/${outputname}.def" ; then 4778c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4779c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4780c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4781c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4782c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4783c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4784c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4785c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott * ) 4786c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4787c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4788c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4789c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4790c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4791c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 4792c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 4793c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 4794c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4795c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4796c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4797c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We keep going just in case the user didn't refer to 4798c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 4799c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # really was required. 4800c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4801c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Nullify the symbol file. 4802c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4803c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4804c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4805c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4806c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 4807c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Replace the output file specification. 4808c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 4809c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link_command="$compile_command$compile_rpath" 4810c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4811c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We have no uninstalled library dependencies, so finalize right now. 4812c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$link_command" 4813c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$link_command" 4814c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit_status=$? 4815c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4816c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Delete the generated files. 4817c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$dlsyms"; then 4818c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$rm $output_objdir/${outputname}S.${objext}" 4819c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm "$output_objdir/${outputname}S.${objext}" 4820c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4821c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4822c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $exit_status 4823c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4824c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4825c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$shlibpath_var"; then 4826c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We should set the shlibpath_var 4827c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath= 4828c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for dir in $temp_rpath; do 4829c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $dir in 4830c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) 4831c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Absolute path. 4832c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath="$rpath$dir:" 4833c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4834c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 4835c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Relative path: add a thisdir entry. 4836c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath="$rpath\$thisdir/$dir:" 4837c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 4838c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4839c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4840c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott temp_rpath="$rpath" 4841c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4842c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4843c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$compile_shlibpath$finalize_shlibpath"; then 4844c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 4845c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4846c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$finalize_shlibpath"; then 4847c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 4848c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4849c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4850c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_var= 4851c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_var= 4852c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$runpath_var"; then 4853c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$perm_rpath"; then 4854c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We should set the runpath_var. 4855c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath= 4856c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for dir in $perm_rpath; do 4857c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath="$rpath$dir:" 4858c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4859c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 4860c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4861c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$finalize_perm_rpath"; then 4862c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We should set the runpath_var. 4863c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath= 4864c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for dir in $finalize_perm_rpath; do 4865c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rpath="$rpath$dir:" 4866c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4867c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 4868c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4869c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4870c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4871c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$no_install" = yes; then 4872c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We don't need to create a wrapper script. 4873c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link_command="$compile_var$compile_command$compile_rpath" 4874c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Replace the output file specification. 4875c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 4876c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Delete the old output file. 4877c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $output 4878c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Link the executable and exit 4879c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$link_command" 4880c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$link_command" || exit $? 4881c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 4882c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4883c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4884c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$hardcode_action" = relink; then 4885c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Fast installation is not supported 4886c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link_command="$compile_var$compile_command$compile_rpath" 4887c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command="$finalize_var$finalize_command$finalize_rpath" 4888c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4889c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 4890c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$output' will be relinked during installation" 1>&2 4891c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4892c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$fast_install" != no; then 4893c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link_command="$finalize_var$compile_command$finalize_rpath" 4894c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$fast_install" = yes; then 4895c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 4896c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4897c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # fast_install is set to needless 4898c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command= 4899c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4900c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4901c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link_command="$compile_var$compile_command$compile_rpath" 4902c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command="$finalize_var$finalize_command$finalize_rpath" 4903c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4904c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4905c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4906c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Replace the output file specification. 4907c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 4908c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4909c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Delete the old output files. 4910c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 4911c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4912c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$link_command" 4913c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$link_command" || exit $? 4914c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4915c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Now create the wrapper script. 4916c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "creating $output" 4917c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4918c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Quote the relink command for shipping. 4919c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$relink_command"; then 4920c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Preserve any variables that may affect compiler behavior 4921c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for var in $variables_saved_for_relink; do 4922c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if eval test -z \"\${$var+set}\"; then 4923c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 4924c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif eval var_value=\$$var; test -z "$var_value"; then 4925c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command="$var=; export $var; $relink_command" 4926c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4927c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 4928c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command="$var=\"$var_value\"; export $var; $relink_command" 4929c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4930c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 4931c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command="(cd `pwd`; $relink_command)" 4932c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 4933c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4934c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4935c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Quote $echo for shipping. 4936c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 4937c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $progpath in 4938c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 4939c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 4940c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4941c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 4942c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 4943c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 4944c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 4945c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4946c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only actually do things if our run command is non-null. 4947c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$run"; then 4948c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # win32 will think the script is a binary if it has 4949c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # a .exe suffix, so we strip it off here. 4950c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $output in 4951c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 4952c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4953c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # test for cygwin because mv fails w/o .exe extensions 4954c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4955c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin*) 4956c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exeext=.exe 4957c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 4958c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) exeext= ;; 4959c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 4960c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 4961c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin* | *mingw* ) 4962c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output_name=`basename $output` 4963c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output_path=`dirname $output` 4964c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cwrappersource="$output_path/$objdir/lt-$output_name.c" 4965c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cwrapper="$output_path/$output_name.exe" 4966c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $rm $cwrappersource $cwrapper 4967c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 4968c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4969c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cat > $cwrappersource <<EOF 4970c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4971c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4972c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 4973c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4974c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott The $output program cannot be directly executed until all the libtool 4975c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libraries that it depends on are installed. 4976c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4977c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott This wrapper executable should never be moved out of the build directory. 4978c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott If it is, it will not operate correctly. 4979c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4980c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Currently, it simply execs the wrapper *script* "/bin/sh $output", 4981c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott but could eventually absorb all of the scripts functionality and 4982c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exec $objdir/$outputname directly. 4983c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott*/ 4984c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 4985c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cat >> $cwrappersource<<"EOF" 4986c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include <stdio.h> 4987c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include <stdlib.h> 4988c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include <unistd.h> 4989c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include <malloc.h> 4990c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include <stdarg.h> 4991c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include <assert.h> 4992c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include <string.h> 4993c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include <ctype.h> 4994c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include <sys/stat.h> 4995c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 4996c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined(PATH_MAX) 4997c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define LT_PATHMAX PATH_MAX 4998c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#elif defined(MAXPATHLEN) 4999c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define LT_PATHMAX MAXPATHLEN 5000c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#else 5001c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define LT_PATHMAX 1024 5002c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 5003c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5004c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef DIR_SEPARATOR 5005c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define DIR_SEPARATOR '/' 5006c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define PATH_SEPARATOR ':' 5007c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 5008c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5009c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 5010c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott defined (__OS2__) 5011c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define HAVE_DOS_BASED_FILE_SYSTEM 5012c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# ifndef DIR_SEPARATOR_2 5013c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define DIR_SEPARATOR_2 '\\' 5014c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# endif 5015c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# ifndef PATH_SEPARATOR_2 5016c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define PATH_SEPARATOR_2 ';' 5017c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# endif 5018c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 5019c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5020c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef DIR_SEPARATOR_2 5021c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 5022c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#else /* DIR_SEPARATOR_2 */ 5023c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define IS_DIR_SEPARATOR(ch) \ 5024c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 5025c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif /* DIR_SEPARATOR_2 */ 5026c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5027c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef PATH_SEPARATOR_2 5028c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 5029c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#else /* PATH_SEPARATOR_2 */ 5030c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 5031c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif /* PATH_SEPARATOR_2 */ 5032c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5033c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 5034c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define XFREE(stale) do { \ 5035c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (stale) { free ((void *) stale); stale = 0; } \ 5036c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} while (0) 5037c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5038c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* -DDEBUG is fairly common in CFLAGS. */ 5039c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#undef DEBUG 5040c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined DEBUGWRAPPER 5041c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 5042c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#else 5043c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# define DEBUG(format, ...) 5044c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 5045c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5046c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottconst char *program_name = NULL; 5047c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5048c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid * xmalloc (size_t num); 5049c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottchar * xstrdup (const char *string); 5050c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottconst char * base_name (const char *name); 5051c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottchar * find_executable(const char *wrapper); 5052c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottint check_executable(const char *path); 5053c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottchar * strendzap(char *str, const char *pat); 5054c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid lt_fatal (const char *message, ...); 5055c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5056c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottint 5057c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottmain (int argc, char *argv[]) 5058c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 5059c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott char **newargz; 5060c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott int i; 5061c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5062c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott program_name = (char *) xstrdup (base_name (argv[0])); 5063c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DEBUG("(main) argv[0] : %s\n",argv[0]); 5064c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DEBUG("(main) program_name : %s\n",program_name); 5065c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newargz = XMALLOC(char *, argc+2); 5066c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 5067c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5068c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cat >> $cwrappersource <<EOF 5069c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newargz[0] = (char *) xstrdup("$SHELL"); 5070c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 5071c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5072c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cat >> $cwrappersource <<"EOF" 5073c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newargz[1] = find_executable(argv[0]); 5074c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (newargz[1] == NULL) 5075c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_fatal("Couldn't find %s", argv[0]); 5076c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DEBUG("(main) found exe at : %s\n",newargz[1]); 5077c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott /* we know the script has the same name, without the .exe */ 5078c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott /* so make sure newargz[1] doesn't end in .exe */ 5079c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott strendzap(newargz[1],".exe"); 5080c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for (i = 1; i < argc; i++) 5081c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newargz[i+1] = xstrdup(argv[i]); 5082c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newargz[argc+1] = NULL; 5083c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5084c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for (i=0; i<argc+1; i++) 5085c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5086c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 5087c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ; 5088c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5089c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5090c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 5091c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5092c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host_os in 5093c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott mingw*) 5094c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cat >> $cwrappersource <<EOF 5095c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott execv("$SHELL",(char const **)newargz); 5096c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 5097c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5098c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 5099c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cat >> $cwrappersource <<EOF 5100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott execv("$SHELL",newargz); 5101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 5102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cat >> $cwrappersource <<"EOF" 5106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return 127; 5107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 5108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid * 5110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottxmalloc (size_t num) 5111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 5112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott void * p = (void *) malloc (num); 5113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (!p) 5114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_fatal ("Memory exhausted"); 5115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return p; 5117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 5118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottchar * 5120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottxstrdup (const char *string) 5121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 5122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 5123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott; 5124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 5125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottconst char * 5127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottbase_name (const char *name) 5128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 5129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const char *base; 5130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott /* Skip over the disk name in MSDOS pathnames. */ 5133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (isalpha ((unsigned char)name[0]) && name[1] == ':') 5134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name += 2; 5135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 5136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for (base = name; *name; name++) 5138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (IS_DIR_SEPARATOR (*name)) 5139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott base = name + 1; 5140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return base; 5141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 5142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottint 5144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcheck_executable(const char * path) 5145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 5146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott struct stat st; 5147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 5149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if ((!path) || (!*path)) 5150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return 0; 5151c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5152c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if ((stat (path, &st) >= 0) && 5153c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ( 5154c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 5155c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined (S_IXOTH) 5156c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ((st.st_mode & S_IXOTH) == S_IXOTH) || 5157c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 5158c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined (S_IXGRP) 5159c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ((st.st_mode & S_IXGRP) == S_IXGRP) || 5160c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 5161c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ((st.st_mode & S_IXUSR) == S_IXUSR)) 5162c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ) 5163c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return 1; 5164c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5165c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return 0; 5166c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 5167c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5168c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott/* Searches for the full path of the wrapper. Returns 5169c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newly allocated full path name if found, NULL otherwise */ 5170c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottchar * 5171c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfind_executable (const char* wrapper) 5172c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 5173c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott int has_slash = 0; 5174c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const char* p; 5175c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const char* p_next; 5176c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott /* static buffer for getcwd */ 5177c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott char tmp[LT_PATHMAX + 1]; 5178c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott int tmp_len; 5179c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott char* concat_name; 5180c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5181c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 5182c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5183c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if ((wrapper == NULL) || (*wrapper == '\0')) 5184c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return NULL; 5185c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5186c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott /* Absolute path? */ 5187c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5188c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 5189c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5190c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott concat_name = xstrdup (wrapper); 5191c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (check_executable(concat_name)) 5192c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return concat_name; 5193c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott XFREE(concat_name); 5194c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5195c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5196c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5197c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 5198c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (IS_DIR_SEPARATOR (wrapper[0])) 5199c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5200c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott concat_name = xstrdup (wrapper); 5201c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (check_executable(concat_name)) 5202c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return concat_name; 5203c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott XFREE(concat_name); 5204c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5205c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5206c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5207c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif 5208c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5209c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for (p = wrapper; *p; p++) 5210c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (*p == '/') 5211c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5212c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott has_slash = 1; 5213c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break; 5214c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5215c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (!has_slash) 5216c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5217c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott /* no slashes; search PATH */ 5218c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const char* path = getenv ("PATH"); 5219c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (path != NULL) 5220c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5221c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for (p = path; *p; p = p_next) 5222c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5223c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const char* q; 5224c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott size_t p_len; 5225c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for (q = p; *q; q++) 5226c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (IS_PATH_SEPARATOR(*q)) 5227c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break; 5228c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott p_len = q - p; 5229c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott p_next = (*q == '\0' ? q : q + 1); 5230c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (p_len == 0) 5231c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5232c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott /* empty path: current directory */ 5233c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (getcwd (tmp, LT_PATHMAX) == NULL) 5234c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_fatal ("getcwd failed"); 5235c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_len = strlen(tmp); 5236c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5237c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott memcpy (concat_name, tmp, tmp_len); 5238c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott concat_name[tmp_len] = '/'; 5239c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott strcpy (concat_name + tmp_len + 1, wrapper); 5240c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5241c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5242c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5243c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 5244c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott memcpy (concat_name, p, p_len); 5245c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott concat_name[p_len] = '/'; 5246c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott strcpy (concat_name + p_len + 1, wrapper); 5247c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5248c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (check_executable(concat_name)) 5249c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return concat_name; 5250c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott XFREE(concat_name); 5251c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5252c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5253c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott /* not found in PATH; assume curdir */ 5254c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5255c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott /* Relative path | not found in path: prepend cwd */ 5256c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (getcwd (tmp, LT_PATHMAX) == NULL) 5257c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_fatal ("getcwd failed"); 5258c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmp_len = strlen(tmp); 5259c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5260c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott memcpy (concat_name, tmp, tmp_len); 5261c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott concat_name[tmp_len] = '/'; 5262c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott strcpy (concat_name + tmp_len + 1, wrapper); 5263c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5264c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (check_executable(concat_name)) 5265c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return concat_name; 5266c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott XFREE(concat_name); 5267c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return NULL; 5268c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 5269c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5270c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottchar * 5271c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstrendzap(char *str, const char *pat) 5272c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 5273c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott size_t len, patlen; 5274c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5275c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott assert(str != NULL); 5276c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott assert(pat != NULL); 5277c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5278c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott len = strlen(str); 5279c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott patlen = strlen(pat); 5280c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5281c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (patlen <= len) 5282c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { 5283c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott str += len - patlen; 5284c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (strcmp(str, pat) == 0) 5285c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *str = '\0'; 5286c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 5287c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return str; 5288c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 5289c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5290c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstatic void 5291c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottlt_error_core (int exit_status, const char * mode, 5292c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott const char * message, va_list ap) 5293c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 5294c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fprintf (stderr, "%s: %s: ", program_name, mode); 5295c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott vfprintf (stderr, message, ap); 5296c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fprintf (stderr, ".\n"); 5297c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5298c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (exit_status >= 0) 5299c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit (exit_status); 5300c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 5301c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5302c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottvoid 5303c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottlt_fatal (const char *message, ...) 5304c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott{ 5305c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott va_list ap; 5306c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott va_start (ap, message); 5307c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 5308c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott va_end (ap); 5309c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 5310c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEOF 5311c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # we should really use a build-platform specific compiler 5312c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # here, but OTOH, the wrappers (shell script and this C one) 5313c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # are only useful if you want to execute the "real" binary. 5314c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Since the "real" binary is built for $host, then this 5315c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # wrapper might as well be built for $host, too. 5316c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 5317c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5318c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5319c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $rm $output 5320c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 5321c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5322c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo > $output "\ 5323c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#! $SHELL 5324c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5325c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# $output - temporary wrapper script for $objdir/$outputname 5326c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5327c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 5328c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# The $output program cannot be directly executed until all the libtool 5329c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# libraries that it depends on are installed. 5330c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 5331c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# This wrapper script should never be moved out of the build directory. 5332c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# If it is, it will not operate correctly. 5333c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5334c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Sed substitution that helps us do robust quoting. It backslashifies 5335c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# metacharacters that are still active within double-quoted strings. 5336c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottXsed='${SED} -e 1s/^X//' 5337c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottsed_quote_subst='$sed_quote_subst' 5338c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5339c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 5340c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 5341c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott emulate sh 5342c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott NULLCMD=: 5343c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 5344c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # is contrary to our usage. Disable this feature. 5345c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott alias -g '\${1+\"\$@\"}'='\"\$@\"' 5346c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott setopt NO_GLOB_SUBST 5347c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottelse 5348c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 5349c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfi 5350c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottBIN_SH=xpg4; export BIN_SH # for Tru64 5351c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottDUALCASE=1; export DUALCASE # for MKS sh 5352c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5353c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# The HP-UX ksh and POSIX shell print the target directory to stdout 5354c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# if CDPATH is set. 5355c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 5356c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5357c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottrelink_command=\"$relink_command\" 5358c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5359c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# This environment variable determines our operation mode. 5360c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottif test \"\$libtool_install_magic\" = \"$magic\"; then 5361c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # install mode needs the following variable: 5362c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott notinst_deplibs='$notinst_deplibs' 5363c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottelse 5364c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # When we are sourced in execute mode, \$file and \$echo are already set. 5365c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test \"\$libtool_execute_magic\" != \"$magic\"; then 5366c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott echo=\"$qecho\" 5367c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file=\"\$0\" 5368c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make sure echo works. 5369c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test \"X\$1\" = X--no-reexec; then 5370c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Discard the --no-reexec flag, and continue. 5371c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift 5372c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 5373c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Yippee, \$echo works! 5374c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott : 5375c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5376c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Restart under the correct shell, and then maybe \$echo will work. 5377c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 5378c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5379c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi\ 5380c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 5381c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5382c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5383c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Find the directory that this script lives in. 5384c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 5385c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test \"x\$thisdir\" = \"x\$file\" && thisdir=. 5386c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5387c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Follow symbolic links until we get to the real thisdir. 5388c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 5389c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott while test -n \"\$file\"; do 5390c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 5391c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5392c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there was a directory component, then change thisdir. 5393c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test \"x\$destdir\" != \"x\$file\"; then 5394c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case \"\$destdir\" in 5395c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 5396c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) thisdir=\"\$thisdir/\$destdir\" ;; 5397c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5398c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5399c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5400c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 5401c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 5402c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5403c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5404c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Try to get the absolute directory name. 5405c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott absdir=\`cd \"\$thisdir\" && pwd\` 5406c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n \"\$absdir\" && thisdir=\"\$absdir\" 5407c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 5408c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5409c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$fast_install" = yes; then 5410c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5411c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott program=lt-'$outputname'$exeext 5412c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott progdir=\"\$thisdir/$objdir\" 5413c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5414c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -f \"\$progdir/\$program\" || \\ 5415c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 5416c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test \"X\$file\" != \"X\$progdir/\$program\"; }; then 5417c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5418c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file=\"\$\$-\$program\" 5419c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5420c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -d \"\$progdir\"; then 5421c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $mkdir \"\$progdir\" 5422c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5423c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $rm \"\$progdir/\$file\" 5424c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi" 5425c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5426c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5427c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5428c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # relink executable if necessary 5429c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n \"\$relink_command\"; then 5430c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if relink_command_output=\`eval \$relink_command 2>&1\`; then : 5431c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5432c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo \"\$relink_command_output\" >&2 5433c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $rm \"\$progdir/\$file\" 5434c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5435c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5436c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5437c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5438c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 5439c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott { $rm \"\$progdir/\$program\"; 5440c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 5441c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $rm \"\$progdir/\$file\" 5442c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi" 5443c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5444c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5445c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott program='$outputname' 5446c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott progdir=\"\$thisdir/$objdir\" 5447c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 5448c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5449c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5450c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5451c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5452c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f \"\$progdir/\$program\"; then" 5453c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5454c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Export our shlibpath_var if we have one. 5455c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 5456c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5457c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add our own library path to $shlibpath_var 5458c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 5459c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5460c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Some systems cannot cope with colon-terminated $shlibpath_var 5461c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The second colon is a workaround for a bug in BeOS R4 sed 5462c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 5463c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5464c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott export $shlibpath_var 5465c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 5466c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5467c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5468c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # fixup the dll searchpath if we need to. 5469c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$dllsearchpath"; then 5470c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5471c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add the dll search path components to the executable PATH 5472c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott PATH=$dllsearchpath:\$PATH 5473c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 5474c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5475c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5476c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5477c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test \"\$libtool_execute_magic\" != \"$magic\"; then 5478c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Run the actual program with our arguments. 5479c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 5480c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 5481c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Backslashes separate directories on plain windows 5482c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *-*-mingw | *-*-os2*) 5483c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5484c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 5485c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 5486c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5487c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5488c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 5489c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5490c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exec \"\$progdir/\$program\" \${1+\"\$@\"} 5491c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 5492c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5493c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5494c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5495c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott \$echo \"\$0: cannot exec \$program \$*\" 5496c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5497c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5498c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5499c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The program doesn't exist. 5500c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 5501c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott \$echo \"This script is just a wrapper for \$program.\" 1>&2 5502c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo \"See the $PACKAGE documentation for more information.\" 1>&2 5503c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5504c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5505c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfi\ 5506c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott" 5507c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott chmod +x $output 5508c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5509c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 5510c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5511c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5512c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5513c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # See if we need to build an old-fashioned archive. 5514c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for oldlib in $oldlibs; do 5515c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5516c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" = convenience; then 5517c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldobjs="$libobjs_save" 5518c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott addlibs="$convenience" 5519c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=no 5520c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5521c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_libtool_libs" = module; then 5522c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldobjs="$libobjs_save" 5523c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott build_libtool_libs=no 5524c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5525c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldobjs="$old_deplibs $non_pic_objects" 5526c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5527c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott addlibs="$old_convenience" 5528c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5529c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5530c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$addlibs"; then 5531c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott gentop="$output_objdir/${outputname}x" 5532c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott generated="$generated $gentop" 5533c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5534c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott func_extract_archives $gentop $addlibs 5535c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldobjs="$oldobjs $func_extract_archives_result" 5536c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5537c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5538c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do each command in the archive commands. 5539c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 5540c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$old_archive_from_new_cmds 5541c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5542c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # POSIX demands no paths to be encoded in archives. We have 5543c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # to avoid creating archives with duplicate basenames if we 5544c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # might have to extract them afterwards, e.g., when creating a 5545c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # static archive out of a convenience library, or when linking 5546c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # the entirety of a libtool archive into another (currently 5547c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # not supported by libtool). 5548c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (for obj in $oldobjs 5549c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 5550c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "X$obj" | $Xsed -e 's%^.*/%%' 5551c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done | sort | sort -uc >/dev/null 2>&1); then 5552c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott : 5553c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5554c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "copying selected object files to avoid basename conflicts..." 5555c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5556c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$gentop"; then 5557c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott gentop="$output_objdir/${outputname}x" 5558c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott generated="$generated $gentop" 5559c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5560c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "${rm}r $gentop" 5561c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run ${rm}r "$gentop" 5562c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$mkdir $gentop" 5563c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $mkdir "$gentop" 5564c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit_status=$? 5565c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 5566c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $exit_status 5567c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5568c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5569c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5570c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_oldobjs=$oldobjs 5571c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldobjs= 5572c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott counter=1 5573c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for obj in $save_oldobjs 5574c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 5575c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 5576c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $oldobjs " in 5577c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott " ") oldobjs=$obj ;; 5578c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\ /]"$objbase "*) 5579c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott while :; do 5580c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Make sure we don't pick an alternate name that also 5581c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # overlaps. 5582c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newobj=lt$counter-$objbase 5583c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott counter=`expr $counter + 1` 5584c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $oldobjs " in 5585c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\ /]"$newobj "*) ;; 5586c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) if test ! -f "$gentop/$newobj"; then break; fi ;; 5587c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5588c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5589c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 5590c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run ln "$obj" "$gentop/$newobj" || 5591c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run cp "$obj" "$gentop/$newobj" 5592c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldobjs="$oldobjs $gentop/$newobj" 5593c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5594c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) oldobjs="$oldobjs $obj" ;; 5595c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5596c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5597c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5598c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5599c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmds=\"$old_archive_cmds\" 5600c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5601c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if len=`expr "X$cmds" : ".*"` && 5602c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 5603c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$old_archive_cmds 5604c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5605c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # the command line is too long to link in one step, link in parts 5606c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "using piecewise archive linking..." 5607c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_RANLIB=$RANLIB 5608c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott RANLIB=: 5609c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objlist= 5610c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott concat_cmds= 5611c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_oldobjs=$oldobjs 5612c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5613c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Is there a better way of finding the last object in the list? 5614c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for obj in $save_oldobjs 5615c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 5616c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott last_oldobj=$obj 5617c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5618c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for obj in $save_oldobjs 5619c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 5620c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldobjs="$objlist $obj" 5621c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objlist="$objlist $obj" 5622c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval test_cmds=\"$old_archive_cmds\" 5623c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 5624c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$len" -le "$max_cmd_len"; then 5625c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott : 5626c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5627c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # the above command should be used before it gets too long 5628c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldobjs=$objlist 5629c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$obj" = "$last_oldobj" ; then 5630c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott RANLIB=$save_RANLIB 5631c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5632c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 5633c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 5634c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objlist= 5635c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5636c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5637c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott RANLIB=$save_RANLIB 5638c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldobjs=$objlist 5639c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$oldobjs" = "X" ; then 5640c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmds=\"\$concat_cmds\" 5641c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5642c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 5643c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5644c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5645c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5646c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 5647c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 5648c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 5649c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 5650c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 5651c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || exit $? 5652c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5653c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 5654c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5655c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5656c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$generated"; then 5657c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "${rm}r$generated" 5658c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run ${rm}r$generated 5659c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5660c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5661c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Now create the libtool archive. 5662c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $output in 5663c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la) 5664c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_library= 5665c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$build_old_libs" = yes && old_library="$libname.$libext" 5666c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "creating $output" 5667c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5668c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Preserve any variables that may affect compiler behavior 5669c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for var in $variables_saved_for_relink; do 5670c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if eval test -z \"\${$var+set}\"; then 5671c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 5672c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif eval var_value=\$$var; test -z "$var_value"; then 5673c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command="$var=; export $var; $relink_command" 5674c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5675c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 5676c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command="$var=\"$var_value\"; export $var; $relink_command" 5677c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5678c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5679c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Quote the link command for shipping. 5680c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 5681c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 5682c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$hardcode_automatic" = yes ; then 5683c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command= 5684c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5685c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5686c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5687c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Only create the output if not a dry run. 5688c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$run"; then 5689c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for installed in no yes; do 5690c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$installed" = yes; then 5691c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$install_libdir"; then 5692c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott break 5693c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5694c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott output="$output_objdir/$outputname"i 5695c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Replace all uninstalled libtool libraries with the installed ones 5696c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdependency_libs= 5697c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for deplib in $dependency_libs; do 5698c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $deplib in 5699c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la) 5700c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 5701c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5702c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$libdir"; then 5703c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 5704c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5705c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5706c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdependency_libs="$newdependency_libs $libdir/$name" 5707c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5708c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) newdependency_libs="$newdependency_libs $deplib" ;; 5709c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5710c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5711c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dependency_libs="$newdependency_libs" 5712c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlfiles= 5713c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for lib in $dlfiles; do 5714c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5715c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5716c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$libdir"; then 5717c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5718c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5719c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5720c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlfiles="$newdlfiles $libdir/$name" 5721c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5722c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlfiles="$newdlfiles" 5723c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlprefiles= 5724c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for lib in $dlprefiles; do 5725c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5726c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5727c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$libdir"; then 5728c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5729c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5730c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5731c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlprefiles="$newdlprefiles $libdir/$name" 5732c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5733c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlprefiles="$newdlprefiles" 5734c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5735c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlfiles= 5736c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for lib in $dlfiles; do 5737c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $lib in 5738c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5739c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) abs=`pwd`"/$lib" ;; 5740c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5741c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlfiles="$newdlfiles $abs" 5742c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5743c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlfiles="$newdlfiles" 5744c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlprefiles= 5745c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for lib in $dlprefiles; do 5746c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $lib in 5747c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5748c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) abs=`pwd`"/$lib" ;; 5749c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5750c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott newdlprefiles="$newdlprefiles $abs" 5751c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5752c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlprefiles="$newdlprefiles" 5753c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5754c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $rm $output 5755c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # place dlname in correct position for cygwin 5756c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tdlname=$dlname 5757c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host,$output,$installed,$module,$dlname in 5758c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 5759c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5760c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo > $output "\ 5761c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# $outputname - a libtool library file 5762c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5763c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# 5764c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Please DO NOT delete this file! 5765c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# It is necessary for linking the library. 5766c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5767c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# The name that we can dlopen(3). 5768c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdlname='$tdlname' 5769c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5770c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Names of this library. 5771c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottlibrary_names='$library_names' 5772c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5773c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# The name of the static archive. 5774c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottold_library='$old_library' 5775c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5776c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Libraries that this one depends upon. 5777c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdependency_libs='$dependency_libs' 5778c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5779c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Version information for $libname. 5780c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcurrent=$current 5781c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottage=$age 5782c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottrevision=$revision 5783c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5784c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Is this an already installed library? 5785c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottinstalled=$installed 5786c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5787c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Should we warn about portability when linking against -modules? 5788c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottshouldnotlink=$module 5789c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5790c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Files to dlopen/dlpreopen 5791c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdlopen='$dlfiles' 5792c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdlpreopen='$dlprefiles' 5793c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5794c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Directory that this library needs to be installed in: 5795c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottlibdir='$install_libdir'" 5796c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$installed" = no && test "$need_relink" = yes; then 5797c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo >> $output "\ 5798c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottrelink_command=\"$relink_command\"" 5799c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5800c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5801c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5802c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5803c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do a symbolic link so that the libtool archive can be found in 5804c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # LD_LIBRARY_PATH before the program is installed. 5805c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 5806c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 5807c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5808c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5809c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 5810c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5811c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5812c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # libtool install mode 5813c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott install) 5814c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott modename="$modename: install" 5815c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5816c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # There may be an optional sh(1) argument at the beginning of 5817c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # install_prog (especially on Windows NT). 5818c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 5819c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Allow the use of GNU shtool's install command. 5820c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "X$nonopt" | grep shtool > /dev/null; then 5821c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Aesthetically quote it. 5822c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 5823c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 5824c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5825c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="\"$arg\"" 5826c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5827c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5828c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott install_prog="$arg " 5829c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="$1" 5830c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift 5831c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5832c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott install_prog= 5833c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=$nonopt 5834c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5835c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5836c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The real first argument should be the name of the installation program. 5837c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Aesthetically quote it. 5838c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5839c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 5840c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5841c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="\"$arg\"" 5842c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5843c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5844c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott install_prog="$install_prog$arg" 5845c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5846c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # We need to accept at least all the BSD install flags. 5847c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dest= 5848c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott files= 5849c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott opts= 5850c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 5851c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott install_type= 5852c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott isdir=no 5853c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott stripme= 5854c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg 5855c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 5856c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$dest"; then 5857c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott files="$files $dest" 5858c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dest=$arg 5859c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 5860c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5861c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5862c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 5863c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -d) isdir=yes ;; 5864c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -f) 5865c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $install_prog " in 5866c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\\\ /]cp\ *) ;; 5867c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) prev=$arg ;; 5868c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5869c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5870c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -g | -m | -o) prev=$arg ;; 5871c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -s) 5872c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott stripme=" -s" 5873c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 5874c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5875c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -*) 5876c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5877c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 5878c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the previous option needed an argument, then skip it. 5879c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$prev"; then 5880c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott prev= 5881c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5882c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dest=$arg 5883c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 5884c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5885c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5886c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5887c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5888c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Aesthetically quote the argument. 5889c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5890c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 5891c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5892c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott arg="\"$arg\"" 5893c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5894c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5895c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott install_prog="$install_prog $arg" 5896c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5897c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5898c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$install_prog"; then 5899c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: you must specify an install program" 1>&2 5900c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 5901c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5902c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5903c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5904c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$prev"; then 5905c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: the \`$prev' option requires an argument" 1>&2 5906c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 5907c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5908c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5909c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5910c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$files"; then 5911c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$dest"; then 5912c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: no file or destination specified" 1>&2 5913c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5914c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: you must specify a destination" 1>&2 5915c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5916c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 5917c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5918c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5919c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5920c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Strip any trailing slash from the destination. 5921c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 5922c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5923c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check to see that the destination is a directory. 5924c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -d "$dest" && isdir=yes 5925c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$isdir" = yes; then 5926c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destdir="$dest" 5927c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destname= 5928c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5929c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 5930c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$destdir" = "X$dest" && destdir=. 5931c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 5932c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5933c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Not a directory, so check to see that there is only one file specified. 5934c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $files 5935c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$#" -gt 2; then 5936c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$dest' is not a directory" 1>&2 5937c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 5938c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5939c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5940c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5941c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $destdir in 5942c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott [\\/]* | [A-Za-z]:[\\/]*) ;; 5943c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 5944c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for file in $files; do 5945c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file in 5946c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.lo) ;; 5947c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 5948c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 5949c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 5950c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5951c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5952c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5953c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 5954c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5955c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5956c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5957c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This variable tells wrapper scripts just to set variables rather 5958c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # than running their programs. 5959c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libtool_install_magic="$magic" 5960c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5961c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott staticlibs= 5962c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott future_libdirs= 5963c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott current_libdirs= 5964c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for file in $files; do 5965c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5966c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do each installation. 5967c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file in 5968c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.$libext) 5969c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do the static libraries later. 5970c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott staticlibs="$staticlibs $file" 5971c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 5972c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5973c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la) 5974c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check to see that this really is a libtool archive. 5975c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 5976c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5977c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 5978c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 5979c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 5980c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 5981c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5982c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott library_names= 5983c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott old_library= 5984c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command= 5985c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there is no directory component, then add one. 5986c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file in 5987c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */* | *\\*) . $file ;; 5988c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) . ./$file ;; 5989c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5990c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5991c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add the libdir to current_libdirs if it is the destination. 5992c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$destdir" = "X$libdir"; then 5993c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$current_libdirs " in 5994c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 5995c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) current_libdirs="$current_libdirs $libdir" ;; 5996c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 5997c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 5998c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Note the libdir as a future libdir. 5999c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$future_libdirs " in 6000c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $libdir "*) ;; 6001c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) future_libdirs="$future_libdirs $libdir" ;; 6002c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6003c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6004c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6005c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 6006c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$dir" = "X$file/" && dir= 6007c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir="$dir$objdir" 6008c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6009c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$relink_command"; then 6010c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Determine the prefix the user has applied to our future dir. 6011c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 6012c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6013c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Don't allow the user to place us outside of our expected 6014c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # location b/c this prevents finding dependent libraries that 6015c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # are installed to the same prefix. 6016c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # At present, this check doesn't affect windows .dll's that 6017c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # are installed into $libdir/../bin (currently, that works fine) 6018c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # but it's something to keep an eye on. 6019c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$inst_prefix_dir" = "$destdir"; then 6020c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 6021c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6022c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6023c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6024c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$inst_prefix_dir"; then 6025c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Stick the inst_prefix_dir data into the link command. 6026c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 6027c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6028c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 6029c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6030c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6031c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: relinking \`$file'" 1>&2 6032c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$relink_command" 6033c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if $run eval "$relink_command"; then : 6034c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6035c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6036c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6037c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6038c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6039c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6040c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # See the names of the shared library. 6041c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott set dummy $library_names 6042c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$2"; then 6043c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott realname="$2" 6044c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift 6045c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott shift 6046c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6047c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott srcname="$realname" 6048c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$relink_command" && srcname="$realname"T 6049c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6050c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Install the shared library and build the symlinks. 6051c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$install_prog $dir/$srcname $destdir/$realname" 6052c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 6053c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$stripme" && test -n "$striplib"; then 6054c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$striplib $destdir/$realname" 6055c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$striplib $destdir/$realname" || exit $? 6056c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6057c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6058c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$#" -gt 0; then 6059c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Delete the old symlinks, and create new ones. 6060c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Try `ln -sf' first, because the `ln' binary might depend on 6061c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # the symlink we replace! Solaris /bin/ln does not understand -f, 6062c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # so we also need to try rm && ln -s. 6063c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for linkname 6064c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 6065c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$linkname" != "$realname"; then 6066c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6067c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6068c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6069c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6070c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6071c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6072c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do each command in the postinstall commands. 6073c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lib="$destdir/$realname" 6074c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$postinstall_cmds 6075c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 6076c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 6077c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 6078c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 6079c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 6080c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || { 6081c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott lt_exit=$? 6082c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6083c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Restore the uninstalled library and exit 6084c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$mode" = relink; then 6085c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 6086c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6087c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6088c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $lt_exit 6089c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 6090c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6091c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 6092c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6093c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6094c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Install the pseudo-library for information purposes. 6095c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6096c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott instname="$dir/$name"i 6097c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$install_prog $instname $destdir/$name" 6098c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$install_prog $instname $destdir/$name" || exit $? 6099c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Maybe install the static library, too. 6101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 6102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.lo) 6105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Install (i.e. copy) a libtool object. 6106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Figure out destination file name, if it wasn't already specified. 6108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$destname"; then 6109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destfile="$destdir/$destname" 6110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destfile="$destdir/$destfile" 6113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Deduce the name of the destination old-style object file. 6116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $destfile in 6117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.lo) 6118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 6119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.$objext) 6121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott staticdest="$destfile" 6122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destfile= 6123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 6125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 6126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 6127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Install the libtool object if requested. 6132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$destfile"; then 6133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$install_prog $file $destfile" 6134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$install_prog $file $destfile" || exit $? 6135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Install the old object if enabled. 6138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$build_old_libs" = yes; then 6139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Deduce the name of the old-style object file. 6140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 6141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$install_prog $staticobj $staticdest" 6143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$install_prog \$staticobj \$staticdest" || exit $? 6144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 6146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 6149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Figure out destination file name, if it wasn't already specified. 6150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$destname"; then 6151c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destfile="$destdir/$destname" 6152c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6153c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6154c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destfile="$destdir/$destfile" 6155c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6156c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6157c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If the file is missing, and there is a .exe on the end, strip it 6158c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # because it is most likely a libtool script we actually want to 6159c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # install 6160c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott stripped_ext="" 6161c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file in 6162c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.exe) 6163c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -f "$file"; then 6164c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file=`$echo $file|${SED} 's,.exe$,,'` 6165c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott stripped_ext=".exe" 6166c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6167c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6168c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6169c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6170c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do a test to see if this is really a libtool program. 6171c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $host in 6172c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *cygwin*|*mingw*) 6173c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 6174c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6175c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 6176c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott wrapper=$file 6177c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6178c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6179c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 6180c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott notinst_deplibs= 6181c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command= 6182c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6183c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Note that it is not necessary on cygwin/mingw to append a dot to 6184c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # foo even if both foo and FILE.exe exist: automatic-append-.exe 6185c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # behavior happens only for exec(3), not for open(2)! Also, sourcing 6186c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # `FILE.' does not work on cygwin managed mounts. 6187c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # 6188c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there is no directory component, then add one. 6189c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $wrapper in 6190c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */* | *\\*) . ${wrapper} ;; 6191c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) . ./${wrapper} ;; 6192c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6193c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6194c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check the variables that should have been set. 6195c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$notinst_deplibs"; then 6196c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 6197c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6198c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6199c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6200c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize=yes 6201c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for lib in $notinst_deplibs; do 6202c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check to see that each library is installed. 6203c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libdir= 6204c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$lib"; then 6205c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there is no directory component, then add one. 6206c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $lib in 6207c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */* | *\\*) . $lib ;; 6208c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) . ./$lib ;; 6209c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6210c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6211c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 6212c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$libdir" && test ! -f "$libfile"; then 6213c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 6214c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finalize=no 6215c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6216c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6217c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6218c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command= 6219c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Note that it is not necessary on cygwin/mingw to append a dot to 6220c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # foo even if both foo and FILE.exe exist: automatic-append-.exe 6221c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # behavior happens only for exec(3), not for open(2)! Also, sourcing 6222c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # `FILE.' does not work on cygwin managed mounts. 6223c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # 6224c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there is no directory component, then add one. 6225c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $wrapper in 6226c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */* | *\\*) . ${wrapper} ;; 6227c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) . ./${wrapper} ;; 6228c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6229c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6230c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott outputname= 6231c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$fast_install" = no && test -n "$relink_command"; then 6232c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$finalize" = yes && test -z "$run"; then 6233c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott tmpdir=`func_mktempdir` 6234c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 6235c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott outputname="$tmpdir/$file" 6236c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Replace the output file specification. 6237c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 6238c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6239c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$relink_command" 6240c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if $run eval "$relink_command"; then : 6241c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6242c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6243c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ${rm}r "$tmpdir" 6244c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 6245c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6246c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file="$outputname" 6247c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6248c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: cannot relink \`$file'" 1>&2 6249c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6250c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6251c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Install the binary that we compiled earlier. 6252c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 6253c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6254c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6255c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6256c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # remove .exe since cygwin /usr/bin/install will append another 6257c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # one anyway 6258c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $install_prog,$host in 6259c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */usr/bin/install*,*cygwin*) 6260c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file:$destfile in 6261c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.exe:*.exe) 6262c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # this is ok 6263c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6264c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.exe:*) 6265c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destfile=$destfile.exe 6266c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6267c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *:*.exe) 6268c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 6269c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6270c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6271c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6272c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6273c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$install_prog$stripme $file $destfile" 6274c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 6275c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$outputname" && ${rm}r "$tmpdir" 6276c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6277c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6278c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6279c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6280c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for file in $staticlibs; do 6281c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6282c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6283c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Set up the ranlib parameters. 6284c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott oldlib="$destdir/$name" 6285c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6286c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$install_prog $file $oldlib" 6287c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$install_prog \$file \$oldlib" || exit $? 6288c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6289c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$stripme" && test -n "$old_striplib"; then 6290c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$old_striplib $oldlib" 6291c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$old_striplib $oldlib" || exit $? 6292c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6293c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6294c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do each command in the postinstall commands. 6295c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$old_postinstall_cmds 6296c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 6297c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 6298c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 6299c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 6300c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 6301c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || exit $? 6302c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6303c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 6304c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6305c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6306c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$future_libdirs"; then 6307c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 6308c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6309c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6310c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$current_libdirs"; then 6311c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Maybe just do a dry run. 6312c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$run" && current_libdirs=" -n$current_libdirs" 6313c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 6314c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6315c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 6316c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6317c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6318c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6319c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # libtool finish mode 6320c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finish) 6321c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott modename="$modename: finish" 6322c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libdirs="$nonopt" 6323c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott admincmds= 6324c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6325c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 6326c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for dir 6327c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 6328c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libdirs="$libdirs $dir" 6329c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6330c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6331c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for libdir in $libdirs; do 6332c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$finish_cmds"; then 6333c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do each command in the finish commands. 6334c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$finish_cmds 6335c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 6336c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 6337c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 6338c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 6339c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 6340c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" || admincmds="$admincmds 6341c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $cmd" 6342c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6343c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 6344c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6345c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$finish_eval"; then 6346c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do the single finish_eval. 6347c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmds=\"$finish_eval\" 6348c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmds" || admincmds="$admincmds 6349c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $cmds" 6350c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6351c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6352c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6353c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6354c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Exit here if they wanted silent mode. 6355c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$show" = : && exit $EXIT_SUCCESS 6356c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6357c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "X----------------------------------------------------------------------" | $Xsed 6358c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "Libraries have been installed in:" 6359c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for libdir in $libdirs; do 6360c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo " $libdir" 6361c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6362c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 6363c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "If you ever happen to want to link against installed libraries" 6364c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "in a given directory, LIBDIR, you must either use libtool, and" 6365c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 6366c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "flag during linking and do at least one of the following:" 6367c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$shlibpath_var"; then 6368c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 6369c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo " during execution" 6370c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6371c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$runpath_var"; then 6372c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo " - add LIBDIR to the \`$runpath_var' environment variable" 6373c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo " during linking" 6374c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6375c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$hardcode_libdir_flag_spec"; then 6376c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libdir=LIBDIR 6377c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval flag=\"$hardcode_libdir_flag_spec\" 6378c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6379c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo " - use the \`$flag' linker flag" 6380c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6381c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$admincmds"; then 6382c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo " - have your system administrator run these commands:$admincmds" 6383c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6384c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f /etc/ld.so.conf; then 6385c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 6386c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6387c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo 6388c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "See any operating system documentation about shared libraries for" 6389c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "more information, such as the ld(1) and ld.so(8) manual pages." 6390c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "X----------------------------------------------------------------------" | $Xsed 6391c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 6392c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6393c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6394c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # libtool execute mode 6395c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott execute) 6396c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott modename="$modename: execute" 6397c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6398c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # The first argument is the command name. 6399c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmd="$nonopt" 6400c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$cmd"; then 6401c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: you must specify a COMMAND" 1>&2 6402c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 6403c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6404c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6405c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6406c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Handle -dlopen flags immediately. 6407c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for file in $execute_dlfiles; do 6408c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -f "$file"; then 6409c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$file' is not a file" 1>&2 6410c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 6411c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6412c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6413c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6414c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir= 6415c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file in 6416c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la) 6417c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check to see that this really is a libtool archive. 6418c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 6419c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6420c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 6421c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 6422c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6423c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6424c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6425c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Read the libtool library. 6426c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dlname= 6427c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott library_names= 6428c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6429c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there is no directory component, then add one. 6430c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file in 6431c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */* | *\\*) . $file ;; 6432c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) . ./$file ;; 6433c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6434c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6435c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Skip this library if it cannot be dlopened. 6436c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$dlname"; then 6437c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Warn if it was a shared library. 6438c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 6439c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 6440c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6441c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6442c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6443c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$dir" = "X$file" && dir=. 6444c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6445c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -f "$dir/$objdir/$dlname"; then 6446c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir="$dir/$objdir" 6447c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6448c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test ! -f "$dir/$dlname"; then 6449c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 6450c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6451c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6452c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6453c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6454c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6455c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.lo) 6456c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Just add the directory containing the .lo file. 6457c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6458c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "X$dir" = "X$file" && dir=. 6459c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6460c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6461c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 6462c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 6463c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 6464c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6465c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6466c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6467c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Get the absolute pathname. 6468c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott absdir=`cd "$dir" && pwd` 6469c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$absdir" && dir="$absdir" 6470c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6471c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Now add the directory to shlibpath_var. 6472c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if eval "test -z \"\$$shlibpath_var\""; then 6473c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "$shlibpath_var=\"\$dir\"" 6474c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6475c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 6476c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6477c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6478c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6479c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This variable tells wrapper scripts just to set shlibpath_var 6480c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # rather than running their programs. 6481c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libtool_execute_magic="$magic" 6482c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6483c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Check if any of the arguments is a wrapper script. 6484c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott args= 6485c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for file 6486c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 6487c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file in 6488c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -*) ;; 6489c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 6490c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do a test to see if this is really a libtool program. 6491c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6492c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # If there is no directory component, then add one. 6493c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file in 6494c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott */* | *\\*) . $file ;; 6495c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) . ./$file ;; 6496c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6497c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6498c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Transform arg to wrapped name. 6499c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file="$progdir/$program" 6500c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6501c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6502c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6503c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Quote arguments (to preserve shell metacharacters). 6504c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 6505c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott args="$args \"$file\"" 6506c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6507c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6508c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$run"; then 6509c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$shlibpath_var"; then 6510c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Export the shlibpath_var. 6511c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "export $shlibpath_var" 6512c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6513c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6514c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Restore saved environment variables 6515c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 6516c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 6517c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "if test \"\${save_$lt_var+set}\" = set; then 6518c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $lt_var=\$save_$lt_var; export $lt_var 6519c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi" 6520c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6521c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6522c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Now prepare to actually exec the command. 6523c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exec_cmd="\$cmd$args" 6524c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6525c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Display what would be done. 6526c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$shlibpath_var"; then 6527c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 6528c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "export $shlibpath_var" 6529c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6530c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$cmd$args" 6531c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 6532c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6533c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6534c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6535c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # libtool clean and uninstall mode 6536c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott clean | uninstall) 6537c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott modename="$modename: $mode" 6538c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rm="$nonopt" 6539c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott files= 6540c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rmforce= 6541c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit_status=0 6542c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6543c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # This variable tells wrapper scripts just to set variables rather 6544c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # than running their programs. 6545c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott libtool_install_magic="$magic" 6546c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6547c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for arg 6548c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do 6549c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $arg in 6550c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -f) rm="$rm $arg"; rmforce=yes ;; 6551c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -*) rm="$rm $arg" ;; 6552c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) files="$files $arg" ;; 6553c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6554c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6555c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6556c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$rm"; then 6557c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: you must specify an RM program" 1>&2 6558c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 6559c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6560c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6561c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6562c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rmdirs= 6563c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6564c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott origobjdir="$objdir" 6565c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for file in $files; do 6566c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6567c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$dir" = "X$file"; then 6568c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott dir=. 6569c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objdir="$origobjdir" 6570c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott else 6571c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objdir="$dir/$origobjdir" 6572c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6573c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6574c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test "$mode" = uninstall && objdir="$dir" 6575c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6576c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Remember objdir for removal later, being careful to avoid duplicates 6577c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$mode" = clean; then 6578c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $rmdirs " in 6579c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $objdir "*) ;; 6580c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) rmdirs="$rmdirs $objdir" ;; 6581c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6582c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6583c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6584c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Don't error if the file doesn't exist and rm -f was used. 6585c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (test -L "$file") >/dev/null 2>&1 \ 6586c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott || (test -h "$file") >/dev/null 2>&1 \ 6587c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott || test -f "$file"; then 6588c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott : 6589c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test -d "$file"; then 6590c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit_status=1 6591c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 6592c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott elif test "$rmforce" = yes; then 6593c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott continue 6594c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6595c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6596c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rmfiles="$file" 6597c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6598c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $name in 6599c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.la) 6600c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Possibly a libtool archive, so verify it. 6601c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6602c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott . $dir/$name 6603c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6604c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Delete the libtool libraries and symlinks. 6605c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for n in $library_names; do 6606c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rmfiles="$rmfiles $objdir/$n" 6607c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6608c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 6609c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6610c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case "$mode" in 6611c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott clean) 6612c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case " $library_names " in 6613c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # " " in the beginning catches empty $dlname 6614c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *" $dlname "*) ;; 6615c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) rmfiles="$rmfiles $objdir/$dlname" ;; 6616c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6617c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 6618c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6619c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott uninstall) 6620c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$library_names"; then 6621c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do each command in the postuninstall commands. 6622c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$postuninstall_cmds 6623c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 6624c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 6625c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 6626c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 6627c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 6628c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" 6629c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$?" -ne 0 && test "$rmforce" != yes; then 6630c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit_status=1 6631c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6632c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6633c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 6634c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6635c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6636c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$old_library"; then 6637c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do each command in the old_postuninstall commands. 6638c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott cmds=$old_postuninstall_cmds 6639c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott save_ifs="$IFS"; IFS='~' 6640c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for cmd in $cmds; do 6641c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 6642c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval cmd=\"$cmd\" 6643c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$cmd" 6644c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run eval "$cmd" 6645c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$?" -ne 0 && test "$rmforce" != yes; then 6646c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit_status=1 6647c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6648c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6649c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott IFS="$save_ifs" 6650c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6651c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # FIXME: should reinstall the best remaining shared library. 6652c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6653c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6654c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6655c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6656c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6657c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.lo) 6658c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Possibly a libtool object, so verify it. 6659c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6660c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6661c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Read the .lo file 6662c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott . $dir/$name 6663c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6664c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add PIC object to the list of files to remove. 6665c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$pic_object" \ 6666c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott && test "$pic_object" != none; then 6667c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rmfiles="$rmfiles $dir/$pic_object" 6668c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6669c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6670c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Add non-PIC object to the list of files to remove. 6671c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -n "$non_pic_object" \ 6672c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott && test "$non_pic_object" != none; then 6673c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rmfiles="$rmfiles $dir/$non_pic_object" 6674c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6675c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6676c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6677c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6678c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *) 6679c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$mode" = clean ; then 6680c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott noexename=$name 6681c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott case $file in 6682c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott *.exe) 6683c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott file=`$echo $file|${SED} 's,.exe$,,'` 6684c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott noexename=`$echo $name|${SED} 's,.exe$,,'` 6685c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # $file with .exe has already been added to rmfiles, 6686c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # add $file without .exe 6687c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rmfiles="$rmfiles $file" 6688c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6689c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6690c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Do a test to see if this is a libtool program. 6691c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6692c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott relink_command= 6693c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott . $dir/$noexename 6694c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6695c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # note $name still contains .exe if it was in $file originally 6696c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # as does the version of $file that was added into $rmfiles 6697c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 6698c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "$fast_install" = yes && test -n "$relink_command"; then 6699c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rmfiles="$rmfiles $objdir/lt-$name" 6700c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6701c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test "X$noexename" != "X$name" ; then 6702c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott rmfiles="$rmfiles $objdir/lt-${noexename}.c" 6703c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6704c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6705c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6706c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6707c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6708c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "$rm $rmfiles" 6709c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run $rm $rmfiles || exit_status=1 6710c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6711c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott objdir="$origobjdir" 6712c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6713c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott # Try to remove the ${objdir}s in the directories where we deleted files 6714c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott for dir in $rmdirs; do 6715c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -d "$dir"; then 6716c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $show "rmdir $dir" 6717c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $run rmdir $dir >/dev/null 2>&1 6718c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6719c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott done 6720c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6721c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $exit_status 6722c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6723c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6724c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott "") 6725c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: you must specify a MODE" 1>&2 6726c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$generic_help" 1>&2 6727c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6728c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6729c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott esac 6730c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6731c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott if test -z "$exec_cmd"; then 6732c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: invalid operation mode \`$mode'" 1>&2 6733c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$generic_help" 1>&2 6734c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6735c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott fi 6736c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfi # test -z "$show_help" 6737c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6738c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottif test -n "$exec_cmd"; then 6739c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott eval exec $exec_cmd 6740c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6741c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfi 6742c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6743c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# We need to display help for each of the modes. 6744c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcase $mode in 6745c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott"") $echo \ 6746c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott"Usage: $modename [OPTION]... [MODE-ARG]... 6747c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6748c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottProvide generalized library-building support services. 6749c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6750c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --config show all configuration variables 6751c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --debug enable verbose shell tracing 6752c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott-n, --dry-run display commands without modifying any files 6753c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --features display basic configuration information and exit 6754c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --finish same as \`--mode=finish' 6755c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --help display this help message and exit 6756c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 6757c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --quiet same as \`--silent' 6758c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --silent don't print informational messages 6759c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --tag=TAG use configuration variables from tag TAG 6760c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott --version print version information 6761c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6762c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottMODE must be one of the following: 6763c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6764c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott clean remove files from the build directory 6765c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott compile compile a source file into a libtool object 6766c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott execute automatically set library path, then run a program 6767c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott finish complete the installation of libtool libraries 6768c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott install install libraries or executables 6769c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott link create a library or an executable 6770c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott uninstall remove libraries from an installed directory 6771c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6772c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 6773c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotta more detailed description of MODE. 6774c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6775c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottReport bugs to <bug-libtool@gnu.org>." 6776c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_SUCCESS 6777c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6778c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6779c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclean) 6780c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo \ 6781c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 6782c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6783c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottRemove files from the build directory. 6784c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6785c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottRM is the name of the program to use to delete files associated with each FILE 6786c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6787c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottto RM. 6788c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6789c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottIf FILE is a libtool library, object or program, all the files associated 6790c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottwith it are deleted. Otherwise, only FILE itself is deleted using RM." 6791c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6792c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6793c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcompile) 6794c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo \ 6795c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 6796c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6797c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottCompile a source file into a libtool library object. 6798c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6799c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThis mode accepts the following additional options: 6800c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6801c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -o OUTPUT-FILE set the output file name to OUTPUT-FILE 6802c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -prefer-pic try to building PIC objects only 6803c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -prefer-non-pic try to building non-PIC objects only 6804c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -static always build a \`.o' file suitable for static linking 6805c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6806c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 6807c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfrom the given SOURCEFILE. 6808c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6809c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThe output file name is determined by removing the directory component from 6810c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottSOURCEFILE, then substituting the C source code suffix \`.c' with the 6811c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottlibrary object suffix, \`.lo'." 6812c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6813c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6814c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottexecute) 6815c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo \ 6816c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 6817c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6818c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottAutomatically set library path, then run a program. 6819c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6820c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThis mode accepts the following additional options: 6821c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6822c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -dlopen FILE add the directory containing FILE to the library path 6823c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6824c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThis mode sets the library path environment variable according to \`-dlopen' 6825c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottflags. 6826c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6827c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottIf any of the ARGS are libtool executable wrappers, then they are translated 6828c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottinto their corresponding uninstalled binary, and any of their required library 6829c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdirectories are added to the library path. 6830c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6831c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThen, COMMAND is executed, with ARGS as arguments." 6832c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6833c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6834c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottfinish) 6835c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo \ 6836c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 6837c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6838c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottComplete the installation of libtool libraries. 6839c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6840c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEach LIBDIR is a directory that contains libtool libraries. 6841c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6842c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThe commands that this mode executes may require superuser privileges. Use 6843c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottthe \`--dry-run' option if you just want to see what would be executed." 6844c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6845c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6846c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottinstall) 6847c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo \ 6848c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 6849c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6850c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottInstall executables or libraries. 6851c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6852c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottINSTALL-COMMAND is the installation command. The first component should be 6853c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotteither the \`install' or \`cp' program. 6854c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6855c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThe rest of the components are interpreted as arguments to that command (only 6856c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottBSD-compatible install options are recognized)." 6857c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6858c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6859c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottlink) 6860c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo \ 6861c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 6862c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6863c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottLink object files or libraries together to form another library, or to 6864c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottcreate an executable program. 6865c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6866c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottLINK-COMMAND is a command using the C compiler that you would use to create 6867c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotta program from several object files. 6868c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6869c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottThe following components of LINK-COMMAND are treated specially: 6870c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6871c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -all-static do not do any dynamic linking at all 6872c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -avoid-version do not add a version suffix if possible 6873c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 6874c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 6875c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 6876c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -export-symbols SYMFILE 6877c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott try to export only the symbols listed in SYMFILE 6878c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -export-symbols-regex REGEX 6879c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott try to export only the symbols matching REGEX 6880c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -LLIBDIR search LIBDIR for required installed libraries 6881c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -lNAME OUTPUT-FILE requires the installed library libNAME 6882c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -module build a library that can dlopened 6883c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -no-fast-install disable the fast-install mode 6884c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -no-install link a not-installable executable 6885c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -no-undefined declare that a library does not refer to external symbols 6886c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 6887c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -objectlist FILE Use a list of object files found in FILE to specify objects 6888c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -precious-files-regex REGEX 6889c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott don't remove output files matching REGEX 6890c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -release RELEASE specify package release information 6891c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -rpath LIBDIR the created library will eventually be installed in LIBDIR 6892c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 6893c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -static do not do any dynamic linking of uninstalled libtool libraries 6894c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -static-libtool-libs 6895c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott do not do any dynamic linking of libtool libraries 6896c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott -version-info CURRENT[:REVISION[:AGE]] 6897c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott specify library version info [each variable defaults to 0] 6898c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6899c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottAll other options (arguments beginning with \`-') are ignored. 6900c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6901c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottEvery other argument is treated as a filename. Files ending in \`.la' are 6902c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scotttreated as uninstalled libtool libraries, other files are standard or library 6903c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottobject files. 6904c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6905c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 6906c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottonly library objects (\`.lo' files) may be specified, and \`-rpath' is 6907c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottrequired, except when creating a convenience library. 6908c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6909c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 6910c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottusing \`ar' and \`ranlib', or on Windows using \`lib'. 6911c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6912c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 6913c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottis created, otherwise an executable program is created." 6914c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6915c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6916c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottuninstall) 6917c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo \ 6918c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 6919c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6920c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottRemove libraries from an installation directory. 6921c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6922c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottRM is the name of the program to use to delete files associated with each FILE 6923c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6924c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottto RM. 6925c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6926c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottIf FILE is a libtool library, all the files associated with it are deleted. 6927c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottOtherwise, only FILE itself is deleted using RM." 6928c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6929c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6930c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott*) 6931c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$modename: invalid operation mode \`$mode'" 1>&2 6932c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott $echo "$help" 1>&2 6933c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott exit $EXIT_FAILURE 6934c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott ;; 6935c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottesac 6936c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6937c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott$echo 6938c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott$echo "Try \`$modename --help' for more information about other modes." 6939c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6940c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottexit $? 6941c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6942c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# The TAGs below are defined such that we never get into a situation 6943c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# in which we disable both kinds of libraries. Given conflicting 6944c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# choices, we go for a static library, that is the most portable, 6945c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# since we can't tell whether shared libraries were disabled because 6946c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# the user asked for that or because the platform doesn't support 6947c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# them. This is particularly important on AIX, because we don't 6948c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# support having both static and shared libraries enabled at the same 6949c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# time on that platform, so we default to a shared-only configuration. 6950c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# If a disable-shared tag is given, we'll fallback to a static-only 6951c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# configuration. But we'll never go from static-only to shared-only. 6952c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6953c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 6954c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdisable_libs=shared 6955c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# ### END LIBTOOL TAG CONFIG: disable-shared 6956c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6957c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# ### BEGIN LIBTOOL TAG CONFIG: disable-static 6958c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottdisable_libs=static 6959c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# ### END LIBTOOL TAG CONFIG: disable-static 6960c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 6961c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# Local Variables: 6962c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# mode:shell-script 6963c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# sh-indentation:2 6964c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott# End: 6965