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