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