ltmain.sh revision e1e1713c
1e1e1713cSmrg# ltmain.sh - Provide generalized library-building support services. 2e1e1713cSmrg# NOTE: Changing this file will not affect anything until you rerun configure. 3e1e1713cSmrg# 4e1e1713cSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 5e1e1713cSmrg# 2007, 2008 Free Software Foundation, Inc. 6e1e1713cSmrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 7e1e1713cSmrg# 8e1e1713cSmrg# This program is free software; you can redistribute it and/or modify 97a84e134Smrg# it under the terms of the GNU General Public License as published by 107a84e134Smrg# the Free Software Foundation; either version 2 of the License, or 117a84e134Smrg# (at your option) any later version. 127a84e134Smrg# 13e1e1713cSmrg# This program is distributed in the hope that it will be useful, but 147a84e134Smrg# WITHOUT ANY WARRANTY; without even the implied warranty of 157a84e134Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 167a84e134Smrg# General Public License for more details. 177a84e134Smrg# 187a84e134Smrg# You should have received a copy of the GNU General Public License 19e1e1713cSmrg# along with this program; if not, write to the Free Software 20e1e1713cSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21775e7de9Smrg# 22e1e1713cSmrg# As a special exception to the GNU General Public License, if you 23e1e1713cSmrg# distribute this file as part of a program that contains a 24e1e1713cSmrg# configuration script generated by Autoconf, you may include it under 25e1e1713cSmrg# the same distribution terms that you use for the rest of that program. 26e1e1713cSmrg 27e1e1713cSmrgbasename="s,^.*/,,g" 28e1e1713cSmrg 29e1e1713cSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 30e1e1713cSmrg# is ksh but when the shell is invoked as "sh" and the current value of 31e1e1713cSmrg# the _XPG environment variable is not equal to 1 (one), the special 32e1e1713cSmrg# positional parameter $0, within a function call, is the name of the 33e1e1713cSmrg# function. 34e1e1713cSmrgprogpath="$0" 35e1e1713cSmrg 36e1e1713cSmrg# The name of this program: 37e1e1713cSmrgprogname=`echo "$progpath" | $SED $basename` 38e1e1713cSmrgmodename="$progname" 39e1e1713cSmrg 40e1e1713cSmrg# Global variables: 41e1e1713cSmrgEXIT_SUCCESS=0 42e1e1713cSmrgEXIT_FAILURE=1 437a84e134Smrg 447a84e134SmrgPROGRAM=ltmain.sh 457a84e134SmrgPACKAGE=libtool 46e1e1713cSmrgVERSION=1.5.26 47e1e1713cSmrgTIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)" 48ab902922Smrg 49e1e1713cSmrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 50ab902922Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 51ab902922Smrg emulate sh 52ab902922Smrg NULLCMD=: 53ab902922Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 54ab902922Smrg # is contrary to our usage. Disable this feature. 55ab902922Smrg alias -g '${1+"$@"}'='"$@"' 567a84e134Smrg setopt NO_GLOB_SUBST 57ab902922Smrgelse 58ab902922Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 597a84e134Smrgfi 60ab902922SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 61ab902922SmrgDUALCASE=1; export DUALCASE # for MKS sh 627a84e134Smrg 63e1e1713cSmrg# Check that we have a working $echo. 64e1e1713cSmrgif test "X$1" = X--no-reexec; then 65e1e1713cSmrg # Discard the --no-reexec flag, and continue. 66e1e1713cSmrg shift 67e1e1713cSmrgelif test "X$1" = X--fallback-echo; then 68e1e1713cSmrg # Avoid inline document here, it may be left over 69e1e1713cSmrg : 70e1e1713cSmrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 71e1e1713cSmrg # Yippee, $echo works! 72e1e1713cSmrg : 73e1e1713cSmrgelse 74e1e1713cSmrg # Restart under the correct shell, and then maybe $echo will work. 75e1e1713cSmrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 76e1e1713cSmrgfi 77e1e1713cSmrg 78e1e1713cSmrgif test "X$1" = X--fallback-echo; then 79e1e1713cSmrg # used as fallback echo 80e1e1713cSmrg shift 81e1e1713cSmrg cat <<EOF 82e1e1713cSmrg$* 83e1e1713cSmrgEOF 84e1e1713cSmrg exit $EXIT_SUCCESS 85e1e1713cSmrgfi 86e1e1713cSmrg 87e1e1713cSmrgdefault_mode= 88e1e1713cSmrghelp="Try \`$progname --help' for more information." 89e1e1713cSmrgmagic="%%%MAGIC variable%%%" 90e1e1713cSmrgmkdir="mkdir" 91e1e1713cSmrgmv="mv -f" 92e1e1713cSmrgrm="rm -f" 93e1e1713cSmrg 94e1e1713cSmrg# Sed substitution that helps us do robust quoting. It backslashifies 95e1e1713cSmrg# metacharacters that are still active within double-quoted strings. 96e1e1713cSmrgXsed="${SED}"' -e 1s/^X//' 97e1e1713cSmrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 98e1e1713cSmrg# test EBCDIC or ASCII 99e1e1713cSmrgcase `echo X|tr X '\101'` in 100e1e1713cSmrg A) # ASCII based system 101e1e1713cSmrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 102e1e1713cSmrg SP2NL='tr \040 \012' 103e1e1713cSmrg NL2SP='tr \015\012 \040\040' 104e1e1713cSmrg ;; 105e1e1713cSmrg *) # EBCDIC based system 106e1e1713cSmrg SP2NL='tr \100 \n' 107e1e1713cSmrg NL2SP='tr \r\n \100\100' 108e1e1713cSmrg ;; 109e1e1713cSmrgesac 110e1e1713cSmrg 111e1e1713cSmrg# NLS nuisances. 1127a84e134Smrg# Only set LANG and LC_ALL to C if already set. 1137a84e134Smrg# These must not be set unconditionally because not all systems understand 1147a84e134Smrg# e.g. LANG=C (notably SCO). 115e1e1713cSmrg# We save the old values to restore during execute mode. 116e1e1713cSmrglt_env= 117ab902922Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 118ab902922Smrgdo 119ab902922Smrg eval "if test \"\${$lt_var+set}\" = set; then 120e1e1713cSmrg save_$lt_var=\$$lt_var 121e1e1713cSmrg lt_env=\"$lt_var=\$$lt_var \$lt_env\" 122e1e1713cSmrg $lt_var=C 123ab902922Smrg export $lt_var 124ab902922Smrg fi" 125ab902922Smrgdone 126ab902922Smrg 127e1e1713cSmrgif test -n "$lt_env"; then 128e1e1713cSmrg lt_env="env $lt_env" 129e1e1713cSmrgfi 1307a84e134Smrg 1317a84e134Smrg# Make sure IFS has a sensible default 1327a84e134Smrglt_nl=' 1337a84e134Smrg' 1347a84e134SmrgIFS=" $lt_nl" 1357a84e134Smrg 136e1e1713cSmrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 137e1e1713cSmrg $echo "$modename: not configured to build any kind of library" 1>&2 138e1e1713cSmrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 139e1e1713cSmrg exit $EXIT_FAILURE 140e1e1713cSmrgfi 141775e7de9Smrg 142e1e1713cSmrg# Global variables. 143e1e1713cSmrgmode=$default_mode 144e1e1713cSmrgnonopt= 145e1e1713cSmrgprev= 146e1e1713cSmrgprevopt= 147e1e1713cSmrgrun= 148e1e1713cSmrgshow="$echo" 149e1e1713cSmrgshow_help= 150e1e1713cSmrgexecute_dlfiles= 151e1e1713cSmrgduplicate_deps=no 152e1e1713cSmrgpreserve_args= 153e1e1713cSmrglo2o="s/\\.lo\$/.${objext}/" 154e1e1713cSmrgo2lo="s/\\.${objext}\$/.lo/" 155e1e1713cSmrgextracted_archives= 156e1e1713cSmrgextracted_serial=0 1577a84e134Smrg 158e1e1713cSmrg##################################### 159e1e1713cSmrg# Shell function definitions: 160e1e1713cSmrg# This seems to be the best place for them 1617a84e134Smrg 1627a84e134Smrg# func_mktempdir [string] 1637a84e134Smrg# Make a temporary directory that won't clash with other running 1647a84e134Smrg# libtool processes, and avoids race conditions if possible. If 1657a84e134Smrg# given, STRING is the basename for that directory. 1667a84e134Smrgfunc_mktempdir () 1677a84e134Smrg{ 1687a84e134Smrg my_template="${TMPDIR-/tmp}/${1-$progname}" 1697a84e134Smrg 170e1e1713cSmrg if test "$run" = ":"; then 1717a84e134Smrg # Return a directory name, but don't create it in dry-run mode 1727a84e134Smrg my_tmpdir="${my_template}-$$" 1737a84e134Smrg else 1747a84e134Smrg 1757a84e134Smrg # If mktemp works, use that first and foremost 1767a84e134Smrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 1777a84e134Smrg 1787a84e134Smrg if test ! -d "$my_tmpdir"; then 179e1e1713cSmrg # Failing that, at least try and use $RANDOM to avoid a race 180e1e1713cSmrg my_tmpdir="${my_template}-${RANDOM-0}$$" 1817a84e134Smrg 182e1e1713cSmrg save_mktempdir_umask=`umask` 183e1e1713cSmrg umask 0077 184e1e1713cSmrg $mkdir "$my_tmpdir" 185e1e1713cSmrg umask $save_mktempdir_umask 1867a84e134Smrg fi 1877a84e134Smrg 1887a84e134Smrg # If we're not in dry-run mode, bomb out on failure 189e1e1713cSmrg test -d "$my_tmpdir" || { 190e1e1713cSmrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 191e1e1713cSmrg exit $EXIT_FAILURE 192e1e1713cSmrg } 1937a84e134Smrg fi 1947a84e134Smrg 195e1e1713cSmrg $echo "X$my_tmpdir" | $Xsed 1967a84e134Smrg} 1977a84e134Smrg 1987a84e134Smrg 199e1e1713cSmrg# func_win32_libid arg 200e1e1713cSmrg# return the library type of file 'arg' 201e1e1713cSmrg# 202e1e1713cSmrg# Need a lot of goo to handle *both* DLLs and import libs 203e1e1713cSmrg# Has to be a shell function in order to 'eat' the argument 204e1e1713cSmrg# that is supplied when $file_magic_command is called. 205e1e1713cSmrgfunc_win32_libid () 2067a84e134Smrg{ 207e1e1713cSmrg win32_libid_type="unknown" 208e1e1713cSmrg win32_fileres=`file -L $1 2>/dev/null` 209e1e1713cSmrg case $win32_fileres in 210e1e1713cSmrg *ar\ archive\ import\ library*) # definitely import 211e1e1713cSmrg win32_libid_type="x86 archive import" 212e1e1713cSmrg ;; 213e1e1713cSmrg *ar\ archive*) # could be an import, or static 214e1e1713cSmrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 215e1e1713cSmrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 216e1e1713cSmrg win32_nmres=`eval $NM -f posix -A $1 | \ 217e1e1713cSmrg $SED -n -e '1,100{ 218e1e1713cSmrg / I /{ 219e1e1713cSmrg s,.*,import, 220e1e1713cSmrg p 221e1e1713cSmrg q 222e1e1713cSmrg } 223e1e1713cSmrg }'` 224e1e1713cSmrg case $win32_nmres in 225e1e1713cSmrg import*) win32_libid_type="x86 archive import";; 226e1e1713cSmrg *) win32_libid_type="x86 archive static";; 227e1e1713cSmrg esac 228e1e1713cSmrg fi 229e1e1713cSmrg ;; 230e1e1713cSmrg *DLL*) 231e1e1713cSmrg win32_libid_type="x86 DLL" 232e1e1713cSmrg ;; 233e1e1713cSmrg *executable*) # but shell scripts are "executable" too... 234e1e1713cSmrg case $win32_fileres in 235e1e1713cSmrg *MS\ Windows\ PE\ Intel*) 236e1e1713cSmrg win32_libid_type="x86 DLL" 237e1e1713cSmrg ;; 2387a84e134Smrg esac 239e1e1713cSmrg ;; 240e1e1713cSmrg esac 241e1e1713cSmrg $echo $win32_libid_type 2427a84e134Smrg} 2437a84e134Smrg 2447a84e134Smrg 245e1e1713cSmrg# func_infer_tag arg 246e1e1713cSmrg# Infer tagged configuration to use if any are available and 247e1e1713cSmrg# if one wasn't chosen via the "--tag" command line option. 248e1e1713cSmrg# Only attempt this if the compiler in the base compile 249e1e1713cSmrg# command doesn't match the default compiler. 250e1e1713cSmrg# arg is usually of the form 'gcc ...' 251e1e1713cSmrgfunc_infer_tag () 2527a84e134Smrg{ 253e1e1713cSmrg if test -n "$available_tags" && test -z "$tagname"; then 254e1e1713cSmrg CC_quoted= 255e1e1713cSmrg for arg in $CC; do 256e1e1713cSmrg case $arg in 257e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 258e1e1713cSmrg arg="\"$arg\"" 259e1e1713cSmrg ;; 260e1e1713cSmrg esac 261e1e1713cSmrg CC_quoted="$CC_quoted $arg" 262e1e1713cSmrg done 263e1e1713cSmrg case $@ in 264e1e1713cSmrg # Blanks in the command may have been stripped by the calling shell, 265e1e1713cSmrg # but not from the CC environment variable when configure was run. 266e1e1713cSmrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 267e1e1713cSmrg # Blanks at the start of $base_compile will cause this to fail 268e1e1713cSmrg # if we don't check for them as well. 2697a84e134Smrg *) 270e1e1713cSmrg for z in $available_tags; do 271e1e1713cSmrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 272e1e1713cSmrg # Evaluate the configuration. 273e1e1713cSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 274e1e1713cSmrg CC_quoted= 275e1e1713cSmrg for arg in $CC; do 276e1e1713cSmrg # Double-quote args containing other shell metacharacters. 277e1e1713cSmrg case $arg in 278e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 279e1e1713cSmrg arg="\"$arg\"" 280e1e1713cSmrg ;; 281e1e1713cSmrg esac 282e1e1713cSmrg CC_quoted="$CC_quoted $arg" 283e1e1713cSmrg done 284e1e1713cSmrg case "$@ " in 285e1e1713cSmrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 286e1e1713cSmrg # The compiler in the base compile command matches 287e1e1713cSmrg # the one in the tagged configuration. 288e1e1713cSmrg # Assume this is the tagged configuration we want. 289e1e1713cSmrg tagname=$z 290e1e1713cSmrg break 291e1e1713cSmrg ;; 292e1e1713cSmrg esac 293e1e1713cSmrg fi 294e1e1713cSmrg done 295e1e1713cSmrg # If $tagname still isn't set, then no tagged configuration 296e1e1713cSmrg # was found and let the user know that the "--tag" command 297e1e1713cSmrg # line option must be used. 298e1e1713cSmrg if test -z "$tagname"; then 299e1e1713cSmrg $echo "$modename: unable to infer tagged configuration" 300e1e1713cSmrg $echo "$modename: specify a tag with \`--tag'" 1>&2 301e1e1713cSmrg exit $EXIT_FAILURE 302e1e1713cSmrg# else 303e1e1713cSmrg# $echo "$modename: using $tagname tagged configuration" 304e1e1713cSmrg fi 305e1e1713cSmrg ;; 306e1e1713cSmrg esac 307e1e1713cSmrg fi 3087a84e134Smrg} 3097a84e134Smrg 3107a84e134Smrg 311e1e1713cSmrg# func_extract_an_archive dir oldlib 312e1e1713cSmrgfunc_extract_an_archive () 3137a84e134Smrg{ 314e1e1713cSmrg f_ex_an_ar_dir="$1"; shift 315e1e1713cSmrg f_ex_an_ar_oldlib="$1" 316775e7de9Smrg 317e1e1713cSmrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 318e1e1713cSmrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 319e1e1713cSmrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 320e1e1713cSmrg : 321e1e1713cSmrg else 322e1e1713cSmrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 323e1e1713cSmrg exit $EXIT_FAILURE 3247a84e134Smrg fi 3257a84e134Smrg} 3267a84e134Smrg 327e1e1713cSmrg# func_extract_archives gentop oldlib ... 328e1e1713cSmrgfunc_extract_archives () 3297a84e134Smrg{ 330e1e1713cSmrg my_gentop="$1"; shift 331e1e1713cSmrg my_oldlibs=${1+"$@"} 332e1e1713cSmrg my_oldobjs="" 333e1e1713cSmrg my_xlib="" 334e1e1713cSmrg my_xabs="" 335e1e1713cSmrg my_xdir="" 336e1e1713cSmrg my_status="" 337e1e1713cSmrg 338e1e1713cSmrg $show "${rm}r $my_gentop" 339e1e1713cSmrg $run ${rm}r "$my_gentop" 340e1e1713cSmrg $show "$mkdir $my_gentop" 341e1e1713cSmrg $run $mkdir "$my_gentop" 342e1e1713cSmrg my_status=$? 343e1e1713cSmrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 344e1e1713cSmrg exit $my_status 3457a84e134Smrg fi 3467a84e134Smrg 347e1e1713cSmrg for my_xlib in $my_oldlibs; do 348e1e1713cSmrg # Extract the objects. 349e1e1713cSmrg case $my_xlib in 350e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 351e1e1713cSmrg *) my_xabs=`pwd`"/$my_xlib" ;; 352e1e1713cSmrg esac 353e1e1713cSmrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 354e1e1713cSmrg my_xlib_u=$my_xlib 355e1e1713cSmrg while :; do 356e1e1713cSmrg case " $extracted_archives " in 357e1e1713cSmrg *" $my_xlib_u "*) 358e1e1713cSmrg extracted_serial=`expr $extracted_serial + 1` 359e1e1713cSmrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 360e1e1713cSmrg *) break ;; 361e1e1713cSmrg esac 362e1e1713cSmrg done 363e1e1713cSmrg extracted_archives="$extracted_archives $my_xlib_u" 364e1e1713cSmrg my_xdir="$my_gentop/$my_xlib_u" 365775e7de9Smrg 366e1e1713cSmrg $show "${rm}r $my_xdir" 367e1e1713cSmrg $run ${rm}r "$my_xdir" 368e1e1713cSmrg $show "$mkdir $my_xdir" 369e1e1713cSmrg $run $mkdir "$my_xdir" 370e1e1713cSmrg exit_status=$? 371e1e1713cSmrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 372e1e1713cSmrg exit $exit_status 373e1e1713cSmrg fi 374e1e1713cSmrg case $host in 375e1e1713cSmrg *-darwin*) 376e1e1713cSmrg $show "Extracting $my_xabs" 377e1e1713cSmrg # Do not bother doing anything if just a dry run 378e1e1713cSmrg if test -z "$run"; then 379e1e1713cSmrg darwin_orig_dir=`pwd` 380e1e1713cSmrg cd $my_xdir || exit $? 381e1e1713cSmrg darwin_archive=$my_xabs 382e1e1713cSmrg darwin_curdir=`pwd` 383e1e1713cSmrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 384e1e1713cSmrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 385e1e1713cSmrg if test -n "$darwin_arches"; then 386e1e1713cSmrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 387e1e1713cSmrg darwin_arch= 388e1e1713cSmrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 389e1e1713cSmrg for darwin_arch in $darwin_arches ; do 390e1e1713cSmrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 391e1e1713cSmrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 392e1e1713cSmrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 393e1e1713cSmrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 394e1e1713cSmrg cd "$darwin_curdir" 395e1e1713cSmrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 396e1e1713cSmrg done # $darwin_arches 397e1e1713cSmrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 398e1e1713cSmrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 399e1e1713cSmrg darwin_file= 400e1e1713cSmrg darwin_files= 401e1e1713cSmrg for darwin_file in $darwin_filelist; do 402e1e1713cSmrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 403e1e1713cSmrg lipo -create -output "$darwin_file" $darwin_files 404e1e1713cSmrg done # $darwin_filelist 405e1e1713cSmrg ${rm}r unfat-$$ 406e1e1713cSmrg cd "$darwin_orig_dir" 407e1e1713cSmrg else 408e1e1713cSmrg cd "$darwin_orig_dir" 409e1e1713cSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 410e1e1713cSmrg fi # $darwin_arches 411e1e1713cSmrg fi # $run 412e1e1713cSmrg ;; 413e1e1713cSmrg *) 414e1e1713cSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 415e1e1713cSmrg ;; 416e1e1713cSmrg esac 417e1e1713cSmrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 418e1e1713cSmrg done 419e1e1713cSmrg func_extract_archives_result="$my_oldobjs" 420775e7de9Smrg} 421e1e1713cSmrg# End of Shell function definitions 422e1e1713cSmrg##################################### 423775e7de9Smrg 424e1e1713cSmrg# Darwin sucks 425e1e1713cSmrgeval std_shrext=\"$shrext_cmds\" 426775e7de9Smrg 427e1e1713cSmrgdisable_libs=no 428775e7de9Smrg 429e1e1713cSmrg# Parse our command line options once, thoroughly. 430e1e1713cSmrgwhile test "$#" -gt 0 431e1e1713cSmrgdo 432e1e1713cSmrg arg="$1" 433775e7de9Smrg shift 4347a84e134Smrg 435e1e1713cSmrg case $arg in 436e1e1713cSmrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 437e1e1713cSmrg *) optarg= ;; 438e1e1713cSmrg esac 4397a84e134Smrg 440e1e1713cSmrg # If the previous option needs an argument, assign it. 441e1e1713cSmrg if test -n "$prev"; then 442e1e1713cSmrg case $prev in 443e1e1713cSmrg execute_dlfiles) 444e1e1713cSmrg execute_dlfiles="$execute_dlfiles $arg" 445e1e1713cSmrg ;; 446e1e1713cSmrg tag) 447e1e1713cSmrg tagname="$arg" 448e1e1713cSmrg preserve_args="${preserve_args}=$arg" 449e1e1713cSmrg 450e1e1713cSmrg # Check whether tagname contains only valid characters 451e1e1713cSmrg case $tagname in 452e1e1713cSmrg *[!-_A-Za-z0-9,/]*) 453e1e1713cSmrg $echo "$progname: invalid tag name: $tagname" 1>&2 454e1e1713cSmrg exit $EXIT_FAILURE 455e1e1713cSmrg ;; 456e1e1713cSmrg esac 4577a84e134Smrg 458e1e1713cSmrg case $tagname in 459e1e1713cSmrg CC) 460e1e1713cSmrg # Don't test for the "default" C tag, as we know, it's there, but 461e1e1713cSmrg # not specially marked. 462e1e1713cSmrg ;; 463e1e1713cSmrg *) 464e1e1713cSmrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 465e1e1713cSmrg taglist="$taglist $tagname" 466e1e1713cSmrg # Evaluate the configuration. 467e1e1713cSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 468e1e1713cSmrg else 469e1e1713cSmrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 470e1e1713cSmrg fi 471e1e1713cSmrg ;; 472e1e1713cSmrg esac 473e1e1713cSmrg ;; 474e1e1713cSmrg *) 475e1e1713cSmrg eval "$prev=\$arg" 476e1e1713cSmrg ;; 477e1e1713cSmrg esac 478775e7de9Smrg 479e1e1713cSmrg prev= 480e1e1713cSmrg prevopt= 481e1e1713cSmrg continue 482e1e1713cSmrg fi 4837a84e134Smrg 484e1e1713cSmrg # Have we seen a non-optional argument yet? 485e1e1713cSmrg case $arg in 486e1e1713cSmrg --help) 487e1e1713cSmrg show_help=yes 488e1e1713cSmrg ;; 489ab902922Smrg 490e1e1713cSmrg --version) 491e1e1713cSmrg echo "\ 492e1e1713cSmrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 493775e7de9Smrg 494e1e1713cSmrgCopyright (C) 2008 Free Software Foundation, Inc. 495e1e1713cSmrgThis is free software; see the source for copying conditions. There is NO 496e1e1713cSmrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 497e1e1713cSmrg exit $? 498e1e1713cSmrg ;; 4997a84e134Smrg 500e1e1713cSmrg --config) 501e1e1713cSmrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 5027a84e134Smrg # Now print the configurations for the tags. 5037a84e134Smrg for tagname in $taglist; do 504e1e1713cSmrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 5057a84e134Smrg done 506775e7de9Smrg exit $? 507e1e1713cSmrg ;; 5087a84e134Smrg 509e1e1713cSmrg --debug) 510e1e1713cSmrg $echo "$progname: enabling shell trace mode" 511e1e1713cSmrg set -x 512e1e1713cSmrg preserve_args="$preserve_args $arg" 513e1e1713cSmrg ;; 514e1e1713cSmrg 515e1e1713cSmrg --dry-run | -n) 516e1e1713cSmrg run=: 517e1e1713cSmrg ;; 518e1e1713cSmrg 519e1e1713cSmrg --features) 520e1e1713cSmrg $echo "host: $host" 5217a84e134Smrg if test "$build_libtool_libs" = yes; then 522e1e1713cSmrg $echo "enable shared libraries" 5237a84e134Smrg else 524e1e1713cSmrg $echo "disable shared libraries" 5257a84e134Smrg fi 5267a84e134Smrg if test "$build_old_libs" = yes; then 527e1e1713cSmrg $echo "enable static libraries" 5287a84e134Smrg else 529e1e1713cSmrg $echo "disable static libraries" 5307a84e134Smrg fi 5317a84e134Smrg exit $? 532e1e1713cSmrg ;; 5337a84e134Smrg 534e1e1713cSmrg --finish) mode="finish" ;; 5357a84e134Smrg 536e1e1713cSmrg --mode) prevopt="--mode" prev=mode ;; 537e1e1713cSmrg --mode=*) mode="$optarg" ;; 538775e7de9Smrg 539e1e1713cSmrg --preserve-dup-deps) duplicate_deps="yes" ;; 5407a84e134Smrg 541e1e1713cSmrg --quiet | --silent) 542e1e1713cSmrg show=: 543e1e1713cSmrg preserve_args="$preserve_args $arg" 5447a84e134Smrg ;; 545e1e1713cSmrg 546e1e1713cSmrg --tag) 547e1e1713cSmrg prevopt="--tag" 548e1e1713cSmrg prev=tag 549e1e1713cSmrg preserve_args="$preserve_args --tag" 5507a84e134Smrg ;; 551e1e1713cSmrg --tag=*) 552e1e1713cSmrg set tag "$optarg" ${1+"$@"} 553e1e1713cSmrg shift 554e1e1713cSmrg prev=tag 555e1e1713cSmrg preserve_args="$preserve_args --tag" 5567a84e134Smrg ;; 557e1e1713cSmrg 558e1e1713cSmrg -dlopen) 559e1e1713cSmrg prevopt="-dlopen" 560e1e1713cSmrg prev=execute_dlfiles 561775e7de9Smrg ;; 562e1e1713cSmrg 563e1e1713cSmrg -*) 564e1e1713cSmrg $echo "$modename: unrecognized option \`$arg'" 1>&2 565e1e1713cSmrg $echo "$help" 1>&2 566e1e1713cSmrg exit $EXIT_FAILURE 567775e7de9Smrg ;; 568e1e1713cSmrg 569e1e1713cSmrg *) 570e1e1713cSmrg nonopt="$arg" 571e1e1713cSmrg break 5727a84e134Smrg ;; 5737a84e134Smrg esac 574e1e1713cSmrgdone 5757a84e134Smrg 576e1e1713cSmrgif test -n "$prevopt"; then 577e1e1713cSmrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 578e1e1713cSmrg $echo "$help" 1>&2 579e1e1713cSmrg exit $EXIT_FAILURE 580e1e1713cSmrgfi 581775e7de9Smrg 582e1e1713cSmrgcase $disable_libs in 583e1e1713cSmrgno) 584e1e1713cSmrg ;; 585e1e1713cSmrgshared) 586e1e1713cSmrg build_libtool_libs=no 587e1e1713cSmrg build_old_libs=yes 588e1e1713cSmrg ;; 589e1e1713cSmrgstatic) 590e1e1713cSmrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 591e1e1713cSmrg ;; 592e1e1713cSmrgesac 593775e7de9Smrg 594e1e1713cSmrg# If this variable is set in any of the actions, the command in it 595e1e1713cSmrg# will be execed at the end. This prevents here-documents from being 596e1e1713cSmrg# left over by shells. 597e1e1713cSmrgexec_cmd= 598775e7de9Smrg 599e1e1713cSmrgif test -z "$show_help"; then 600775e7de9Smrg 601e1e1713cSmrg # Infer the operation mode. 602e1e1713cSmrg if test -z "$mode"; then 603e1e1713cSmrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 604e1e1713cSmrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 605e1e1713cSmrg case $nonopt in 606e1e1713cSmrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 607e1e1713cSmrg mode=link 608e1e1713cSmrg for arg 609e1e1713cSmrg do 610e1e1713cSmrg case $arg in 611e1e1713cSmrg -c) 612e1e1713cSmrg mode=compile 613e1e1713cSmrg break 614e1e1713cSmrg ;; 615e1e1713cSmrg esac 616e1e1713cSmrg done 6177a84e134Smrg ;; 618e1e1713cSmrg *db | *dbx | *strace | *truss) 619e1e1713cSmrg mode=execute 620775e7de9Smrg ;; 621e1e1713cSmrg *install*|cp|mv) 622e1e1713cSmrg mode=install 623e1e1713cSmrg ;; 624e1e1713cSmrg *rm) 625e1e1713cSmrg mode=uninstall 626e1e1713cSmrg ;; 627e1e1713cSmrg *) 628e1e1713cSmrg # If we have no mode, but dlfiles were specified, then do execute mode. 629e1e1713cSmrg test -n "$execute_dlfiles" && mode=execute 630775e7de9Smrg 631e1e1713cSmrg # Just use the default operation mode. 632e1e1713cSmrg if test -z "$mode"; then 633e1e1713cSmrg if test -n "$nonopt"; then 634e1e1713cSmrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 635e1e1713cSmrg else 636e1e1713cSmrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 637e1e1713cSmrg fi 6387a84e134Smrg fi 639e1e1713cSmrg ;; 640e1e1713cSmrg esac 641775e7de9Smrg fi 642775e7de9Smrg 6437a84e134Smrg # Only execute mode is allowed to have -dlopen flags. 6447a84e134Smrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 645e1e1713cSmrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 646e1e1713cSmrg $echo "$help" 1>&2 6477a84e134Smrg exit $EXIT_FAILURE 6487a84e134Smrg fi 6497a84e134Smrg 6507a84e134Smrg # Change the help message to a mode-specific one. 6517a84e134Smrg generic_help="$help" 652e1e1713cSmrg help="Try \`$modename --help --mode=$mode' for more information." 6537a84e134Smrg 654e1e1713cSmrg # These modes are in order of execution frequency so that they run quickly. 655e1e1713cSmrg case $mode in 656e1e1713cSmrg # libtool compile mode 657e1e1713cSmrg compile) 658e1e1713cSmrg modename="$modename: compile" 659e1e1713cSmrg # Get the compilation command and the source file. 660e1e1713cSmrg base_compile= 661e1e1713cSmrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 662e1e1713cSmrg suppress_opt=yes 663e1e1713cSmrg suppress_output= 664e1e1713cSmrg arg_mode=normal 665e1e1713cSmrg libobj= 666e1e1713cSmrg later= 6677a84e134Smrg 668e1e1713cSmrg for arg 669e1e1713cSmrg do 670e1e1713cSmrg case $arg_mode in 671e1e1713cSmrg arg ) 672e1e1713cSmrg # do not "continue". Instead, add this to base_compile 673e1e1713cSmrg lastarg="$arg" 674e1e1713cSmrg arg_mode=normal 675e1e1713cSmrg ;; 6767a84e134Smrg 677e1e1713cSmrg target ) 678e1e1713cSmrg libobj="$arg" 679e1e1713cSmrg arg_mode=normal 680e1e1713cSmrg continue 681e1e1713cSmrg ;; 6827a84e134Smrg 683e1e1713cSmrg normal ) 684e1e1713cSmrg # Accept any command-line options. 685e1e1713cSmrg case $arg in 686e1e1713cSmrg -o) 687e1e1713cSmrg if test -n "$libobj" ; then 688e1e1713cSmrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 689e1e1713cSmrg exit $EXIT_FAILURE 690e1e1713cSmrg fi 691e1e1713cSmrg arg_mode=target 692e1e1713cSmrg continue 693e1e1713cSmrg ;; 6947a84e134Smrg 695e1e1713cSmrg -static | -prefer-pic | -prefer-non-pic) 696e1e1713cSmrg later="$later $arg" 697e1e1713cSmrg continue 698e1e1713cSmrg ;; 6997a84e134Smrg 7007a84e134Smrg -no-suppress) 7017a84e134Smrg suppress_opt=no 7027a84e134Smrg continue 7037a84e134Smrg ;; 7047a84e134Smrg 7057a84e134Smrg -Xcompiler) 7067a84e134Smrg arg_mode=arg # the next one goes into the "base_compile" arg list 7077a84e134Smrg continue # The current "srcfile" will either be retained or 7087a84e134Smrg ;; # replaced later. I would guess that would be a bug. 7097a84e134Smrg 7107a84e134Smrg -Wc,*) 711e1e1713cSmrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 7127a84e134Smrg lastarg= 7137a84e134Smrg save_ifs="$IFS"; IFS=',' 714e1e1713cSmrg for arg in $args; do 7157a84e134Smrg IFS="$save_ifs" 716e1e1713cSmrg 717e1e1713cSmrg # Double-quote args containing other shell metacharacters. 718e1e1713cSmrg # Many Bourne shells cannot handle close brackets correctly 719e1e1713cSmrg # in scan sets, so we specify it separately. 720e1e1713cSmrg case $arg in 721e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 722e1e1713cSmrg arg="\"$arg\"" 723e1e1713cSmrg ;; 724e1e1713cSmrg esac 725e1e1713cSmrg lastarg="$lastarg $arg" 7267a84e134Smrg done 7277a84e134Smrg IFS="$save_ifs" 728e1e1713cSmrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 7297a84e134Smrg 7307a84e134Smrg # Add the arguments to base_compile. 7317a84e134Smrg base_compile="$base_compile $lastarg" 7327a84e134Smrg continue 7337a84e134Smrg ;; 7347a84e134Smrg 735e1e1713cSmrg * ) 7367a84e134Smrg # Accept the current argument as the source file. 7377a84e134Smrg # The previous "srcfile" becomes the current argument. 7387a84e134Smrg # 7397a84e134Smrg lastarg="$srcfile" 7407a84e134Smrg srcfile="$arg" 7417a84e134Smrg ;; 7427a84e134Smrg esac # case $arg 7437a84e134Smrg ;; 7447a84e134Smrg esac # case $arg_mode 7457a84e134Smrg 7467a84e134Smrg # Aesthetically quote the previous argument. 747e1e1713cSmrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 748e1e1713cSmrg 749e1e1713cSmrg case $lastarg in 750e1e1713cSmrg # Double-quote args containing other shell metacharacters. 751e1e1713cSmrg # Many Bourne shells cannot handle close brackets correctly 752e1e1713cSmrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 753e1e1713cSmrg # in scan sets (worked around with variable expansion), 754e1e1713cSmrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 755e1e1713cSmrg # at all, so we specify them separately. 756e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 757e1e1713cSmrg lastarg="\"$lastarg\"" 758e1e1713cSmrg ;; 759e1e1713cSmrg esac 760e1e1713cSmrg 761e1e1713cSmrg base_compile="$base_compile $lastarg" 7627a84e134Smrg done # for arg 7637a84e134Smrg 7647a84e134Smrg case $arg_mode in 7657a84e134Smrg arg) 766e1e1713cSmrg $echo "$modename: you must specify an argument for -Xcompile" 767e1e1713cSmrg exit $EXIT_FAILURE 7687a84e134Smrg ;; 7697a84e134Smrg target) 770e1e1713cSmrg $echo "$modename: you must specify a target with \`-o'" 1>&2 771e1e1713cSmrg exit $EXIT_FAILURE 7727a84e134Smrg ;; 7737a84e134Smrg *) 7747a84e134Smrg # Get the name of the library object. 775e1e1713cSmrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 7767a84e134Smrg ;; 7777a84e134Smrg esac 7787a84e134Smrg 7797a84e134Smrg # Recognize several different file suffixes. 7807a84e134Smrg # If the user specifies -o file.o, it is replaced with file.lo 781e1e1713cSmrg xform='[cCFSifmso]' 7827a84e134Smrg case $libobj in 783e1e1713cSmrg *.ada) xform=ada ;; 784e1e1713cSmrg *.adb) xform=adb ;; 785e1e1713cSmrg *.ads) xform=ads ;; 786e1e1713cSmrg *.asm) xform=asm ;; 787e1e1713cSmrg *.c++) xform=c++ ;; 788e1e1713cSmrg *.cc) xform=cc ;; 789e1e1713cSmrg *.ii) xform=ii ;; 790e1e1713cSmrg *.class) xform=class ;; 791e1e1713cSmrg *.cpp) xform=cpp ;; 792e1e1713cSmrg *.cxx) xform=cxx ;; 793e1e1713cSmrg *.[fF][09]?) xform=[fF][09]. ;; 794e1e1713cSmrg *.for) xform=for ;; 795e1e1713cSmrg *.java) xform=java ;; 796e1e1713cSmrg *.obj) xform=obj ;; 797e1e1713cSmrg *.sx) xform=sx ;; 7987a84e134Smrg esac 7997a84e134Smrg 800e1e1713cSmrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 801e1e1713cSmrg 8027a84e134Smrg case $libobj in 803e1e1713cSmrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 8047a84e134Smrg *) 805e1e1713cSmrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 806e1e1713cSmrg exit $EXIT_FAILURE 8077a84e134Smrg ;; 8087a84e134Smrg esac 8097a84e134Smrg 8107a84e134Smrg func_infer_tag $base_compile 8117a84e134Smrg 8127a84e134Smrg for arg in $later; do 8137a84e134Smrg case $arg in 8147a84e134Smrg -static) 8157a84e134Smrg build_old_libs=yes 8167a84e134Smrg continue 8177a84e134Smrg ;; 8187a84e134Smrg 8197a84e134Smrg -prefer-pic) 8207a84e134Smrg pic_mode=yes 8217a84e134Smrg continue 8227a84e134Smrg ;; 8237a84e134Smrg 8247a84e134Smrg -prefer-non-pic) 8257a84e134Smrg pic_mode=no 8267a84e134Smrg continue 8277a84e134Smrg ;; 8287a84e134Smrg esac 8297a84e134Smrg done 8307a84e134Smrg 831e1e1713cSmrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 832e1e1713cSmrg case $qlibobj in 833e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 834e1e1713cSmrg qlibobj="\"$qlibobj\"" ;; 835e1e1713cSmrg esac 836e1e1713cSmrg test "X$libobj" != "X$qlibobj" \ 837e1e1713cSmrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 838e1e1713cSmrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 839e1e1713cSmrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 840e1e1713cSmrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 841e1e1713cSmrg if test "X$xdir" = "X$obj"; then 842e1e1713cSmrg xdir= 843e1e1713cSmrg else 844e1e1713cSmrg xdir=$xdir/ 845e1e1713cSmrg fi 8467a84e134Smrg lobj=${xdir}$objdir/$objname 8477a84e134Smrg 848e1e1713cSmrg if test -z "$base_compile"; then 849e1e1713cSmrg $echo "$modename: you must specify a compilation command" 1>&2 850e1e1713cSmrg $echo "$help" 1>&2 851e1e1713cSmrg exit $EXIT_FAILURE 852e1e1713cSmrg fi 8537a84e134Smrg 8547a84e134Smrg # Delete any leftover library objects. 8557a84e134Smrg if test "$build_old_libs" = yes; then 8567a84e134Smrg removelist="$obj $lobj $libobj ${libobj}T" 8577a84e134Smrg else 8587a84e134Smrg removelist="$lobj $libobj ${libobj}T" 8597a84e134Smrg fi 8607a84e134Smrg 861e1e1713cSmrg $run $rm $removelist 862e1e1713cSmrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 863e1e1713cSmrg 8647a84e134Smrg # On Cygwin there's no "real" PIC flag so we must build both object types 8657a84e134Smrg case $host_os in 866e1e1713cSmrg cygwin* | mingw* | pw32* | os2*) 8677a84e134Smrg pic_mode=default 8687a84e134Smrg ;; 8697a84e134Smrg esac 8707a84e134Smrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 8717a84e134Smrg # non-PIC code in shared libraries is not supported 8727a84e134Smrg pic_mode=default 8737a84e134Smrg fi 8747a84e134Smrg 8757a84e134Smrg # Calculate the filename of the output object if compiler does 8767a84e134Smrg # not support -o with -c 8777a84e134Smrg if test "$compiler_c_o" = no; then 878e1e1713cSmrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 8797a84e134Smrg lockfile="$output_obj.lock" 880e1e1713cSmrg removelist="$removelist $output_obj $lockfile" 881e1e1713cSmrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 8827a84e134Smrg else 8837a84e134Smrg output_obj= 8847a84e134Smrg need_locks=no 8857a84e134Smrg lockfile= 8867a84e134Smrg fi 8877a84e134Smrg 8887a84e134Smrg # Lock this critical section if it is needed 8897a84e134Smrg # We use this script file to make the link, it avoids creating a new file 8907a84e134Smrg if test "$need_locks" = yes; then 891e1e1713cSmrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 892e1e1713cSmrg $show "Waiting for $lockfile to be removed" 8937a84e134Smrg sleep 2 8947a84e134Smrg done 8957a84e134Smrg elif test "$need_locks" = warn; then 8967a84e134Smrg if test -f "$lockfile"; then 897e1e1713cSmrg $echo "\ 8987a84e134Smrg*** ERROR, $lockfile exists and contains: 8997a84e134Smrg`cat $lockfile 2>/dev/null` 9007a84e134Smrg 9017a84e134SmrgThis indicates that another process is trying to use the same 9027a84e134Smrgtemporary object file, and libtool could not work around it because 9037a84e134Smrgyour compiler does not support \`-c' and \`-o' together. If you 9047a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better 9057a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better 9067a84e134Smrgcompiler." 9077a84e134Smrg 908e1e1713cSmrg $run $rm $removelist 9097a84e134Smrg exit $EXIT_FAILURE 9107a84e134Smrg fi 911e1e1713cSmrg $echo "$srcfile" > "$lockfile" 9127a84e134Smrg fi 9137a84e134Smrg 9147a84e134Smrg if test -n "$fix_srcfile_path"; then 9157a84e134Smrg eval srcfile=\"$fix_srcfile_path\" 9167a84e134Smrg fi 917e1e1713cSmrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 918e1e1713cSmrg case $qsrcfile in 919e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 920e1e1713cSmrg qsrcfile="\"$qsrcfile\"" ;; 921e1e1713cSmrg esac 922e1e1713cSmrg 923e1e1713cSmrg $run $rm "$libobj" "${libobj}T" 924e1e1713cSmrg 925e1e1713cSmrg # Create a libtool object file (analogous to a ".la" file), 926e1e1713cSmrg # but don't create it if we're doing a dry run. 927e1e1713cSmrg test -z "$run" && cat > ${libobj}T <<EOF 928e1e1713cSmrg# $libobj - a libtool object file 929e1e1713cSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 930e1e1713cSmrg# 931e1e1713cSmrg# Please DO NOT delete this file! 932e1e1713cSmrg# It is necessary for linking the library. 933e1e1713cSmrg 934e1e1713cSmrg# Name of the PIC object. 935e1e1713cSmrgEOF 9367a84e134Smrg 9377a84e134Smrg # Only build a PIC object if we are building libtool libraries. 9387a84e134Smrg if test "$build_libtool_libs" = yes; then 9397a84e134Smrg # Without this assignment, base_compile gets emptied. 9407a84e134Smrg fbsd_hideous_sh_bug=$base_compile 9417a84e134Smrg 9427a84e134Smrg if test "$pic_mode" != no; then 9437a84e134Smrg command="$base_compile $qsrcfile $pic_flag" 9447a84e134Smrg else 9457a84e134Smrg # Don't build PIC code 9467a84e134Smrg command="$base_compile $qsrcfile" 9477a84e134Smrg fi 9487a84e134Smrg 949e1e1713cSmrg if test ! -d "${xdir}$objdir"; then 950e1e1713cSmrg $show "$mkdir ${xdir}$objdir" 951e1e1713cSmrg $run $mkdir ${xdir}$objdir 952e1e1713cSmrg exit_status=$? 953e1e1713cSmrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 954e1e1713cSmrg exit $exit_status 955e1e1713cSmrg fi 956e1e1713cSmrg fi 9577a84e134Smrg 9587a84e134Smrg if test -z "$output_obj"; then 9597a84e134Smrg # Place PIC objects in $objdir 9607a84e134Smrg command="$command -o $lobj" 9617a84e134Smrg fi 9627a84e134Smrg 963e1e1713cSmrg $run $rm "$lobj" "$output_obj" 964e1e1713cSmrg 965e1e1713cSmrg $show "$command" 966e1e1713cSmrg if $run eval $lt_env "$command"; then : 967e1e1713cSmrg else 968e1e1713cSmrg test -n "$output_obj" && $run $rm $removelist 969e1e1713cSmrg exit $EXIT_FAILURE 970e1e1713cSmrg fi 9717a84e134Smrg 9727a84e134Smrg if test "$need_locks" = warn && 9737a84e134Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 974e1e1713cSmrg $echo "\ 9757a84e134Smrg*** ERROR, $lockfile contains: 9767a84e134Smrg`cat $lockfile 2>/dev/null` 9777a84e134Smrg 9787a84e134Smrgbut it should contain: 9797a84e134Smrg$srcfile 9807a84e134Smrg 9817a84e134SmrgThis indicates that another process is trying to use the same 9827a84e134Smrgtemporary object file, and libtool could not work around it because 9837a84e134Smrgyour compiler does not support \`-c' and \`-o' together. If you 9847a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better 9857a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better 9867a84e134Smrgcompiler." 9877a84e134Smrg 988e1e1713cSmrg $run $rm $removelist 9897a84e134Smrg exit $EXIT_FAILURE 9907a84e134Smrg fi 9917a84e134Smrg 9927a84e134Smrg # Just move the object if needed, then go on to compile the next one 9937a84e134Smrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 994e1e1713cSmrg $show "$mv $output_obj $lobj" 995e1e1713cSmrg if $run $mv $output_obj $lobj; then : 996e1e1713cSmrg else 997e1e1713cSmrg error=$? 998e1e1713cSmrg $run $rm $removelist 999e1e1713cSmrg exit $error 1000e1e1713cSmrg fi 10017a84e134Smrg fi 10027a84e134Smrg 1003e1e1713cSmrg # Append the name of the PIC object to the libtool object file. 1004e1e1713cSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1005e1e1713cSmrgpic_object='$objdir/$objname' 1006e1e1713cSmrg 1007e1e1713cSmrgEOF 1008e1e1713cSmrg 10097a84e134Smrg # Allow error messages only from the first compilation. 10107a84e134Smrg if test "$suppress_opt" = yes; then 1011e1e1713cSmrg suppress_output=' >/dev/null 2>&1' 10127a84e134Smrg fi 1013e1e1713cSmrg else 1014e1e1713cSmrg # No PIC object so indicate it doesn't exist in the libtool 1015e1e1713cSmrg # object file. 1016e1e1713cSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1017e1e1713cSmrgpic_object=none 1018e1e1713cSmrg 1019e1e1713cSmrgEOF 10207a84e134Smrg fi 10217a84e134Smrg 10227a84e134Smrg # Only build a position-dependent object if we build old libraries. 10237a84e134Smrg if test "$build_old_libs" = yes; then 10247a84e134Smrg if test "$pic_mode" != yes; then 10257a84e134Smrg # Don't build PIC code 1026e1e1713cSmrg command="$base_compile $qsrcfile" 10277a84e134Smrg else 10287a84e134Smrg command="$base_compile $qsrcfile $pic_flag" 10297a84e134Smrg fi 10307a84e134Smrg if test "$compiler_c_o" = yes; then 10317a84e134Smrg command="$command -o $obj" 10327a84e134Smrg fi 10337a84e134Smrg 10347a84e134Smrg # Suppress compiler output if we already did a PIC compilation. 10357a84e134Smrg command="$command$suppress_output" 1036e1e1713cSmrg $run $rm "$obj" "$output_obj" 1037e1e1713cSmrg $show "$command" 1038e1e1713cSmrg if $run eval $lt_env "$command"; then : 1039e1e1713cSmrg else 1040e1e1713cSmrg $run $rm $removelist 1041e1e1713cSmrg exit $EXIT_FAILURE 1042e1e1713cSmrg fi 10437a84e134Smrg 10447a84e134Smrg if test "$need_locks" = warn && 10457a84e134Smrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1046e1e1713cSmrg $echo "\ 10477a84e134Smrg*** ERROR, $lockfile contains: 10487a84e134Smrg`cat $lockfile 2>/dev/null` 10497a84e134Smrg 10507a84e134Smrgbut it should contain: 10517a84e134Smrg$srcfile 10527a84e134Smrg 10537a84e134SmrgThis indicates that another process is trying to use the same 10547a84e134Smrgtemporary object file, and libtool could not work around it because 10557a84e134Smrgyour compiler does not support \`-c' and \`-o' together. If you 10567a84e134Smrgrepeat this compilation, it may succeed, by chance, but you had better 10577a84e134Smrgavoid parallel builds (make -j) in this platform, or get a better 10587a84e134Smrgcompiler." 10597a84e134Smrg 1060e1e1713cSmrg $run $rm $removelist 10617a84e134Smrg exit $EXIT_FAILURE 10627a84e134Smrg fi 10637a84e134Smrg 10647a84e134Smrg # Just move the object if needed 10657a84e134Smrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1066e1e1713cSmrg $show "$mv $output_obj $obj" 1067e1e1713cSmrg if $run $mv $output_obj $obj; then : 1068e1e1713cSmrg else 1069e1e1713cSmrg error=$? 1070e1e1713cSmrg $run $rm $removelist 1071e1e1713cSmrg exit $error 1072e1e1713cSmrg fi 10737a84e134Smrg fi 1074e1e1713cSmrg 1075e1e1713cSmrg # Append the name of the non-PIC object the libtool object file. 1076e1e1713cSmrg # Only append if the libtool object file exists. 1077e1e1713cSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1078e1e1713cSmrg# Name of the non-PIC object. 1079e1e1713cSmrgnon_pic_object='$objname' 1080e1e1713cSmrg 1081e1e1713cSmrgEOF 1082e1e1713cSmrg else 1083e1e1713cSmrg # Append the name of the non-PIC object the libtool object file. 1084e1e1713cSmrg # Only append if the libtool object file exists. 1085e1e1713cSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1086e1e1713cSmrg# Name of the non-PIC object. 1087e1e1713cSmrgnon_pic_object=none 1088e1e1713cSmrg 1089e1e1713cSmrgEOF 10907a84e134Smrg fi 10917a84e134Smrg 1092e1e1713cSmrg $run $mv "${libobj}T" "${libobj}" 10937a84e134Smrg 1094e1e1713cSmrg # Unlock the critical section if it was locked 1095e1e1713cSmrg if test "$need_locks" != no; then 1096e1e1713cSmrg $run $rm "$lockfile" 1097e1e1713cSmrg fi 10987a84e134Smrg 10997a84e134Smrg exit $EXIT_SUCCESS 1100e1e1713cSmrg ;; 11017a84e134Smrg 1102e1e1713cSmrg # libtool link mode 1103e1e1713cSmrg link | relink) 1104e1e1713cSmrg modename="$modename: link" 1105e1e1713cSmrg case $host in 1106e1e1713cSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1107e1e1713cSmrg # It is impossible to link a dll without this setting, and 1108e1e1713cSmrg # we shouldn't force the makefile maintainer to figure out 1109e1e1713cSmrg # which system we are compiling for in order to pass an extra 1110e1e1713cSmrg # flag for every libtool invocation. 1111e1e1713cSmrg # allow_undefined=no 11127a84e134Smrg 1113e1e1713cSmrg # FIXME: Unfortunately, there are problems with the above when trying 1114e1e1713cSmrg # to make a dll which has undefined symbols, in which case not 1115e1e1713cSmrg # even a static library is built. For now, we need to specify 1116e1e1713cSmrg # -no-undefined on the libtool link line when we can be certain 1117e1e1713cSmrg # that all symbols are satisfied, otherwise we get a static library. 1118e1e1713cSmrg allow_undefined=yes 1119e1e1713cSmrg ;; 1120e1e1713cSmrg *) 1121e1e1713cSmrg allow_undefined=yes 1122e1e1713cSmrg ;; 1123e1e1713cSmrg esac 1124e1e1713cSmrg libtool_args="$nonopt" 1125e1e1713cSmrg base_compile="$nonopt $@" 1126e1e1713cSmrg compile_command="$nonopt" 1127e1e1713cSmrg finalize_command="$nonopt" 11287a84e134Smrg 1129e1e1713cSmrg compile_rpath= 1130e1e1713cSmrg finalize_rpath= 1131e1e1713cSmrg compile_shlibpath= 1132e1e1713cSmrg finalize_shlibpath= 1133e1e1713cSmrg convenience= 1134e1e1713cSmrg old_convenience= 1135e1e1713cSmrg deplibs= 1136e1e1713cSmrg old_deplibs= 1137e1e1713cSmrg compiler_flags= 1138e1e1713cSmrg linker_flags= 1139e1e1713cSmrg dllsearchpath= 1140e1e1713cSmrg lib_search_path=`pwd` 1141e1e1713cSmrg inst_prefix_dir= 11427a84e134Smrg 1143e1e1713cSmrg avoid_version=no 1144e1e1713cSmrg dlfiles= 1145e1e1713cSmrg dlprefiles= 1146e1e1713cSmrg dlself=no 1147e1e1713cSmrg export_dynamic=no 1148e1e1713cSmrg export_symbols= 1149e1e1713cSmrg export_symbols_regex= 1150e1e1713cSmrg generated= 1151e1e1713cSmrg libobjs= 1152e1e1713cSmrg ltlibs= 1153e1e1713cSmrg module=no 1154e1e1713cSmrg no_install=no 1155e1e1713cSmrg objs= 1156e1e1713cSmrg non_pic_objects= 1157e1e1713cSmrg notinst_path= # paths that contain not-installed libtool libraries 1158e1e1713cSmrg precious_files_regex= 1159e1e1713cSmrg prefer_static_libs=no 1160e1e1713cSmrg preload=no 1161e1e1713cSmrg prev= 1162e1e1713cSmrg prevarg= 1163e1e1713cSmrg release= 1164e1e1713cSmrg rpath= 1165e1e1713cSmrg xrpath= 1166e1e1713cSmrg perm_rpath= 1167e1e1713cSmrg temp_rpath= 1168e1e1713cSmrg thread_safe=no 1169e1e1713cSmrg vinfo= 1170e1e1713cSmrg vinfo_number=no 1171e1e1713cSmrg single_module="${wl}-single_module" 11727a84e134Smrg 1173e1e1713cSmrg func_infer_tag $base_compile 11747a84e134Smrg 1175e1e1713cSmrg # We need to know -static, to get the right output filenames. 1176e1e1713cSmrg for arg 1177e1e1713cSmrg do 1178e1e1713cSmrg case $arg in 1179e1e1713cSmrg -all-static | -static | -static-libtool-libs) 1180e1e1713cSmrg case $arg in 1181e1e1713cSmrg -all-static) 1182e1e1713cSmrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 1183e1e1713cSmrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 1184e1e1713cSmrg fi 1185e1e1713cSmrg if test -n "$link_static_flag"; then 1186e1e1713cSmrg dlopen_self=$dlopen_self_static 1187e1e1713cSmrg fi 1188e1e1713cSmrg prefer_static_libs=yes 1189e1e1713cSmrg ;; 1190e1e1713cSmrg -static) 1191e1e1713cSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1192e1e1713cSmrg dlopen_self=$dlopen_self_static 1193e1e1713cSmrg fi 1194e1e1713cSmrg prefer_static_libs=built 1195e1e1713cSmrg ;; 1196e1e1713cSmrg -static-libtool-libs) 1197e1e1713cSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1198e1e1713cSmrg dlopen_self=$dlopen_self_static 1199e1e1713cSmrg fi 1200e1e1713cSmrg prefer_static_libs=yes 1201e1e1713cSmrg ;; 1202e1e1713cSmrg esac 1203e1e1713cSmrg build_libtool_libs=no 1204e1e1713cSmrg build_old_libs=yes 1205e1e1713cSmrg break 1206e1e1713cSmrg ;; 1207e1e1713cSmrg esac 1208e1e1713cSmrg done 12097a84e134Smrg 1210e1e1713cSmrg # See if our shared archives depend on static archives. 1211e1e1713cSmrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 12127a84e134Smrg 1213e1e1713cSmrg # Go through the arguments, transforming them on the way. 1214e1e1713cSmrg while test "$#" -gt 0; do 1215e1e1713cSmrg arg="$1" 1216e1e1713cSmrg shift 1217e1e1713cSmrg case $arg in 1218e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1219e1e1713cSmrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 1220e1e1713cSmrg ;; 1221e1e1713cSmrg *) qarg=$arg ;; 1222e1e1713cSmrg esac 1223e1e1713cSmrg libtool_args="$libtool_args $qarg" 12247a84e134Smrg 1225e1e1713cSmrg # If the previous option needs an argument, assign it. 1226e1e1713cSmrg if test -n "$prev"; then 1227e1e1713cSmrg case $prev in 1228e1e1713cSmrg output) 1229e1e1713cSmrg compile_command="$compile_command @OUTPUT@" 1230e1e1713cSmrg finalize_command="$finalize_command @OUTPUT@" 1231e1e1713cSmrg ;; 1232e1e1713cSmrg esac 12337a84e134Smrg 1234e1e1713cSmrg case $prev in 1235e1e1713cSmrg dlfiles|dlprefiles) 1236e1e1713cSmrg if test "$preload" = no; then 1237e1e1713cSmrg # Add the symbol object into the linking commands. 1238e1e1713cSmrg compile_command="$compile_command @SYMFILE@" 1239e1e1713cSmrg finalize_command="$finalize_command @SYMFILE@" 1240e1e1713cSmrg preload=yes 1241e1e1713cSmrg fi 1242e1e1713cSmrg case $arg in 1243e1e1713cSmrg *.la | *.lo) ;; # We handle these cases below. 1244e1e1713cSmrg force) 1245e1e1713cSmrg if test "$dlself" = no; then 1246e1e1713cSmrg dlself=needless 1247e1e1713cSmrg export_dynamic=yes 1248e1e1713cSmrg fi 1249e1e1713cSmrg prev= 1250e1e1713cSmrg continue 1251e1e1713cSmrg ;; 1252e1e1713cSmrg self) 1253e1e1713cSmrg if test "$prev" = dlprefiles; then 1254e1e1713cSmrg dlself=yes 1255e1e1713cSmrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 1256e1e1713cSmrg dlself=yes 1257e1e1713cSmrg else 1258e1e1713cSmrg dlself=needless 1259e1e1713cSmrg export_dynamic=yes 1260e1e1713cSmrg fi 1261e1e1713cSmrg prev= 1262e1e1713cSmrg continue 1263e1e1713cSmrg ;; 1264e1e1713cSmrg *) 1265e1e1713cSmrg if test "$prev" = dlfiles; then 1266e1e1713cSmrg dlfiles="$dlfiles $arg" 1267e1e1713cSmrg else 1268e1e1713cSmrg dlprefiles="$dlprefiles $arg" 1269e1e1713cSmrg fi 1270e1e1713cSmrg prev= 1271e1e1713cSmrg continue 1272e1e1713cSmrg ;; 1273e1e1713cSmrg esac 1274e1e1713cSmrg ;; 1275e1e1713cSmrg expsyms) 1276e1e1713cSmrg export_symbols="$arg" 1277e1e1713cSmrg if test ! -f "$arg"; then 1278e1e1713cSmrg $echo "$modename: symbol file \`$arg' does not exist" 1279e1e1713cSmrg exit $EXIT_FAILURE 1280e1e1713cSmrg fi 1281e1e1713cSmrg prev= 1282e1e1713cSmrg continue 1283e1e1713cSmrg ;; 1284e1e1713cSmrg expsyms_regex) 1285e1e1713cSmrg export_symbols_regex="$arg" 1286e1e1713cSmrg prev= 1287e1e1713cSmrg continue 1288e1e1713cSmrg ;; 1289e1e1713cSmrg inst_prefix) 1290e1e1713cSmrg inst_prefix_dir="$arg" 1291e1e1713cSmrg prev= 1292e1e1713cSmrg continue 1293e1e1713cSmrg ;; 1294e1e1713cSmrg precious_regex) 1295e1e1713cSmrg precious_files_regex="$arg" 1296e1e1713cSmrg prev= 1297e1e1713cSmrg continue 1298e1e1713cSmrg ;; 1299e1e1713cSmrg release) 1300e1e1713cSmrg release="-$arg" 1301e1e1713cSmrg prev= 1302e1e1713cSmrg continue 1303e1e1713cSmrg ;; 1304e1e1713cSmrg objectlist) 1305e1e1713cSmrg if test -f "$arg"; then 1306e1e1713cSmrg save_arg=$arg 1307e1e1713cSmrg moreargs= 1308e1e1713cSmrg for fil in `cat $save_arg` 1309e1e1713cSmrg do 1310e1e1713cSmrg# moreargs="$moreargs $fil" 1311e1e1713cSmrg arg=$fil 1312e1e1713cSmrg # A libtool-controlled object. 13137a84e134Smrg 1314e1e1713cSmrg # Check to see that this really is a libtool object. 1315e1e1713cSmrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1316e1e1713cSmrg pic_object= 1317e1e1713cSmrg non_pic_object= 13187a84e134Smrg 1319e1e1713cSmrg # Read the .lo file 1320e1e1713cSmrg # If there is no directory component, then add one. 1321e1e1713cSmrg case $arg in 1322e1e1713cSmrg */* | *\\*) . $arg ;; 1323e1e1713cSmrg *) . ./$arg ;; 1324e1e1713cSmrg esac 13257a84e134Smrg 1326e1e1713cSmrg if test -z "$pic_object" || \ 1327e1e1713cSmrg test -z "$non_pic_object" || 1328e1e1713cSmrg test "$pic_object" = none && \ 1329e1e1713cSmrg test "$non_pic_object" = none; then 1330e1e1713cSmrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1331e1e1713cSmrg exit $EXIT_FAILURE 1332e1e1713cSmrg fi 13337a84e134Smrg 1334e1e1713cSmrg # Extract subdirectory from the argument. 1335e1e1713cSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1336e1e1713cSmrg if test "X$xdir" = "X$arg"; then 1337e1e1713cSmrg xdir= 1338e1e1713cSmrg else 1339e1e1713cSmrg xdir="$xdir/" 1340e1e1713cSmrg fi 13417a84e134Smrg 1342e1e1713cSmrg if test "$pic_object" != none; then 1343e1e1713cSmrg # Prepend the subdirectory the object is found in. 1344e1e1713cSmrg pic_object="$xdir$pic_object" 13457a84e134Smrg 1346e1e1713cSmrg if test "$prev" = dlfiles; then 1347e1e1713cSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1348e1e1713cSmrg dlfiles="$dlfiles $pic_object" 1349e1e1713cSmrg prev= 1350e1e1713cSmrg continue 1351e1e1713cSmrg else 1352e1e1713cSmrg # If libtool objects are unsupported, then we need to preload. 1353e1e1713cSmrg prev=dlprefiles 1354e1e1713cSmrg fi 1355e1e1713cSmrg fi 13567a84e134Smrg 1357e1e1713cSmrg # CHECK ME: I think I busted this. -Ossama 1358e1e1713cSmrg if test "$prev" = dlprefiles; then 1359e1e1713cSmrg # Preload the old-style object. 1360e1e1713cSmrg dlprefiles="$dlprefiles $pic_object" 1361e1e1713cSmrg prev= 1362e1e1713cSmrg fi 13637a84e134Smrg 1364e1e1713cSmrg # A PIC object. 1365e1e1713cSmrg libobjs="$libobjs $pic_object" 1366e1e1713cSmrg arg="$pic_object" 1367e1e1713cSmrg fi 13687a84e134Smrg 1369e1e1713cSmrg # Non-PIC object. 1370e1e1713cSmrg if test "$non_pic_object" != none; then 1371e1e1713cSmrg # Prepend the subdirectory the object is found in. 1372e1e1713cSmrg non_pic_object="$xdir$non_pic_object" 13737a84e134Smrg 1374e1e1713cSmrg # A standard non-PIC object 1375e1e1713cSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1376e1e1713cSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 1377e1e1713cSmrg arg="$non_pic_object" 1378e1e1713cSmrg fi 1379e1e1713cSmrg else 1380e1e1713cSmrg # If the PIC object exists, use it instead. 1381e1e1713cSmrg # $xdir was prepended to $pic_object above. 1382e1e1713cSmrg non_pic_object="$pic_object" 1383e1e1713cSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1384e1e1713cSmrg fi 1385e1e1713cSmrg else 1386e1e1713cSmrg # Only an error if not doing a dry-run. 1387e1e1713cSmrg if test -z "$run"; then 1388e1e1713cSmrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1389e1e1713cSmrg exit $EXIT_FAILURE 1390e1e1713cSmrg else 1391e1e1713cSmrg # Dry-run case. 13927a84e134Smrg 1393e1e1713cSmrg # Extract subdirectory from the argument. 1394e1e1713cSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1395e1e1713cSmrg if test "X$xdir" = "X$arg"; then 1396e1e1713cSmrg xdir= 1397e1e1713cSmrg else 1398e1e1713cSmrg xdir="$xdir/" 1399e1e1713cSmrg fi 14007a84e134Smrg 1401e1e1713cSmrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1402e1e1713cSmrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1403e1e1713cSmrg libobjs="$libobjs $pic_object" 1404e1e1713cSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1405e1e1713cSmrg fi 1406e1e1713cSmrg fi 1407e1e1713cSmrg done 1408e1e1713cSmrg else 1409e1e1713cSmrg $echo "$modename: link input file \`$save_arg' does not exist" 1410e1e1713cSmrg exit $EXIT_FAILURE 1411e1e1713cSmrg fi 1412e1e1713cSmrg arg=$save_arg 1413e1e1713cSmrg prev= 1414e1e1713cSmrg continue 1415e1e1713cSmrg ;; 1416e1e1713cSmrg rpath | xrpath) 1417e1e1713cSmrg # We need an absolute path. 1418e1e1713cSmrg case $arg in 1419e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1420e1e1713cSmrg *) 1421e1e1713cSmrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1422e1e1713cSmrg exit $EXIT_FAILURE 1423e1e1713cSmrg ;; 1424e1e1713cSmrg esac 1425e1e1713cSmrg if test "$prev" = rpath; then 1426e1e1713cSmrg case "$rpath " in 1427e1e1713cSmrg *" $arg "*) ;; 1428e1e1713cSmrg *) rpath="$rpath $arg" ;; 1429e1e1713cSmrg esac 1430e1e1713cSmrg else 1431e1e1713cSmrg case "$xrpath " in 1432e1e1713cSmrg *" $arg "*) ;; 1433e1e1713cSmrg *) xrpath="$xrpath $arg" ;; 1434e1e1713cSmrg esac 1435e1e1713cSmrg fi 1436e1e1713cSmrg prev= 1437e1e1713cSmrg continue 1438e1e1713cSmrg ;; 1439e1e1713cSmrg xcompiler) 1440e1e1713cSmrg compiler_flags="$compiler_flags $qarg" 1441e1e1713cSmrg prev= 1442e1e1713cSmrg compile_command="$compile_command $qarg" 1443e1e1713cSmrg finalize_command="$finalize_command $qarg" 1444e1e1713cSmrg continue 1445e1e1713cSmrg ;; 1446e1e1713cSmrg xlinker) 1447e1e1713cSmrg linker_flags="$linker_flags $qarg" 1448e1e1713cSmrg compiler_flags="$compiler_flags $wl$qarg" 1449e1e1713cSmrg prev= 1450e1e1713cSmrg compile_command="$compile_command $wl$qarg" 1451e1e1713cSmrg finalize_command="$finalize_command $wl$qarg" 1452e1e1713cSmrg continue 1453e1e1713cSmrg ;; 1454e1e1713cSmrg xcclinker) 1455e1e1713cSmrg linker_flags="$linker_flags $qarg" 1456e1e1713cSmrg compiler_flags="$compiler_flags $qarg" 1457e1e1713cSmrg prev= 1458e1e1713cSmrg compile_command="$compile_command $qarg" 1459e1e1713cSmrg finalize_command="$finalize_command $qarg" 1460e1e1713cSmrg continue 1461e1e1713cSmrg ;; 1462e1e1713cSmrg shrext) 1463e1e1713cSmrg shrext_cmds="$arg" 1464e1e1713cSmrg prev= 1465e1e1713cSmrg continue 1466e1e1713cSmrg ;; 1467e1e1713cSmrg darwin_framework|darwin_framework_skip) 1468e1e1713cSmrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 1469e1e1713cSmrg compile_command="$compile_command $arg" 1470e1e1713cSmrg finalize_command="$finalize_command $arg" 1471e1e1713cSmrg prev= 1472e1e1713cSmrg continue 1473e1e1713cSmrg ;; 1474e1e1713cSmrg *) 1475e1e1713cSmrg eval "$prev=\"\$arg\"" 1476e1e1713cSmrg prev= 1477e1e1713cSmrg continue 1478e1e1713cSmrg ;; 1479e1e1713cSmrg esac 1480e1e1713cSmrg fi # test -n "$prev" 14817a84e134Smrg 1482e1e1713cSmrg prevarg="$arg" 14837a84e134Smrg 1484e1e1713cSmrg case $arg in 1485e1e1713cSmrg -all-static) 1486e1e1713cSmrg if test -n "$link_static_flag"; then 1487e1e1713cSmrg compile_command="$compile_command $link_static_flag" 1488e1e1713cSmrg finalize_command="$finalize_command $link_static_flag" 1489e1e1713cSmrg fi 1490e1e1713cSmrg continue 1491e1e1713cSmrg ;; 14927a84e134Smrg 1493e1e1713cSmrg -allow-undefined) 1494e1e1713cSmrg # FIXME: remove this flag sometime in the future. 1495e1e1713cSmrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 1496e1e1713cSmrg continue 1497e1e1713cSmrg ;; 14987a84e134Smrg 1499e1e1713cSmrg -avoid-version) 1500e1e1713cSmrg avoid_version=yes 1501e1e1713cSmrg continue 1502e1e1713cSmrg ;; 15037a84e134Smrg 1504e1e1713cSmrg -dlopen) 1505e1e1713cSmrg prev=dlfiles 1506e1e1713cSmrg continue 1507e1e1713cSmrg ;; 15087a84e134Smrg 1509e1e1713cSmrg -dlpreopen) 1510e1e1713cSmrg prev=dlprefiles 1511e1e1713cSmrg continue 1512e1e1713cSmrg ;; 15137a84e134Smrg 1514e1e1713cSmrg -export-dynamic) 1515e1e1713cSmrg export_dynamic=yes 1516e1e1713cSmrg continue 1517e1e1713cSmrg ;; 15187a84e134Smrg 1519e1e1713cSmrg -export-symbols | -export-symbols-regex) 1520e1e1713cSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1521e1e1713cSmrg $echo "$modename: more than one -exported-symbols argument is not allowed" 1522e1e1713cSmrg exit $EXIT_FAILURE 1523e1e1713cSmrg fi 1524e1e1713cSmrg if test "X$arg" = "X-export-symbols"; then 1525e1e1713cSmrg prev=expsyms 1526e1e1713cSmrg else 1527e1e1713cSmrg prev=expsyms_regex 1528e1e1713cSmrg fi 1529e1e1713cSmrg continue 1530e1e1713cSmrg ;; 15317a84e134Smrg 1532e1e1713cSmrg -framework|-arch|-isysroot) 1533e1e1713cSmrg case " $CC " in 1534e1e1713cSmrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 1535e1e1713cSmrg prev=darwin_framework_skip ;; 1536e1e1713cSmrg *) compiler_flags="$compiler_flags $arg" 1537e1e1713cSmrg prev=darwin_framework ;; 1538e1e1713cSmrg esac 1539e1e1713cSmrg compile_command="$compile_command $arg" 1540e1e1713cSmrg finalize_command="$finalize_command $arg" 1541e1e1713cSmrg continue 1542e1e1713cSmrg ;; 15437a84e134Smrg 1544e1e1713cSmrg -inst-prefix-dir) 1545e1e1713cSmrg prev=inst_prefix 1546e1e1713cSmrg continue 1547e1e1713cSmrg ;; 15487a84e134Smrg 1549e1e1713cSmrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 1550e1e1713cSmrg # so, if we see these flags be careful not to treat them like -L 1551e1e1713cSmrg -L[A-Z][A-Z]*:*) 1552e1e1713cSmrg case $with_gcc/$host in 1553e1e1713cSmrg no/*-*-irix* | /*-*-irix*) 1554e1e1713cSmrg compile_command="$compile_command $arg" 1555e1e1713cSmrg finalize_command="$finalize_command $arg" 1556e1e1713cSmrg ;; 1557e1e1713cSmrg esac 1558e1e1713cSmrg continue 1559e1e1713cSmrg ;; 15607a84e134Smrg 1561e1e1713cSmrg -L*) 1562e1e1713cSmrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 1563e1e1713cSmrg # We need an absolute path. 1564e1e1713cSmrg case $dir in 1565e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1566e1e1713cSmrg *) 1567e1e1713cSmrg absdir=`cd "$dir" && pwd` 1568e1e1713cSmrg if test -z "$absdir"; then 1569e1e1713cSmrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 1570e1e1713cSmrg absdir="$dir" 1571e1e1713cSmrg notinst_path="$notinst_path $dir" 1572e1e1713cSmrg fi 1573e1e1713cSmrg dir="$absdir" 1574e1e1713cSmrg ;; 1575e1e1713cSmrg esac 1576e1e1713cSmrg case "$deplibs " in 1577e1e1713cSmrg *" -L$dir "*) ;; 1578e1e1713cSmrg *) 1579e1e1713cSmrg deplibs="$deplibs -L$dir" 1580e1e1713cSmrg lib_search_path="$lib_search_path $dir" 1581e1e1713cSmrg ;; 1582e1e1713cSmrg esac 1583e1e1713cSmrg case $host in 1584e1e1713cSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1585e1e1713cSmrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 1586e1e1713cSmrg case :$dllsearchpath: in 1587e1e1713cSmrg *":$dir:"*) ;; 1588e1e1713cSmrg *) dllsearchpath="$dllsearchpath:$dir";; 1589e1e1713cSmrg esac 1590e1e1713cSmrg case :$dllsearchpath: in 1591e1e1713cSmrg *":$testbindir:"*) ;; 1592e1e1713cSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 1593e1e1713cSmrg esac 1594e1e1713cSmrg ;; 1595e1e1713cSmrg esac 1596e1e1713cSmrg continue 1597e1e1713cSmrg ;; 15987a84e134Smrg 1599e1e1713cSmrg -l*) 1600e1e1713cSmrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 1601e1e1713cSmrg case $host in 1602e1e1713cSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 1603e1e1713cSmrg # These systems don't actually have a C or math library (as such) 1604e1e1713cSmrg continue 1605e1e1713cSmrg ;; 1606e1e1713cSmrg *-*-os2*) 1607e1e1713cSmrg # These systems don't actually have a C library (as such) 1608e1e1713cSmrg test "X$arg" = "X-lc" && continue 1609e1e1713cSmrg ;; 1610e1e1713cSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1611e1e1713cSmrg # Do not include libc due to us having libc/libc_r. 1612e1e1713cSmrg test "X$arg" = "X-lc" && continue 1613e1e1713cSmrg ;; 1614e1e1713cSmrg *-*-rhapsody* | *-*-darwin1.[012]) 1615e1e1713cSmrg # Rhapsody C and math libraries are in the System framework 1616e1e1713cSmrg deplibs="$deplibs -framework System" 1617e1e1713cSmrg continue 1618e1e1713cSmrg ;; 1619e1e1713cSmrg *-*-sco3.2v5* | *-*-sco5v6*) 1620e1e1713cSmrg # Causes problems with __ctype 1621e1e1713cSmrg test "X$arg" = "X-lc" && continue 1622e1e1713cSmrg ;; 1623e1e1713cSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 1624e1e1713cSmrg # Compiler inserts libc in the correct place for threads to work 1625e1e1713cSmrg test "X$arg" = "X-lc" && continue 1626e1e1713cSmrg ;; 1627e1e1713cSmrg esac 1628e1e1713cSmrg elif test "X$arg" = "X-lc_r"; then 1629e1e1713cSmrg case $host in 1630e1e1713cSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1631e1e1713cSmrg # Do not include libc_r directly, use -pthread flag. 1632e1e1713cSmrg continue 1633e1e1713cSmrg ;; 1634e1e1713cSmrg esac 1635775e7de9Smrg fi 1636e1e1713cSmrg deplibs="$deplibs $arg" 1637e1e1713cSmrg continue 1638e1e1713cSmrg ;; 16397a84e134Smrg 1640e1e1713cSmrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 1641e1e1713cSmrg # classes, name mangling, and exception handling. 1642e1e1713cSmrg -model) 1643e1e1713cSmrg compile_command="$compile_command $arg" 1644e1e1713cSmrg compiler_flags="$compiler_flags $arg" 1645e1e1713cSmrg finalize_command="$finalize_command $arg" 1646e1e1713cSmrg prev=xcompiler 1647e1e1713cSmrg continue 16487a84e134Smrg ;; 16497a84e134Smrg 1650e1e1713cSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 1651e1e1713cSmrg compiler_flags="$compiler_flags $arg" 1652e1e1713cSmrg compile_command="$compile_command $arg" 1653e1e1713cSmrg finalize_command="$finalize_command $arg" 1654e1e1713cSmrg continue 16557a84e134Smrg ;; 16567a84e134Smrg 1657e1e1713cSmrg -multi_module) 1658e1e1713cSmrg single_module="${wl}-multi_module" 16597a84e134Smrg continue 16607a84e134Smrg ;; 16617a84e134Smrg 1662e1e1713cSmrg -module) 1663e1e1713cSmrg module=yes 1664e1e1713cSmrg continue 1665e1e1713cSmrg ;; 16667a84e134Smrg 1667e1e1713cSmrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 1668e1e1713cSmrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 1669e1e1713cSmrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 1670e1e1713cSmrg # +DA*, +DD* enable 64-bit mode on the HP compiler 1671e1e1713cSmrg # -q* pass through compiler args for the IBM compiler 1672e1e1713cSmrg # -m* pass through architecture-specific compiler args for GCC 1673e1e1713cSmrg # -m*, -t[45]*, -txscale* pass through architecture-specific 1674e1e1713cSmrg # compiler args for GCC 1675e1e1713cSmrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 1676e1e1713cSmrg # -F/path gives path to uninstalled frameworks, gcc on darwin 1677e1e1713cSmrg # @file GCC response files 1678e1e1713cSmrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 1679e1e1713cSmrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 16807a84e134Smrg 1681e1e1713cSmrg # Unknown arguments in both finalize_command and compile_command need 1682e1e1713cSmrg # to be aesthetically quoted because they are evaled later. 1683e1e1713cSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1684e1e1713cSmrg case $arg in 1685e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1686e1e1713cSmrg arg="\"$arg\"" 1687e1e1713cSmrg ;; 1688e1e1713cSmrg esac 1689e1e1713cSmrg compile_command="$compile_command $arg" 1690e1e1713cSmrg finalize_command="$finalize_command $arg" 1691e1e1713cSmrg compiler_flags="$compiler_flags $arg" 1692e1e1713cSmrg continue 1693e1e1713cSmrg ;; 16947a84e134Smrg 1695e1e1713cSmrg -shrext) 1696e1e1713cSmrg prev=shrext 1697e1e1713cSmrg continue 1698775e7de9Smrg ;; 16997a84e134Smrg 1700e1e1713cSmrg -no-fast-install) 1701e1e1713cSmrg fast_install=no 1702e1e1713cSmrg continue 1703e1e1713cSmrg ;; 17047a84e134Smrg 1705e1e1713cSmrg -no-install) 1706e1e1713cSmrg case $host in 1707e1e1713cSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 1708e1e1713cSmrg # The PATH hackery in wrapper scripts is required on Windows 1709e1e1713cSmrg # and Darwin in order for the loader to find any dlls it needs. 1710e1e1713cSmrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 1711e1e1713cSmrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 1712e1e1713cSmrg fast_install=no 1713e1e1713cSmrg ;; 1714e1e1713cSmrg *) no_install=yes ;; 1715e1e1713cSmrg esac 1716e1e1713cSmrg continue 1717e1e1713cSmrg ;; 17187a84e134Smrg 1719e1e1713cSmrg -no-undefined) 1720e1e1713cSmrg allow_undefined=no 1721e1e1713cSmrg continue 1722e1e1713cSmrg ;; 1723775e7de9Smrg 1724e1e1713cSmrg -objectlist) 1725e1e1713cSmrg prev=objectlist 1726e1e1713cSmrg continue 17277a84e134Smrg ;; 17287a84e134Smrg 1729e1e1713cSmrg -o) prev=output ;; 17307a84e134Smrg 1731e1e1713cSmrg -precious-files-regex) 1732e1e1713cSmrg prev=precious_regex 1733e1e1713cSmrg continue 1734e1e1713cSmrg ;; 1735ab902922Smrg 1736e1e1713cSmrg -release) 1737e1e1713cSmrg prev=release 1738e1e1713cSmrg continue 1739e1e1713cSmrg ;; 17407a84e134Smrg 1741e1e1713cSmrg -rpath) 1742e1e1713cSmrg prev=rpath 1743e1e1713cSmrg continue 1744e1e1713cSmrg ;; 17457a84e134Smrg 1746e1e1713cSmrg -R) 1747e1e1713cSmrg prev=xrpath 1748775e7de9Smrg continue 1749e1e1713cSmrg ;; 17507a84e134Smrg 1751e1e1713cSmrg -R*) 1752e1e1713cSmrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 1753e1e1713cSmrg # We need an absolute path. 1754e1e1713cSmrg case $dir in 1755e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1756e1e1713cSmrg *) 1757e1e1713cSmrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1758e1e1713cSmrg exit $EXIT_FAILURE 1759e1e1713cSmrg ;; 1760e1e1713cSmrg esac 1761e1e1713cSmrg case "$xrpath " in 1762e1e1713cSmrg *" $dir "*) ;; 1763e1e1713cSmrg *) xrpath="$xrpath $dir" ;; 1764775e7de9Smrg esac 1765e1e1713cSmrg continue 1766775e7de9Smrg ;; 1767e1e1713cSmrg 1768e1e1713cSmrg -static | -static-libtool-libs) 1769e1e1713cSmrg # The effects of -static are defined in a previous loop. 1770e1e1713cSmrg # We used to do the same as -all-static on platforms that 1771e1e1713cSmrg # didn't have a PIC flag, but the assumption that the effects 1772e1e1713cSmrg # would be equivalent was wrong. It would break on at least 1773e1e1713cSmrg # Digital Unix and AIX. 1774e1e1713cSmrg continue 1775775e7de9Smrg ;; 1776e1e1713cSmrg 1777e1e1713cSmrg -thread-safe) 1778e1e1713cSmrg thread_safe=yes 1779775e7de9Smrg continue 1780775e7de9Smrg ;; 1781e1e1713cSmrg 1782e1e1713cSmrg -version-info) 1783e1e1713cSmrg prev=vinfo 1784e1e1713cSmrg continue 1785775e7de9Smrg ;; 1786e1e1713cSmrg -version-number) 1787e1e1713cSmrg prev=vinfo 1788e1e1713cSmrg vinfo_number=yes 1789e1e1713cSmrg continue 1790775e7de9Smrg ;; 1791775e7de9Smrg 1792e1e1713cSmrg -Wc,*) 1793e1e1713cSmrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 1794e1e1713cSmrg arg= 1795e1e1713cSmrg save_ifs="$IFS"; IFS=',' 1796e1e1713cSmrg for flag in $args; do 1797e1e1713cSmrg IFS="$save_ifs" 1798e1e1713cSmrg case $flag in 1799e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1800e1e1713cSmrg flag="\"$flag\"" 1801e1e1713cSmrg ;; 1802e1e1713cSmrg esac 1803e1e1713cSmrg arg="$arg $wl$flag" 1804e1e1713cSmrg compiler_flags="$compiler_flags $flag" 1805e1e1713cSmrg done 1806e1e1713cSmrg IFS="$save_ifs" 1807e1e1713cSmrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1808e1e1713cSmrg ;; 1809775e7de9Smrg 1810e1e1713cSmrg -Wl,*) 1811e1e1713cSmrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 1812e1e1713cSmrg arg= 1813e1e1713cSmrg save_ifs="$IFS"; IFS=',' 1814e1e1713cSmrg for flag in $args; do 1815e1e1713cSmrg IFS="$save_ifs" 1816e1e1713cSmrg case $flag in 1817e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1818e1e1713cSmrg flag="\"$flag\"" 1819e1e1713cSmrg ;; 1820e1e1713cSmrg esac 1821e1e1713cSmrg arg="$arg $wl$flag" 1822e1e1713cSmrg compiler_flags="$compiler_flags $wl$flag" 1823e1e1713cSmrg linker_flags="$linker_flags $flag" 1824e1e1713cSmrg done 1825e1e1713cSmrg IFS="$save_ifs" 1826e1e1713cSmrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1827e1e1713cSmrg ;; 1828775e7de9Smrg 1829e1e1713cSmrg -Xcompiler) 1830e1e1713cSmrg prev=xcompiler 1831e1e1713cSmrg continue 1832e1e1713cSmrg ;; 18337a84e134Smrg 1834e1e1713cSmrg -Xlinker) 1835e1e1713cSmrg prev=xlinker 1836e1e1713cSmrg continue 1837e1e1713cSmrg ;; 18387a84e134Smrg 1839e1e1713cSmrg -XCClinker) 1840e1e1713cSmrg prev=xcclinker 1841e1e1713cSmrg continue 1842e1e1713cSmrg ;; 1843775e7de9Smrg 1844e1e1713cSmrg # Some other compiler flag. 1845e1e1713cSmrg -* | +*) 1846e1e1713cSmrg # Unknown arguments in both finalize_command and compile_command need 1847e1e1713cSmrg # to be aesthetically quoted because they are evaled later. 1848e1e1713cSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1849e1e1713cSmrg case $arg in 1850e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1851e1e1713cSmrg arg="\"$arg\"" 1852775e7de9Smrg ;; 1853775e7de9Smrg esac 1854e1e1713cSmrg ;; 18557a84e134Smrg 1856e1e1713cSmrg *.$objext) 1857e1e1713cSmrg # A standard object. 1858e1e1713cSmrg objs="$objs $arg" 1859775e7de9Smrg ;; 1860775e7de9Smrg 1861e1e1713cSmrg *.lo) 1862e1e1713cSmrg # A libtool-controlled object. 1863775e7de9Smrg 1864e1e1713cSmrg # Check to see that this really is a libtool object. 1865e1e1713cSmrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1866e1e1713cSmrg pic_object= 1867e1e1713cSmrg non_pic_object= 1868775e7de9Smrg 1869e1e1713cSmrg # Read the .lo file 1870e1e1713cSmrg # If there is no directory component, then add one. 1871e1e1713cSmrg case $arg in 1872e1e1713cSmrg */* | *\\*) . $arg ;; 1873e1e1713cSmrg *) . ./$arg ;; 1874775e7de9Smrg esac 1875775e7de9Smrg 1876e1e1713cSmrg if test -z "$pic_object" || \ 1877e1e1713cSmrg test -z "$non_pic_object" || 1878e1e1713cSmrg test "$pic_object" = none && \ 1879e1e1713cSmrg test "$non_pic_object" = none; then 1880e1e1713cSmrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1881e1e1713cSmrg exit $EXIT_FAILURE 1882e1e1713cSmrg fi 1883775e7de9Smrg 1884e1e1713cSmrg # Extract subdirectory from the argument. 1885e1e1713cSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1886e1e1713cSmrg if test "X$xdir" = "X$arg"; then 1887e1e1713cSmrg xdir= 1888e1e1713cSmrg else 1889e1e1713cSmrg xdir="$xdir/" 1890775e7de9Smrg fi 1891775e7de9Smrg 1892e1e1713cSmrg if test "$pic_object" != none; then 1893e1e1713cSmrg # Prepend the subdirectory the object is found in. 1894e1e1713cSmrg pic_object="$xdir$pic_object" 1895775e7de9Smrg 1896e1e1713cSmrg if test "$prev" = dlfiles; then 1897e1e1713cSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1898e1e1713cSmrg dlfiles="$dlfiles $pic_object" 1899e1e1713cSmrg prev= 1900e1e1713cSmrg continue 1901e1e1713cSmrg else 1902e1e1713cSmrg # If libtool objects are unsupported, then we need to preload. 1903e1e1713cSmrg prev=dlprefiles 1904e1e1713cSmrg fi 1905e1e1713cSmrg fi 1906775e7de9Smrg 1907e1e1713cSmrg # CHECK ME: I think I busted this. -Ossama 1908e1e1713cSmrg if test "$prev" = dlprefiles; then 1909e1e1713cSmrg # Preload the old-style object. 1910e1e1713cSmrg dlprefiles="$dlprefiles $pic_object" 1911e1e1713cSmrg prev= 1912e1e1713cSmrg fi 1913775e7de9Smrg 1914e1e1713cSmrg # A PIC object. 1915e1e1713cSmrg libobjs="$libobjs $pic_object" 1916e1e1713cSmrg arg="$pic_object" 1917ab902922Smrg fi 1918775e7de9Smrg 1919e1e1713cSmrg # Non-PIC object. 1920e1e1713cSmrg if test "$non_pic_object" != none; then 1921e1e1713cSmrg # Prepend the subdirectory the object is found in. 1922e1e1713cSmrg non_pic_object="$xdir$non_pic_object" 1923e1e1713cSmrg 1924e1e1713cSmrg # A standard non-PIC object 1925e1e1713cSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1926e1e1713cSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 1927e1e1713cSmrg arg="$non_pic_object" 1928e1e1713cSmrg fi 1929e1e1713cSmrg else 1930e1e1713cSmrg # If the PIC object exists, use it instead. 1931e1e1713cSmrg # $xdir was prepended to $pic_object above. 1932e1e1713cSmrg non_pic_object="$pic_object" 1933e1e1713cSmrg non_pic_objects="$non_pic_objects $non_pic_object" 19347a84e134Smrg fi 1935e1e1713cSmrg else 1936e1e1713cSmrg # Only an error if not doing a dry-run. 1937e1e1713cSmrg if test -z "$run"; then 1938e1e1713cSmrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1939e1e1713cSmrg exit $EXIT_FAILURE 1940e1e1713cSmrg else 1941e1e1713cSmrg # Dry-run case. 19427a84e134Smrg 1943e1e1713cSmrg # Extract subdirectory from the argument. 1944e1e1713cSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1945e1e1713cSmrg if test "X$xdir" = "X$arg"; then 1946e1e1713cSmrg xdir= 1947e1e1713cSmrg else 1948e1e1713cSmrg xdir="$xdir/" 1949e1e1713cSmrg fi 19507a84e134Smrg 1951e1e1713cSmrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1952e1e1713cSmrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1953e1e1713cSmrg libobjs="$libobjs $pic_object" 1954e1e1713cSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1955e1e1713cSmrg fi 1956e1e1713cSmrg fi 1957e1e1713cSmrg ;; 19587a84e134Smrg 1959e1e1713cSmrg *.$libext) 1960e1e1713cSmrg # An archive. 1961e1e1713cSmrg deplibs="$deplibs $arg" 1962e1e1713cSmrg old_deplibs="$old_deplibs $arg" 1963e1e1713cSmrg continue 1964775e7de9Smrg ;; 19657a84e134Smrg 1966e1e1713cSmrg *.la) 1967e1e1713cSmrg # A libtool-controlled library. 19687a84e134Smrg 1969e1e1713cSmrg if test "$prev" = dlfiles; then 1970e1e1713cSmrg # This library was specified with -dlopen. 1971e1e1713cSmrg dlfiles="$dlfiles $arg" 1972e1e1713cSmrg prev= 1973e1e1713cSmrg elif test "$prev" = dlprefiles; then 1974e1e1713cSmrg # The library was specified with -dlpreopen. 1975e1e1713cSmrg dlprefiles="$dlprefiles $arg" 1976e1e1713cSmrg prev= 1977775e7de9Smrg else 1978e1e1713cSmrg deplibs="$deplibs $arg" 1979775e7de9Smrg fi 1980e1e1713cSmrg continue 1981e1e1713cSmrg ;; 1982775e7de9Smrg 1983e1e1713cSmrg # Some other compiler argument. 1984e1e1713cSmrg *) 1985e1e1713cSmrg # Unknown arguments in both finalize_command and compile_command need 1986e1e1713cSmrg # to be aesthetically quoted because they are evaled later. 1987e1e1713cSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1988e1e1713cSmrg case $arg in 1989e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1990e1e1713cSmrg arg="\"$arg\"" 1991775e7de9Smrg ;; 19927a84e134Smrg esac 1993775e7de9Smrg ;; 1994e1e1713cSmrg esac # arg 19957a84e134Smrg 1996e1e1713cSmrg # Now actually substitute the argument into the commands. 1997e1e1713cSmrg if test -n "$arg"; then 1998e1e1713cSmrg compile_command="$compile_command $arg" 1999e1e1713cSmrg finalize_command="$finalize_command $arg" 2000e1e1713cSmrg fi 2001e1e1713cSmrg done # argument parsing loop 20027a84e134Smrg 2003e1e1713cSmrg if test -n "$prev"; then 2004e1e1713cSmrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 2005e1e1713cSmrg $echo "$help" 1>&2 2006e1e1713cSmrg exit $EXIT_FAILURE 2007e1e1713cSmrg fi 20087a84e134Smrg 2009e1e1713cSmrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 2010e1e1713cSmrg eval arg=\"$export_dynamic_flag_spec\" 2011e1e1713cSmrg compile_command="$compile_command $arg" 2012e1e1713cSmrg finalize_command="$finalize_command $arg" 2013e1e1713cSmrg fi 20147a84e134Smrg 2015e1e1713cSmrg oldlibs= 2016e1e1713cSmrg # calculate the name of the file, without its directory 2017e1e1713cSmrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 2018e1e1713cSmrg libobjs_save="$libobjs" 2019775e7de9Smrg 2020e1e1713cSmrg if test -n "$shlibpath_var"; then 2021e1e1713cSmrg # get the directories listed in $shlibpath_var 2022e1e1713cSmrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 2023e1e1713cSmrg else 2024e1e1713cSmrg shlib_search_path= 2025e1e1713cSmrg fi 2026e1e1713cSmrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 2027e1e1713cSmrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 2028775e7de9Smrg 2029e1e1713cSmrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2030e1e1713cSmrg if test "X$output_objdir" = "X$output"; then 2031e1e1713cSmrg output_objdir="$objdir" 2032775e7de9Smrg else 2033e1e1713cSmrg output_objdir="$output_objdir/$objdir" 2034775e7de9Smrg fi 2035e1e1713cSmrg # Create the object directory. 2036e1e1713cSmrg if test ! -d "$output_objdir"; then 2037e1e1713cSmrg $show "$mkdir $output_objdir" 2038e1e1713cSmrg $run $mkdir $output_objdir 2039e1e1713cSmrg exit_status=$? 2040e1e1713cSmrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 2041e1e1713cSmrg exit $exit_status 2042775e7de9Smrg fi 2043775e7de9Smrg fi 2044775e7de9Smrg 2045e1e1713cSmrg # Determine the type of output 2046e1e1713cSmrg case $output in 2047e1e1713cSmrg "") 2048e1e1713cSmrg $echo "$modename: you must specify an output file" 1>&2 2049e1e1713cSmrg $echo "$help" 1>&2 2050e1e1713cSmrg exit $EXIT_FAILURE 2051e1e1713cSmrg ;; 2052e1e1713cSmrg *.$libext) linkmode=oldlib ;; 2053e1e1713cSmrg *.lo | *.$objext) linkmode=obj ;; 2054e1e1713cSmrg *.la) linkmode=lib ;; 2055e1e1713cSmrg *) linkmode=prog ;; # Anything else should be a program. 2056e1e1713cSmrg esac 20577a84e134Smrg 2058e1e1713cSmrg case $host in 2059e1e1713cSmrg *cygwin* | *mingw* | *pw32*) 2060e1e1713cSmrg # don't eliminate duplications in $postdeps and $predeps 2061e1e1713cSmrg duplicate_compiler_generated_deps=yes 2062e1e1713cSmrg ;; 2063e1e1713cSmrg *) 2064e1e1713cSmrg duplicate_compiler_generated_deps=$duplicate_deps 2065e1e1713cSmrg ;; 2066e1e1713cSmrg esac 2067e1e1713cSmrg specialdeplibs= 20687a84e134Smrg 2069e1e1713cSmrg libs= 2070e1e1713cSmrg # Find all interdependent deplibs by searching for libraries 2071e1e1713cSmrg # that are linked more than once (e.g. -la -lb -la) 2072e1e1713cSmrg for deplib in $deplibs; do 2073e1e1713cSmrg if test "X$duplicate_deps" = "Xyes" ; then 2074e1e1713cSmrg case "$libs " in 2075e1e1713cSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2076e1e1713cSmrg esac 2077e1e1713cSmrg fi 2078e1e1713cSmrg libs="$libs $deplib" 2079e1e1713cSmrg done 20807a84e134Smrg 2081e1e1713cSmrg if test "$linkmode" = lib; then 2082e1e1713cSmrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 20837a84e134Smrg 2084e1e1713cSmrg # Compute libraries that are listed more than once in $predeps 2085e1e1713cSmrg # $postdeps and mark them as special (i.e., whose duplicates are 2086e1e1713cSmrg # not to be eliminated). 2087e1e1713cSmrg pre_post_deps= 2088e1e1713cSmrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 2089e1e1713cSmrg for pre_post_dep in $predeps $postdeps; do 2090e1e1713cSmrg case "$pre_post_deps " in 2091e1e1713cSmrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 2092775e7de9Smrg esac 2093e1e1713cSmrg pre_post_deps="$pre_post_deps $pre_post_dep" 2094e1e1713cSmrg done 2095e1e1713cSmrg fi 2096e1e1713cSmrg pre_post_deps= 2097e1e1713cSmrg fi 2098775e7de9Smrg 2099e1e1713cSmrg deplibs= 2100e1e1713cSmrg newdependency_libs= 2101e1e1713cSmrg newlib_search_path= 2102e1e1713cSmrg need_relink=no # whether we're linking any uninstalled libtool libraries 2103e1e1713cSmrg notinst_deplibs= # not-installed libtool libraries 2104e1e1713cSmrg case $linkmode in 2105e1e1713cSmrg lib) 2106e1e1713cSmrg passes="conv link" 2107e1e1713cSmrg for file in $dlfiles $dlprefiles; do 2108e1e1713cSmrg case $file in 2109e1e1713cSmrg *.la) ;; 2110775e7de9Smrg *) 2111e1e1713cSmrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 2112e1e1713cSmrg exit $EXIT_FAILURE 2113775e7de9Smrg ;; 2114775e7de9Smrg esac 2115775e7de9Smrg done 2116775e7de9Smrg ;; 2117e1e1713cSmrg prog) 2118e1e1713cSmrg compile_deplibs= 2119e1e1713cSmrg finalize_deplibs= 2120e1e1713cSmrg alldeplibs=no 2121e1e1713cSmrg newdlfiles= 2122e1e1713cSmrg newdlprefiles= 2123e1e1713cSmrg passes="conv scan dlopen dlpreopen link" 2124e1e1713cSmrg ;; 2125e1e1713cSmrg *) passes="conv" 2126775e7de9Smrg ;; 2127775e7de9Smrg esac 2128e1e1713cSmrg for pass in $passes; do 2129e1e1713cSmrg if test "$linkmode,$pass" = "lib,link" || 2130e1e1713cSmrg test "$linkmode,$pass" = "prog,scan"; then 2131e1e1713cSmrg libs="$deplibs" 2132e1e1713cSmrg deplibs= 2133e1e1713cSmrg fi 2134e1e1713cSmrg if test "$linkmode" = prog; then 2135e1e1713cSmrg case $pass in 2136e1e1713cSmrg dlopen) libs="$dlfiles" ;; 2137e1e1713cSmrg dlpreopen) libs="$dlprefiles" ;; 2138e1e1713cSmrg link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 2139e1e1713cSmrg esac 2140e1e1713cSmrg fi 2141e1e1713cSmrg if test "$pass" = dlopen; then 2142e1e1713cSmrg # Collect dlpreopened libraries 2143e1e1713cSmrg save_deplibs="$deplibs" 2144e1e1713cSmrg deplibs= 2145e1e1713cSmrg fi 2146e1e1713cSmrg for deplib in $libs; do 2147e1e1713cSmrg lib= 2148e1e1713cSmrg found=no 2149e1e1713cSmrg case $deplib in 2150e1e1713cSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 2151e1e1713cSmrg if test "$linkmode,$pass" = "prog,link"; then 2152e1e1713cSmrg compile_deplibs="$deplib $compile_deplibs" 2153e1e1713cSmrg finalize_deplibs="$deplib $finalize_deplibs" 2154e1e1713cSmrg else 2155e1e1713cSmrg compiler_flags="$compiler_flags $deplib" 2156e1e1713cSmrg fi 2157e1e1713cSmrg continue 2158e1e1713cSmrg ;; 2159e1e1713cSmrg -l*) 2160e1e1713cSmrg if test "$linkmode" != lib && test "$linkmode" != prog; then 2161e1e1713cSmrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 2162e1e1713cSmrg continue 2163e1e1713cSmrg fi 2164e1e1713cSmrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 2165e1e1713cSmrg if test "$linkmode" = lib; then 2166e1e1713cSmrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 2167e1e1713cSmrg else 2168e1e1713cSmrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 2169e1e1713cSmrg fi 2170e1e1713cSmrg for searchdir in $searchdirs; do 2171e1e1713cSmrg for search_ext in .la $std_shrext .so .a; do 2172e1e1713cSmrg # Search the libtool library 2173e1e1713cSmrg lib="$searchdir/lib${name}${search_ext}" 2174e1e1713cSmrg if test -f "$lib"; then 2175e1e1713cSmrg if test "$search_ext" = ".la"; then 2176e1e1713cSmrg found=yes 2177e1e1713cSmrg else 2178e1e1713cSmrg found=no 2179e1e1713cSmrg fi 2180e1e1713cSmrg break 2 2181e1e1713cSmrg fi 2182e1e1713cSmrg done 2183e1e1713cSmrg done 2184e1e1713cSmrg if test "$found" != yes; then 2185e1e1713cSmrg # deplib doesn't seem to be a libtool library 2186e1e1713cSmrg if test "$linkmode,$pass" = "prog,link"; then 2187e1e1713cSmrg compile_deplibs="$deplib $compile_deplibs" 2188e1e1713cSmrg finalize_deplibs="$deplib $finalize_deplibs" 2189e1e1713cSmrg else 2190e1e1713cSmrg deplibs="$deplib $deplibs" 2191e1e1713cSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2192e1e1713cSmrg fi 2193e1e1713cSmrg continue 2194e1e1713cSmrg else # deplib is a libtool library 2195e1e1713cSmrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 2196e1e1713cSmrg # We need to do some special things here, and not later. 2197e1e1713cSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 2198e1e1713cSmrg case " $predeps $postdeps " in 2199e1e1713cSmrg *" $deplib "*) 2200e1e1713cSmrg if (${SED} -e '2q' $lib | 2201e1e1713cSmrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2202e1e1713cSmrg library_names= 2203e1e1713cSmrg old_library= 2204e1e1713cSmrg case $lib in 2205e1e1713cSmrg */* | *\\*) . $lib ;; 2206e1e1713cSmrg *) . ./$lib ;; 2207e1e1713cSmrg esac 2208e1e1713cSmrg for l in $old_library $library_names; do 2209e1e1713cSmrg ll="$l" 2210e1e1713cSmrg done 2211e1e1713cSmrg if test "X$ll" = "X$old_library" ; then # only static version available 2212e1e1713cSmrg found=no 2213e1e1713cSmrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2214e1e1713cSmrg test "X$ladir" = "X$lib" && ladir="." 2215e1e1713cSmrg lib=$ladir/$old_library 2216e1e1713cSmrg if test "$linkmode,$pass" = "prog,link"; then 2217e1e1713cSmrg compile_deplibs="$deplib $compile_deplibs" 2218e1e1713cSmrg finalize_deplibs="$deplib $finalize_deplibs" 2219e1e1713cSmrg else 2220e1e1713cSmrg deplibs="$deplib $deplibs" 2221e1e1713cSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2222e1e1713cSmrg fi 2223e1e1713cSmrg continue 2224e1e1713cSmrg fi 2225e1e1713cSmrg fi 2226e1e1713cSmrg ;; 2227e1e1713cSmrg *) ;; 2228e1e1713cSmrg esac 2229e1e1713cSmrg fi 2230e1e1713cSmrg fi 2231e1e1713cSmrg ;; # -l 2232e1e1713cSmrg -L*) 2233e1e1713cSmrg case $linkmode in 2234e1e1713cSmrg lib) 2235e1e1713cSmrg deplibs="$deplib $deplibs" 2236e1e1713cSmrg test "$pass" = conv && continue 2237e1e1713cSmrg newdependency_libs="$deplib $newdependency_libs" 2238e1e1713cSmrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2239e1e1713cSmrg ;; 2240e1e1713cSmrg prog) 2241e1e1713cSmrg if test "$pass" = conv; then 2242e1e1713cSmrg deplibs="$deplib $deplibs" 2243e1e1713cSmrg continue 2244e1e1713cSmrg fi 2245e1e1713cSmrg if test "$pass" = scan; then 2246e1e1713cSmrg deplibs="$deplib $deplibs" 2247e1e1713cSmrg else 2248e1e1713cSmrg compile_deplibs="$deplib $compile_deplibs" 2249e1e1713cSmrg finalize_deplibs="$deplib $finalize_deplibs" 2250e1e1713cSmrg fi 2251e1e1713cSmrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2252e1e1713cSmrg ;; 2253e1e1713cSmrg *) 2254e1e1713cSmrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 2255e1e1713cSmrg ;; 2256e1e1713cSmrg esac # linkmode 2257e1e1713cSmrg continue 2258e1e1713cSmrg ;; # -L 2259e1e1713cSmrg -R*) 2260e1e1713cSmrg if test "$pass" = link; then 2261e1e1713cSmrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 2262e1e1713cSmrg # Make sure the xrpath contains only unique directories. 2263e1e1713cSmrg case "$xrpath " in 2264e1e1713cSmrg *" $dir "*) ;; 2265e1e1713cSmrg *) xrpath="$xrpath $dir" ;; 2266e1e1713cSmrg esac 2267e1e1713cSmrg fi 2268e1e1713cSmrg deplibs="$deplib $deplibs" 2269e1e1713cSmrg continue 2270e1e1713cSmrg ;; 2271e1e1713cSmrg *.la) lib="$deplib" ;; 2272e1e1713cSmrg *.$libext) 2273e1e1713cSmrg if test "$pass" = conv; then 2274e1e1713cSmrg deplibs="$deplib $deplibs" 2275e1e1713cSmrg continue 2276e1e1713cSmrg fi 2277e1e1713cSmrg case $linkmode in 2278e1e1713cSmrg lib) 2279e1e1713cSmrg valid_a_lib=no 2280e1e1713cSmrg case $deplibs_check_method in 2281e1e1713cSmrg match_pattern*) 2282e1e1713cSmrg set dummy $deplibs_check_method 2283e1e1713cSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 2284e1e1713cSmrg if eval $echo \"$deplib\" 2>/dev/null \ 2285e1e1713cSmrg | $SED 10q \ 2286e1e1713cSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 2287e1e1713cSmrg valid_a_lib=yes 2288e1e1713cSmrg fi 2289e1e1713cSmrg ;; 2290e1e1713cSmrg pass_all) 2291e1e1713cSmrg valid_a_lib=yes 2292e1e1713cSmrg ;; 2293e1e1713cSmrg esac 2294e1e1713cSmrg if test "$valid_a_lib" != yes; then 2295e1e1713cSmrg $echo 2296e1e1713cSmrg $echo "*** Warning: Trying to link with static lib archive $deplib." 2297e1e1713cSmrg $echo "*** I have the capability to make that library automatically link in when" 2298e1e1713cSmrg $echo "*** you link to this library. But I can only do this if you have a" 2299e1e1713cSmrg $echo "*** shared version of the library, which you do not appear to have" 2300e1e1713cSmrg $echo "*** because the file extensions .$libext of this argument makes me believe" 2301e1e1713cSmrg $echo "*** that it is just a static archive that I should not used here." 2302e1e1713cSmrg else 2303e1e1713cSmrg $echo 2304e1e1713cSmrg $echo "*** Warning: Linking the shared library $output against the" 2305e1e1713cSmrg $echo "*** static library $deplib is not portable!" 2306e1e1713cSmrg deplibs="$deplib $deplibs" 2307e1e1713cSmrg fi 2308e1e1713cSmrg continue 2309e1e1713cSmrg ;; 2310e1e1713cSmrg prog) 2311e1e1713cSmrg if test "$pass" != link; then 2312e1e1713cSmrg deplibs="$deplib $deplibs" 2313e1e1713cSmrg else 2314e1e1713cSmrg compile_deplibs="$deplib $compile_deplibs" 2315e1e1713cSmrg finalize_deplibs="$deplib $finalize_deplibs" 2316e1e1713cSmrg fi 2317e1e1713cSmrg continue 2318e1e1713cSmrg ;; 2319e1e1713cSmrg esac # linkmode 2320e1e1713cSmrg ;; # *.$libext 2321e1e1713cSmrg *.lo | *.$objext) 2322e1e1713cSmrg if test "$pass" = conv; then 2323e1e1713cSmrg deplibs="$deplib $deplibs" 2324e1e1713cSmrg elif test "$linkmode" = prog; then 2325e1e1713cSmrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 2326e1e1713cSmrg # If there is no dlopen support or we're linking statically, 2327e1e1713cSmrg # we need to preload. 2328e1e1713cSmrg newdlprefiles="$newdlprefiles $deplib" 2329e1e1713cSmrg compile_deplibs="$deplib $compile_deplibs" 2330e1e1713cSmrg finalize_deplibs="$deplib $finalize_deplibs" 2331e1e1713cSmrg else 2332e1e1713cSmrg newdlfiles="$newdlfiles $deplib" 2333e1e1713cSmrg fi 2334e1e1713cSmrg fi 2335e1e1713cSmrg continue 2336e1e1713cSmrg ;; 2337e1e1713cSmrg %DEPLIBS%) 2338e1e1713cSmrg alldeplibs=yes 2339e1e1713cSmrg continue 2340e1e1713cSmrg ;; 2341e1e1713cSmrg esac # case $deplib 2342e1e1713cSmrg if test "$found" = yes || test -f "$lib"; then : 2343e1e1713cSmrg else 2344e1e1713cSmrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 2345e1e1713cSmrg exit $EXIT_FAILURE 2346e1e1713cSmrg fi 23477a84e134Smrg 2348e1e1713cSmrg # Check to see that this really is a libtool archive. 2349e1e1713cSmrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2350e1e1713cSmrg else 2351e1e1713cSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2352e1e1713cSmrg exit $EXIT_FAILURE 2353e1e1713cSmrg fi 23547a84e134Smrg 2355e1e1713cSmrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2356e1e1713cSmrg test "X$ladir" = "X$lib" && ladir="." 23577a84e134Smrg 2358e1e1713cSmrg dlname= 2359e1e1713cSmrg dlopen= 2360e1e1713cSmrg dlpreopen= 2361e1e1713cSmrg libdir= 2362e1e1713cSmrg library_names= 2363e1e1713cSmrg old_library= 2364e1e1713cSmrg # If the library was installed with an old release of libtool, 2365e1e1713cSmrg # it will not redefine variables installed, or shouldnotlink 2366e1e1713cSmrg installed=yes 2367e1e1713cSmrg shouldnotlink=no 2368e1e1713cSmrg avoidtemprpath= 23697a84e134Smrg 23707a84e134Smrg 2371e1e1713cSmrg # Read the .la file 2372e1e1713cSmrg case $lib in 2373e1e1713cSmrg */* | *\\*) . $lib ;; 2374e1e1713cSmrg *) . ./$lib ;; 2375775e7de9Smrg esac 23767a84e134Smrg 2377e1e1713cSmrg if test "$linkmode,$pass" = "lib,link" || 2378e1e1713cSmrg test "$linkmode,$pass" = "prog,scan" || 2379e1e1713cSmrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 2380e1e1713cSmrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 2381e1e1713cSmrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 2382e1e1713cSmrg fi 23837a84e134Smrg 2384e1e1713cSmrg if test "$pass" = conv; then 2385e1e1713cSmrg # Only check for convenience libraries 2386e1e1713cSmrg deplibs="$lib $deplibs" 2387e1e1713cSmrg if test -z "$libdir"; then 2388e1e1713cSmrg if test -z "$old_library"; then 2389e1e1713cSmrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2390e1e1713cSmrg exit $EXIT_FAILURE 2391e1e1713cSmrg fi 2392e1e1713cSmrg # It is a libtool convenience library, so add in its objects. 2393e1e1713cSmrg convenience="$convenience $ladir/$objdir/$old_library" 2394e1e1713cSmrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 2395e1e1713cSmrg tmp_libs= 2396e1e1713cSmrg for deplib in $dependency_libs; do 2397e1e1713cSmrg deplibs="$deplib $deplibs" 2398e1e1713cSmrg if test "X$duplicate_deps" = "Xyes" ; then 2399e1e1713cSmrg case "$tmp_libs " in 2400e1e1713cSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2401e1e1713cSmrg esac 2402e1e1713cSmrg fi 2403e1e1713cSmrg tmp_libs="$tmp_libs $deplib" 2404e1e1713cSmrg done 2405e1e1713cSmrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 2406e1e1713cSmrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 2407e1e1713cSmrg exit $EXIT_FAILURE 2408e1e1713cSmrg fi 2409e1e1713cSmrg continue 2410e1e1713cSmrg fi # $pass = conv 24117a84e134Smrg 24127a84e134Smrg 2413e1e1713cSmrg # Get the name of the library we link against. 2414e1e1713cSmrg linklib= 2415e1e1713cSmrg for l in $old_library $library_names; do 2416e1e1713cSmrg linklib="$l" 2417e1e1713cSmrg done 2418e1e1713cSmrg if test -z "$linklib"; then 2419e1e1713cSmrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2420e1e1713cSmrg exit $EXIT_FAILURE 24217a84e134Smrg fi 24227a84e134Smrg 2423e1e1713cSmrg # This library was specified with -dlopen. 2424e1e1713cSmrg if test "$pass" = dlopen; then 2425e1e1713cSmrg if test -z "$libdir"; then 2426e1e1713cSmrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 2427e1e1713cSmrg exit $EXIT_FAILURE 2428e1e1713cSmrg fi 2429e1e1713cSmrg if test -z "$dlname" || 2430e1e1713cSmrg test "$dlopen_support" != yes || 2431e1e1713cSmrg test "$build_libtool_libs" = no; then 2432e1e1713cSmrg # If there is no dlname, no dlopen support or we're linking 2433e1e1713cSmrg # statically, we need to preload. We also need to preload any 2434e1e1713cSmrg # dependent libraries so libltdl's deplib preloader doesn't 2435e1e1713cSmrg # bomb out in the load deplibs phase. 2436e1e1713cSmrg dlprefiles="$dlprefiles $lib $dependency_libs" 2437e1e1713cSmrg else 2438e1e1713cSmrg newdlfiles="$newdlfiles $lib" 2439e1e1713cSmrg fi 2440e1e1713cSmrg continue 2441e1e1713cSmrg fi # $pass = dlopen 24427a84e134Smrg 2443e1e1713cSmrg # We need an absolute path. 2444e1e1713cSmrg case $ladir in 2445e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 2446e1e1713cSmrg *) 2447e1e1713cSmrg abs_ladir=`cd "$ladir" && pwd` 2448e1e1713cSmrg if test -z "$abs_ladir"; then 2449e1e1713cSmrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 2450e1e1713cSmrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 2451e1e1713cSmrg abs_ladir="$ladir" 2452e1e1713cSmrg fi 2453e1e1713cSmrg ;; 2454e1e1713cSmrg esac 2455e1e1713cSmrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 24567a84e134Smrg 2457e1e1713cSmrg # Find the relevant object directory and library name. 2458e1e1713cSmrg if test "X$installed" = Xyes; then 2459e1e1713cSmrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2460e1e1713cSmrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 2461e1e1713cSmrg dir="$ladir" 2462e1e1713cSmrg absdir="$abs_ladir" 2463e1e1713cSmrg libdir="$abs_ladir" 2464e1e1713cSmrg else 2465e1e1713cSmrg dir="$libdir" 2466e1e1713cSmrg absdir="$libdir" 2467e1e1713cSmrg fi 2468e1e1713cSmrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 2469e1e1713cSmrg else 2470e1e1713cSmrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2471e1e1713cSmrg dir="$ladir" 2472e1e1713cSmrg absdir="$abs_ladir" 2473e1e1713cSmrg # Remove this search path later 2474e1e1713cSmrg notinst_path="$notinst_path $abs_ladir" 2475e1e1713cSmrg else 2476e1e1713cSmrg dir="$ladir/$objdir" 2477e1e1713cSmrg absdir="$abs_ladir/$objdir" 2478e1e1713cSmrg # Remove this search path later 2479e1e1713cSmrg notinst_path="$notinst_path $abs_ladir" 2480e1e1713cSmrg fi 2481e1e1713cSmrg fi # $installed = yes 2482e1e1713cSmrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 24837a84e134Smrg 2484e1e1713cSmrg # This library was specified with -dlpreopen. 2485e1e1713cSmrg if test "$pass" = dlpreopen; then 2486e1e1713cSmrg if test -z "$libdir"; then 2487e1e1713cSmrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 2488e1e1713cSmrg exit $EXIT_FAILURE 2489e1e1713cSmrg fi 2490e1e1713cSmrg # Prefer using a static library (so that no silly _DYNAMIC symbols 2491e1e1713cSmrg # are required to link). 2492e1e1713cSmrg if test -n "$old_library"; then 2493e1e1713cSmrg newdlprefiles="$newdlprefiles $dir/$old_library" 2494e1e1713cSmrg # Otherwise, use the dlname, so that lt_dlopen finds it. 2495e1e1713cSmrg elif test -n "$dlname"; then 2496e1e1713cSmrg newdlprefiles="$newdlprefiles $dir/$dlname" 2497e1e1713cSmrg else 2498e1e1713cSmrg newdlprefiles="$newdlprefiles $dir/$linklib" 2499e1e1713cSmrg fi 2500e1e1713cSmrg fi # $pass = dlpreopen 25017a84e134Smrg 2502e1e1713cSmrg if test -z "$libdir"; then 2503e1e1713cSmrg # Link the convenience library 2504e1e1713cSmrg if test "$linkmode" = lib; then 2505e1e1713cSmrg deplibs="$dir/$old_library $deplibs" 2506e1e1713cSmrg elif test "$linkmode,$pass" = "prog,link"; then 2507e1e1713cSmrg compile_deplibs="$dir/$old_library $compile_deplibs" 2508e1e1713cSmrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 2509e1e1713cSmrg else 2510e1e1713cSmrg deplibs="$lib $deplibs" # used for prog,scan pass 2511e1e1713cSmrg fi 2512e1e1713cSmrg continue 2513e1e1713cSmrg fi 25147a84e134Smrg 25157a84e134Smrg 2516e1e1713cSmrg if test "$linkmode" = prog && test "$pass" != link; then 2517e1e1713cSmrg newlib_search_path="$newlib_search_path $ladir" 2518e1e1713cSmrg deplibs="$lib $deplibs" 25197a84e134Smrg 2520e1e1713cSmrg linkalldeplibs=no 2521e1e1713cSmrg if test "$link_all_deplibs" != no || test -z "$library_names" || 2522e1e1713cSmrg test "$build_libtool_libs" = no; then 2523e1e1713cSmrg linkalldeplibs=yes 2524e1e1713cSmrg fi 25257a84e134Smrg 2526e1e1713cSmrg tmp_libs= 2527e1e1713cSmrg for deplib in $dependency_libs; do 2528e1e1713cSmrg case $deplib in 2529e1e1713cSmrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 2530e1e1713cSmrg esac 2531e1e1713cSmrg # Need to link against all dependency_libs? 2532e1e1713cSmrg if test "$linkalldeplibs" = yes; then 2533e1e1713cSmrg deplibs="$deplib $deplibs" 2534e1e1713cSmrg else 2535e1e1713cSmrg # Need to hardcode shared library paths 2536e1e1713cSmrg # or/and link against static libraries 2537e1e1713cSmrg newdependency_libs="$deplib $newdependency_libs" 2538e1e1713cSmrg fi 2539e1e1713cSmrg if test "X$duplicate_deps" = "Xyes" ; then 2540e1e1713cSmrg case "$tmp_libs " in 2541e1e1713cSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2542e1e1713cSmrg esac 2543e1e1713cSmrg fi 2544e1e1713cSmrg tmp_libs="$tmp_libs $deplib" 2545e1e1713cSmrg done # for deplib 2546e1e1713cSmrg continue 2547e1e1713cSmrg fi # $linkmode = prog... 25487a84e134Smrg 2549e1e1713cSmrg if test "$linkmode,$pass" = "prog,link"; then 2550e1e1713cSmrg if test -n "$library_names" && 2551e1e1713cSmrg { { test "$prefer_static_libs" = no || 2552e1e1713cSmrg test "$prefer_static_libs,$installed" = "built,yes"; } || 2553e1e1713cSmrg test -z "$old_library"; }; then 2554e1e1713cSmrg # We need to hardcode the library path 2555e1e1713cSmrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 2556e1e1713cSmrg # Make sure the rpath contains only unique directories. 2557e1e1713cSmrg case "$temp_rpath " in 2558e1e1713cSmrg *" $dir "*) ;; 2559e1e1713cSmrg *" $absdir "*) ;; 2560e1e1713cSmrg *) temp_rpath="$temp_rpath $absdir" ;; 2561e1e1713cSmrg esac 2562e1e1713cSmrg fi 25637a84e134Smrg 2564e1e1713cSmrg # Hardcode the library path. 2565e1e1713cSmrg # Skip directories that are in the system default run-time 2566e1e1713cSmrg # search path. 2567e1e1713cSmrg case " $sys_lib_dlsearch_path " in 2568e1e1713cSmrg *" $absdir "*) ;; 2569e1e1713cSmrg *) 2570e1e1713cSmrg case "$compile_rpath " in 2571e1e1713cSmrg *" $absdir "*) ;; 2572e1e1713cSmrg *) compile_rpath="$compile_rpath $absdir" 2573e1e1713cSmrg esac 2574e1e1713cSmrg ;; 2575e1e1713cSmrg esac 2576e1e1713cSmrg case " $sys_lib_dlsearch_path " in 2577e1e1713cSmrg *" $libdir "*) ;; 2578e1e1713cSmrg *) 2579e1e1713cSmrg case "$finalize_rpath " in 2580e1e1713cSmrg *" $libdir "*) ;; 2581e1e1713cSmrg *) finalize_rpath="$finalize_rpath $libdir" 2582e1e1713cSmrg esac 2583e1e1713cSmrg ;; 2584e1e1713cSmrg esac 2585e1e1713cSmrg fi # $linkmode,$pass = prog,link... 2586775e7de9Smrg 2587e1e1713cSmrg if test "$alldeplibs" = yes && 2588e1e1713cSmrg { test "$deplibs_check_method" = pass_all || 2589e1e1713cSmrg { test "$build_libtool_libs" = yes && 2590e1e1713cSmrg test -n "$library_names"; }; }; then 2591e1e1713cSmrg # We only need to search for static libraries 2592e1e1713cSmrg continue 2593e1e1713cSmrg fi 25947a84e134Smrg fi 25957a84e134Smrg 2596e1e1713cSmrg link_static=no # Whether the deplib will be linked statically 2597e1e1713cSmrg use_static_libs=$prefer_static_libs 2598e1e1713cSmrg if test "$use_static_libs" = built && test "$installed" = yes ; then 2599e1e1713cSmrg use_static_libs=no 2600e1e1713cSmrg fi 2601e1e1713cSmrg if test -n "$library_names" && 2602e1e1713cSmrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 2603e1e1713cSmrg if test "$installed" = no; then 2604e1e1713cSmrg notinst_deplibs="$notinst_deplibs $lib" 2605e1e1713cSmrg need_relink=yes 2606e1e1713cSmrg fi 2607e1e1713cSmrg # This is a shared library 26087a84e134Smrg 2609e1e1713cSmrg # Warn about portability, can't link against -module's on 2610e1e1713cSmrg # some systems (darwin) 2611e1e1713cSmrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 2612e1e1713cSmrg $echo 2613e1e1713cSmrg if test "$linkmode" = prog; then 2614e1e1713cSmrg $echo "*** Warning: Linking the executable $output against the loadable module" 2615e1e1713cSmrg else 2616e1e1713cSmrg $echo "*** Warning: Linking the shared library $output against the loadable module" 2617e1e1713cSmrg fi 2618e1e1713cSmrg $echo "*** $linklib is not portable!" 2619e1e1713cSmrg fi 2620e1e1713cSmrg if test "$linkmode" = lib && 2621e1e1713cSmrg test "$hardcode_into_libs" = yes; then 2622e1e1713cSmrg # Hardcode the library path. 2623e1e1713cSmrg # Skip directories that are in the system default run-time 2624e1e1713cSmrg # search path. 2625e1e1713cSmrg case " $sys_lib_dlsearch_path " in 2626e1e1713cSmrg *" $absdir "*) ;; 2627e1e1713cSmrg *) 2628e1e1713cSmrg case "$compile_rpath " in 2629e1e1713cSmrg *" $absdir "*) ;; 2630e1e1713cSmrg *) compile_rpath="$compile_rpath $absdir" 2631e1e1713cSmrg esac 2632e1e1713cSmrg ;; 2633e1e1713cSmrg esac 2634e1e1713cSmrg case " $sys_lib_dlsearch_path " in 2635e1e1713cSmrg *" $libdir "*) ;; 2636e1e1713cSmrg *) 2637e1e1713cSmrg case "$finalize_rpath " in 2638e1e1713cSmrg *" $libdir "*) ;; 2639e1e1713cSmrg *) finalize_rpath="$finalize_rpath $libdir" 2640e1e1713cSmrg esac 2641e1e1713cSmrg ;; 2642e1e1713cSmrg esac 2643e1e1713cSmrg fi 2644775e7de9Smrg 2645e1e1713cSmrg if test -n "$old_archive_from_expsyms_cmds"; then 2646e1e1713cSmrg # figure out the soname 2647e1e1713cSmrg set dummy $library_names 2648e1e1713cSmrg realname="$2" 2649e1e1713cSmrg shift; shift 2650e1e1713cSmrg libname=`eval \\$echo \"$libname_spec\"` 2651e1e1713cSmrg # use dlname if we got it. it's perfectly good, no? 2652e1e1713cSmrg if test -n "$dlname"; then 2653e1e1713cSmrg soname="$dlname" 2654e1e1713cSmrg elif test -n "$soname_spec"; then 2655e1e1713cSmrg # bleh windows 2656e1e1713cSmrg case $host in 2657e1e1713cSmrg *cygwin* | mingw*) 2658e1e1713cSmrg major=`expr $current - $age` 2659e1e1713cSmrg versuffix="-$major" 2660e1e1713cSmrg ;; 2661e1e1713cSmrg esac 2662e1e1713cSmrg eval soname=\"$soname_spec\" 2663e1e1713cSmrg else 2664e1e1713cSmrg soname="$realname" 2665e1e1713cSmrg fi 2666775e7de9Smrg 2667e1e1713cSmrg # Make a new name for the extract_expsyms_cmds to use 2668e1e1713cSmrg soroot="$soname" 2669e1e1713cSmrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 2670e1e1713cSmrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 2671775e7de9Smrg 2672e1e1713cSmrg # If the library has no export list, then create one now 2673e1e1713cSmrg if test -f "$output_objdir/$soname-def"; then : 2674e1e1713cSmrg else 2675e1e1713cSmrg $show "extracting exported symbol list from \`$soname'" 2676e1e1713cSmrg save_ifs="$IFS"; IFS='~' 2677e1e1713cSmrg cmds=$extract_expsyms_cmds 2678e1e1713cSmrg for cmd in $cmds; do 2679e1e1713cSmrg IFS="$save_ifs" 2680e1e1713cSmrg eval cmd=\"$cmd\" 2681e1e1713cSmrg $show "$cmd" 2682e1e1713cSmrg $run eval "$cmd" || exit $? 2683e1e1713cSmrg done 2684e1e1713cSmrg IFS="$save_ifs" 2685e1e1713cSmrg fi 2686775e7de9Smrg 2687e1e1713cSmrg # Create $newlib 2688e1e1713cSmrg if test -f "$output_objdir/$newlib"; then :; else 2689e1e1713cSmrg $show "generating import library for \`$soname'" 2690e1e1713cSmrg save_ifs="$IFS"; IFS='~' 2691e1e1713cSmrg cmds=$old_archive_from_expsyms_cmds 2692e1e1713cSmrg for cmd in $cmds; do 2693e1e1713cSmrg IFS="$save_ifs" 2694e1e1713cSmrg eval cmd=\"$cmd\" 2695e1e1713cSmrg $show "$cmd" 2696e1e1713cSmrg $run eval "$cmd" || exit $? 2697e1e1713cSmrg done 2698e1e1713cSmrg IFS="$save_ifs" 2699e1e1713cSmrg fi 2700e1e1713cSmrg # make sure the library variables are pointing to the new library 2701e1e1713cSmrg dir=$output_objdir 2702e1e1713cSmrg linklib=$newlib 2703e1e1713cSmrg fi # test -n "$old_archive_from_expsyms_cmds" 27047a84e134Smrg 2705e1e1713cSmrg if test "$linkmode" = prog || test "$mode" != relink; then 2706e1e1713cSmrg add_shlibpath= 2707e1e1713cSmrg add_dir= 2708e1e1713cSmrg add= 2709e1e1713cSmrg lib_linked=yes 2710e1e1713cSmrg case $hardcode_action in 2711e1e1713cSmrg immediate | unsupported) 2712e1e1713cSmrg if test "$hardcode_direct" = no; then 2713e1e1713cSmrg add="$dir/$linklib" 2714e1e1713cSmrg case $host in 2715e1e1713cSmrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 2716e1e1713cSmrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 2717e1e1713cSmrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 2718e1e1713cSmrg *-*-unixware7*) add_dir="-L$dir" ;; 2719e1e1713cSmrg *-*-darwin* ) 2720e1e1713cSmrg # if the lib is a module then we can not link against 2721e1e1713cSmrg # it, someone is ignoring the new warnings I added 2722e1e1713cSmrg if /usr/bin/file -L $add 2> /dev/null | 2723e1e1713cSmrg $EGREP ": [^:]* bundle" >/dev/null ; then 2724e1e1713cSmrg $echo "** Warning, lib $linklib is a module, not a shared library" 2725e1e1713cSmrg if test -z "$old_library" ; then 2726e1e1713cSmrg $echo 2727e1e1713cSmrg $echo "** And there doesn't seem to be a static archive available" 2728e1e1713cSmrg $echo "** The link will probably fail, sorry" 2729e1e1713cSmrg else 2730e1e1713cSmrg add="$dir/$old_library" 2731e1e1713cSmrg fi 2732e1e1713cSmrg fi 2733e1e1713cSmrg esac 2734e1e1713cSmrg elif test "$hardcode_minus_L" = no; then 2735e1e1713cSmrg case $host in 2736e1e1713cSmrg *-*-sunos*) add_shlibpath="$dir" ;; 2737e1e1713cSmrg esac 2738e1e1713cSmrg add_dir="-L$dir" 2739e1e1713cSmrg add="-l$name" 2740e1e1713cSmrg elif test "$hardcode_shlibpath_var" = no; then 2741e1e1713cSmrg add_shlibpath="$dir" 2742e1e1713cSmrg add="-l$name" 2743e1e1713cSmrg else 2744e1e1713cSmrg lib_linked=no 2745e1e1713cSmrg fi 2746e1e1713cSmrg ;; 2747e1e1713cSmrg relink) 2748e1e1713cSmrg if test "$hardcode_direct" = yes; then 2749e1e1713cSmrg add="$dir/$linklib" 2750e1e1713cSmrg elif test "$hardcode_minus_L" = yes; then 2751e1e1713cSmrg add_dir="-L$dir" 2752e1e1713cSmrg # Try looking first in the location we're being installed to. 2753e1e1713cSmrg if test -n "$inst_prefix_dir"; then 2754e1e1713cSmrg case $libdir in 2755e1e1713cSmrg [\\/]*) 2756e1e1713cSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2757e1e1713cSmrg ;; 2758e1e1713cSmrg esac 2759e1e1713cSmrg fi 2760e1e1713cSmrg add="-l$name" 2761e1e1713cSmrg elif test "$hardcode_shlibpath_var" = yes; then 2762e1e1713cSmrg add_shlibpath="$dir" 2763e1e1713cSmrg add="-l$name" 2764e1e1713cSmrg else 2765e1e1713cSmrg lib_linked=no 2766e1e1713cSmrg fi 2767e1e1713cSmrg ;; 2768e1e1713cSmrg *) lib_linked=no ;; 2769e1e1713cSmrg esac 27707a84e134Smrg 2771e1e1713cSmrg if test "$lib_linked" != yes; then 2772e1e1713cSmrg $echo "$modename: configuration error: unsupported hardcode properties" 2773e1e1713cSmrg exit $EXIT_FAILURE 2774e1e1713cSmrg fi 27757a84e134Smrg 2776e1e1713cSmrg if test -n "$add_shlibpath"; then 2777e1e1713cSmrg case :$compile_shlibpath: in 2778e1e1713cSmrg *":$add_shlibpath:"*) ;; 2779e1e1713cSmrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 2780e1e1713cSmrg esac 2781e1e1713cSmrg fi 2782e1e1713cSmrg if test "$linkmode" = prog; then 2783e1e1713cSmrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 2784e1e1713cSmrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 2785e1e1713cSmrg else 2786e1e1713cSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2787e1e1713cSmrg test -n "$add" && deplibs="$add $deplibs" 2788e1e1713cSmrg if test "$hardcode_direct" != yes && \ 2789e1e1713cSmrg test "$hardcode_minus_L" != yes && \ 2790e1e1713cSmrg test "$hardcode_shlibpath_var" = yes; then 2791e1e1713cSmrg case :$finalize_shlibpath: in 2792e1e1713cSmrg *":$libdir:"*) ;; 2793e1e1713cSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2794e1e1713cSmrg esac 2795e1e1713cSmrg fi 2796e1e1713cSmrg fi 2797e1e1713cSmrg fi 27987a84e134Smrg 2799e1e1713cSmrg if test "$linkmode" = prog || test "$mode" = relink; then 2800e1e1713cSmrg add_shlibpath= 2801e1e1713cSmrg add_dir= 2802e1e1713cSmrg add= 2803e1e1713cSmrg # Finalize command for both is simple: just hardcode it. 2804e1e1713cSmrg if test "$hardcode_direct" = yes; then 2805e1e1713cSmrg add="$libdir/$linklib" 2806e1e1713cSmrg elif test "$hardcode_minus_L" = yes; then 2807e1e1713cSmrg add_dir="-L$libdir" 2808e1e1713cSmrg add="-l$name" 2809e1e1713cSmrg elif test "$hardcode_shlibpath_var" = yes; then 2810e1e1713cSmrg case :$finalize_shlibpath: in 2811e1e1713cSmrg *":$libdir:"*) ;; 2812e1e1713cSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2813e1e1713cSmrg esac 2814e1e1713cSmrg add="-l$name" 2815e1e1713cSmrg elif test "$hardcode_automatic" = yes; then 2816e1e1713cSmrg if test -n "$inst_prefix_dir" && 2817e1e1713cSmrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 2818e1e1713cSmrg add="$inst_prefix_dir$libdir/$linklib" 2819e1e1713cSmrg else 2820e1e1713cSmrg add="$libdir/$linklib" 2821e1e1713cSmrg fi 2822e1e1713cSmrg else 2823e1e1713cSmrg # We cannot seem to hardcode it, guess we'll fake it. 2824e1e1713cSmrg add_dir="-L$libdir" 2825e1e1713cSmrg # Try looking first in the location we're being installed to. 2826e1e1713cSmrg if test -n "$inst_prefix_dir"; then 2827e1e1713cSmrg case $libdir in 2828e1e1713cSmrg [\\/]*) 2829e1e1713cSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2830e1e1713cSmrg ;; 2831e1e1713cSmrg esac 2832e1e1713cSmrg fi 2833e1e1713cSmrg add="-l$name" 2834e1e1713cSmrg fi 28357a84e134Smrg 2836e1e1713cSmrg if test "$linkmode" = prog; then 2837e1e1713cSmrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 2838e1e1713cSmrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 2839e1e1713cSmrg else 2840e1e1713cSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2841e1e1713cSmrg test -n "$add" && deplibs="$add $deplibs" 2842e1e1713cSmrg fi 2843e1e1713cSmrg fi 2844e1e1713cSmrg elif test "$linkmode" = prog; then 2845e1e1713cSmrg # Here we assume that one of hardcode_direct or hardcode_minus_L 2846e1e1713cSmrg # is not unsupported. This is valid on all known static and 2847e1e1713cSmrg # shared platforms. 2848e1e1713cSmrg if test "$hardcode_direct" != unsupported; then 2849e1e1713cSmrg test -n "$old_library" && linklib="$old_library" 2850e1e1713cSmrg compile_deplibs="$dir/$linklib $compile_deplibs" 2851e1e1713cSmrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 2852e1e1713cSmrg else 2853e1e1713cSmrg compile_deplibs="-l$name -L$dir $compile_deplibs" 2854e1e1713cSmrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 2855e1e1713cSmrg fi 2856e1e1713cSmrg elif test "$build_libtool_libs" = yes; then 2857e1e1713cSmrg # Not a shared library 2858e1e1713cSmrg if test "$deplibs_check_method" != pass_all; then 2859e1e1713cSmrg # We're trying link a shared library against a static one 2860e1e1713cSmrg # but the system doesn't support it. 2861775e7de9Smrg 2862e1e1713cSmrg # Just print a warning and add the library to dependency_libs so 2863e1e1713cSmrg # that the program can be linked against the static library. 2864e1e1713cSmrg $echo 2865e1e1713cSmrg $echo "*** Warning: This system can not link to static lib archive $lib." 2866e1e1713cSmrg $echo "*** I have the capability to make that library automatically link in when" 2867e1e1713cSmrg $echo "*** you link to this library. But I can only do this if you have a" 2868e1e1713cSmrg $echo "*** shared version of the library, which you do not appear to have." 2869e1e1713cSmrg if test "$module" = yes; then 2870e1e1713cSmrg $echo "*** But as you try to build a module library, libtool will still create " 2871e1e1713cSmrg $echo "*** a static module, that should work as long as the dlopening application" 2872e1e1713cSmrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 2873e1e1713cSmrg if test -z "$global_symbol_pipe"; then 2874e1e1713cSmrg $echo 2875e1e1713cSmrg $echo "*** However, this would only work if libtool was able to extract symbol" 2876e1e1713cSmrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2877e1e1713cSmrg $echo "*** not find such a program. So, this module is probably useless." 2878e1e1713cSmrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 2879e1e1713cSmrg fi 2880e1e1713cSmrg if test "$build_old_libs" = no; then 2881e1e1713cSmrg build_libtool_libs=module 2882e1e1713cSmrg build_old_libs=yes 2883e1e1713cSmrg else 2884e1e1713cSmrg build_libtool_libs=no 2885e1e1713cSmrg fi 2886e1e1713cSmrg fi 2887e1e1713cSmrg else 2888e1e1713cSmrg deplibs="$dir/$old_library $deplibs" 2889e1e1713cSmrg link_static=yes 2890e1e1713cSmrg fi 2891e1e1713cSmrg fi # link shared/static library? 28927a84e134Smrg 2893e1e1713cSmrg if test "$linkmode" = lib; then 2894e1e1713cSmrg if test -n "$dependency_libs" && 2895e1e1713cSmrg { test "$hardcode_into_libs" != yes || 2896e1e1713cSmrg test "$build_old_libs" = yes || 2897e1e1713cSmrg test "$link_static" = yes; }; then 2898e1e1713cSmrg # Extract -R from dependency_libs 2899e1e1713cSmrg temp_deplibs= 2900e1e1713cSmrg for libdir in $dependency_libs; do 2901e1e1713cSmrg case $libdir in 2902e1e1713cSmrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 2903e1e1713cSmrg case " $xrpath " in 2904e1e1713cSmrg *" $temp_xrpath "*) ;; 2905e1e1713cSmrg *) xrpath="$xrpath $temp_xrpath";; 2906e1e1713cSmrg esac;; 2907e1e1713cSmrg *) temp_deplibs="$temp_deplibs $libdir";; 2908e1e1713cSmrg esac 2909e1e1713cSmrg done 2910e1e1713cSmrg dependency_libs="$temp_deplibs" 2911e1e1713cSmrg fi 29127a84e134Smrg 2913e1e1713cSmrg newlib_search_path="$newlib_search_path $absdir" 2914e1e1713cSmrg # Link against this library 2915e1e1713cSmrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 2916e1e1713cSmrg # ... and its dependency_libs 2917e1e1713cSmrg tmp_libs= 2918e1e1713cSmrg for deplib in $dependency_libs; do 2919e1e1713cSmrg newdependency_libs="$deplib $newdependency_libs" 2920e1e1713cSmrg if test "X$duplicate_deps" = "Xyes" ; then 2921e1e1713cSmrg case "$tmp_libs " in 2922e1e1713cSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2923e1e1713cSmrg esac 2924e1e1713cSmrg fi 2925e1e1713cSmrg tmp_libs="$tmp_libs $deplib" 2926e1e1713cSmrg done 29277a84e134Smrg 2928e1e1713cSmrg if test "$link_all_deplibs" != no; then 2929e1e1713cSmrg # Add the search paths of all dependency libraries 2930e1e1713cSmrg for deplib in $dependency_libs; do 2931e1e1713cSmrg case $deplib in 2932e1e1713cSmrg -L*) path="$deplib" ;; 2933e1e1713cSmrg *.la) 2934e1e1713cSmrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 2935e1e1713cSmrg test "X$dir" = "X$deplib" && dir="." 2936e1e1713cSmrg # We need an absolute path. 2937e1e1713cSmrg case $dir in 2938e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 2939e1e1713cSmrg *) 2940e1e1713cSmrg absdir=`cd "$dir" && pwd` 2941e1e1713cSmrg if test -z "$absdir"; then 2942e1e1713cSmrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 2943e1e1713cSmrg absdir="$dir" 2944e1e1713cSmrg fi 2945e1e1713cSmrg ;; 2946e1e1713cSmrg esac 2947e1e1713cSmrg if grep "^installed=no" $deplib > /dev/null; then 2948e1e1713cSmrg path="$absdir/$objdir" 2949e1e1713cSmrg else 2950e1e1713cSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2951e1e1713cSmrg if test -z "$libdir"; then 2952e1e1713cSmrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 2953e1e1713cSmrg exit $EXIT_FAILURE 2954e1e1713cSmrg fi 2955e1e1713cSmrg if test "$absdir" != "$libdir"; then 2956e1e1713cSmrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 2957e1e1713cSmrg fi 2958e1e1713cSmrg path="$absdir" 2959e1e1713cSmrg fi 2960e1e1713cSmrg depdepl= 2961e1e1713cSmrg case $host in 2962e1e1713cSmrg *-*-darwin*) 2963e1e1713cSmrg # we do not want to link against static libs, 2964e1e1713cSmrg # but need to link against shared 2965e1e1713cSmrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 2966e1e1713cSmrg eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2967e1e1713cSmrg if test -n "$deplibrary_names" ; then 2968e1e1713cSmrg for tmp in $deplibrary_names ; do 2969e1e1713cSmrg depdepl=$tmp 2970e1e1713cSmrg done 2971e1e1713cSmrg if test -f "$deplibdir/$depdepl" ; then 2972e1e1713cSmrg depdepl="$deplibdir/$depdepl" 2973e1e1713cSmrg elif test -f "$path/$depdepl" ; then 2974e1e1713cSmrg depdepl="$path/$depdepl" 2975e1e1713cSmrg else 2976e1e1713cSmrg # Can't find it, oh well... 2977e1e1713cSmrg depdepl= 2978e1e1713cSmrg fi 2979e1e1713cSmrg # do not add paths which are already there 2980e1e1713cSmrg case " $newlib_search_path " in 2981e1e1713cSmrg *" $path "*) ;; 2982e1e1713cSmrg *) newlib_search_path="$newlib_search_path $path";; 2983e1e1713cSmrg esac 2984e1e1713cSmrg fi 2985e1e1713cSmrg path="" 2986e1e1713cSmrg ;; 2987e1e1713cSmrg *) 2988e1e1713cSmrg path="-L$path" 2989e1e1713cSmrg ;; 2990e1e1713cSmrg esac 2991e1e1713cSmrg ;; 2992e1e1713cSmrg -l*) 2993e1e1713cSmrg case $host in 2994e1e1713cSmrg *-*-darwin*) 2995e1e1713cSmrg # Again, we only want to link against shared libraries 2996e1e1713cSmrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 2997e1e1713cSmrg for tmp in $newlib_search_path ; do 2998e1e1713cSmrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 2999e1e1713cSmrg eval depdepl="$tmp/lib$tmp_libs.dylib" 3000e1e1713cSmrg break 3001e1e1713cSmrg fi 3002e1e1713cSmrg done 3003e1e1713cSmrg path="" 3004e1e1713cSmrg ;; 3005e1e1713cSmrg *) continue ;; 3006e1e1713cSmrg esac 3007e1e1713cSmrg ;; 3008e1e1713cSmrg *) continue ;; 3009e1e1713cSmrg esac 3010e1e1713cSmrg case " $deplibs " in 3011e1e1713cSmrg *" $path "*) ;; 3012e1e1713cSmrg *) deplibs="$path $deplibs" ;; 3013e1e1713cSmrg esac 3014e1e1713cSmrg case " $deplibs " in 3015e1e1713cSmrg *" $depdepl "*) ;; 3016e1e1713cSmrg *) deplibs="$depdepl $deplibs" ;; 3017e1e1713cSmrg esac 3018e1e1713cSmrg done 3019e1e1713cSmrg fi # link_all_deplibs != no 3020e1e1713cSmrg fi # linkmode = lib 3021e1e1713cSmrg done # for deplib in $libs 3022e1e1713cSmrg dependency_libs="$newdependency_libs" 3023e1e1713cSmrg if test "$pass" = dlpreopen; then 3024e1e1713cSmrg # Link the dlpreopened libraries before other libraries 3025e1e1713cSmrg for deplib in $save_deplibs; do 3026e1e1713cSmrg deplibs="$deplib $deplibs" 3027e1e1713cSmrg done 3028e1e1713cSmrg fi 3029e1e1713cSmrg if test "$pass" != dlopen; then 3030e1e1713cSmrg if test "$pass" != conv; then 3031e1e1713cSmrg # Make sure lib_search_path contains only unique directories. 3032e1e1713cSmrg lib_search_path= 3033e1e1713cSmrg for dir in $newlib_search_path; do 3034e1e1713cSmrg case "$lib_search_path " in 3035e1e1713cSmrg *" $dir "*) ;; 3036e1e1713cSmrg *) lib_search_path="$lib_search_path $dir" ;; 3037e1e1713cSmrg esac 3038e1e1713cSmrg done 3039e1e1713cSmrg newlib_search_path= 3040e1e1713cSmrg fi 3041e1e1713cSmrg 3042e1e1713cSmrg if test "$linkmode,$pass" != "prog,link"; then 3043e1e1713cSmrg vars="deplibs" 3044e1e1713cSmrg else 3045e1e1713cSmrg vars="compile_deplibs finalize_deplibs" 3046e1e1713cSmrg fi 3047e1e1713cSmrg for var in $vars dependency_libs; do 3048e1e1713cSmrg # Add libraries to $var in reverse order 3049e1e1713cSmrg eval tmp_libs=\"\$$var\" 3050e1e1713cSmrg new_libs= 3051e1e1713cSmrg for deplib in $tmp_libs; do 3052e1e1713cSmrg # FIXME: Pedantically, this is the right thing to do, so 3053e1e1713cSmrg # that some nasty dependency loop isn't accidentally 3054e1e1713cSmrg # broken: 3055e1e1713cSmrg #new_libs="$deplib $new_libs" 3056e1e1713cSmrg # Pragmatically, this seems to cause very few problems in 3057e1e1713cSmrg # practice: 3058e1e1713cSmrg case $deplib in 3059e1e1713cSmrg -L*) new_libs="$deplib $new_libs" ;; 3060e1e1713cSmrg -R*) ;; 3061e1e1713cSmrg *) 3062e1e1713cSmrg # And here is the reason: when a library appears more 3063e1e1713cSmrg # than once as an explicit dependence of a library, or 3064e1e1713cSmrg # is implicitly linked in more than once by the 3065e1e1713cSmrg # compiler, it is considered special, and multiple 3066e1e1713cSmrg # occurrences thereof are not removed. Compare this 3067e1e1713cSmrg # with having the same library being listed as a 3068e1e1713cSmrg # dependency of multiple other libraries: in this case, 3069e1e1713cSmrg # we know (pedantically, we assume) the library does not 3070e1e1713cSmrg # need to be listed more than once, so we keep only the 3071e1e1713cSmrg # last copy. This is not always right, but it is rare 3072e1e1713cSmrg # enough that we require users that really mean to play 3073e1e1713cSmrg # such unportable linking tricks to link the library 3074e1e1713cSmrg # using -Wl,-lname, so that libtool does not consider it 3075e1e1713cSmrg # for duplicate removal. 3076e1e1713cSmrg case " $specialdeplibs " in 3077e1e1713cSmrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 3078e1e1713cSmrg *) 3079e1e1713cSmrg case " $new_libs " in 3080e1e1713cSmrg *" $deplib "*) ;; 3081e1e1713cSmrg *) new_libs="$deplib $new_libs" ;; 3082e1e1713cSmrg esac 3083e1e1713cSmrg ;; 3084e1e1713cSmrg esac 3085e1e1713cSmrg ;; 3086e1e1713cSmrg esac 3087e1e1713cSmrg done 3088e1e1713cSmrg tmp_libs= 3089e1e1713cSmrg for deplib in $new_libs; do 3090e1e1713cSmrg case $deplib in 3091e1e1713cSmrg -L*) 3092e1e1713cSmrg case " $tmp_libs " in 3093e1e1713cSmrg *" $deplib "*) ;; 3094e1e1713cSmrg *) tmp_libs="$tmp_libs $deplib" ;; 3095e1e1713cSmrg esac 3096e1e1713cSmrg ;; 3097e1e1713cSmrg *) tmp_libs="$tmp_libs $deplib" ;; 3098e1e1713cSmrg esac 3099e1e1713cSmrg done 3100e1e1713cSmrg eval $var=\"$tmp_libs\" 3101e1e1713cSmrg done # for var 3102e1e1713cSmrg fi 3103e1e1713cSmrg # Last step: remove runtime libs from dependency_libs 3104e1e1713cSmrg # (they stay in deplibs) 3105e1e1713cSmrg tmp_libs= 3106e1e1713cSmrg for i in $dependency_libs ; do 3107e1e1713cSmrg case " $predeps $postdeps $compiler_lib_search_path " in 3108e1e1713cSmrg *" $i "*) 3109e1e1713cSmrg i="" 31107a84e134Smrg ;; 31117a84e134Smrg esac 3112e1e1713cSmrg if test -n "$i" ; then 3113e1e1713cSmrg tmp_libs="$tmp_libs $i" 3114e1e1713cSmrg fi 3115e1e1713cSmrg done 3116e1e1713cSmrg dependency_libs=$tmp_libs 3117e1e1713cSmrg done # for pass 3118e1e1713cSmrg if test "$linkmode" = prog; then 3119e1e1713cSmrg dlfiles="$newdlfiles" 3120e1e1713cSmrg dlprefiles="$newdlprefiles" 3121775e7de9Smrg fi 31227a84e134Smrg 3123e1e1713cSmrg case $linkmode in 3124e1e1713cSmrg oldlib) 3125e1e1713cSmrg case " $deplibs" in 3126e1e1713cSmrg *\ -l* | *\ -L*) 3127e1e1713cSmrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; 3128e1e1713cSmrg esac 31297a84e134Smrg 3130e1e1713cSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3131e1e1713cSmrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 3132e1e1713cSmrg fi 31337a84e134Smrg 3134e1e1713cSmrg if test -n "$rpath"; then 3135e1e1713cSmrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 3136e1e1713cSmrg fi 31377a84e134Smrg 3138e1e1713cSmrg if test -n "$xrpath"; then 3139e1e1713cSmrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 3140e1e1713cSmrg fi 31417a84e134Smrg 3142e1e1713cSmrg if test -n "$vinfo"; then 3143e1e1713cSmrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 3144e1e1713cSmrg fi 31457a84e134Smrg 3146e1e1713cSmrg if test -n "$release"; then 3147e1e1713cSmrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 3148e1e1713cSmrg fi 31497a84e134Smrg 3150e1e1713cSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 3151e1e1713cSmrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 3152e1e1713cSmrg fi 31537a84e134Smrg 3154e1e1713cSmrg # Now set the variables for building old libraries. 3155e1e1713cSmrg build_libtool_libs=no 3156e1e1713cSmrg oldlibs="$output" 3157e1e1713cSmrg objs="$objs$old_deplibs" 3158e1e1713cSmrg ;; 31597a84e134Smrg 3160e1e1713cSmrg lib) 3161e1e1713cSmrg # Make sure we only generate libraries of the form `libNAME.la'. 3162e1e1713cSmrg case $outputname in 3163e1e1713cSmrg lib*) 3164e1e1713cSmrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 3165e1e1713cSmrg eval shared_ext=\"$shrext_cmds\" 3166e1e1713cSmrg eval libname=\"$libname_spec\" 3167e1e1713cSmrg ;; 3168e1e1713cSmrg *) 3169e1e1713cSmrg if test "$module" = no; then 3170e1e1713cSmrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 3171e1e1713cSmrg $echo "$help" 1>&2 3172e1e1713cSmrg exit $EXIT_FAILURE 3173e1e1713cSmrg fi 3174e1e1713cSmrg if test "$need_lib_prefix" != no; then 3175e1e1713cSmrg # Add the "lib" prefix for modules if required 3176e1e1713cSmrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3177e1e1713cSmrg eval shared_ext=\"$shrext_cmds\" 3178e1e1713cSmrg eval libname=\"$libname_spec\" 3179e1e1713cSmrg else 3180e1e1713cSmrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3181e1e1713cSmrg fi 3182e1e1713cSmrg ;; 3183e1e1713cSmrg esac 31847a84e134Smrg 3185e1e1713cSmrg if test -n "$objs"; then 3186e1e1713cSmrg if test "$deplibs_check_method" != pass_all; then 3187e1e1713cSmrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 3188e1e1713cSmrg exit $EXIT_FAILURE 3189e1e1713cSmrg else 3190e1e1713cSmrg $echo 3191e1e1713cSmrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 3192e1e1713cSmrg $echo "*** objects $objs is not portable!" 3193e1e1713cSmrg libobjs="$libobjs $objs" 3194e1e1713cSmrg fi 3195e1e1713cSmrg fi 31967a84e134Smrg 3197e1e1713cSmrg if test "$dlself" != no; then 3198e1e1713cSmrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 3199e1e1713cSmrg fi 32007a84e134Smrg 3201e1e1713cSmrg set dummy $rpath 3202e1e1713cSmrg if test "$#" -gt 2; then 3203e1e1713cSmrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 3204e1e1713cSmrg fi 3205e1e1713cSmrg install_libdir="$2" 32067a84e134Smrg 3207e1e1713cSmrg oldlibs= 3208e1e1713cSmrg if test -z "$rpath"; then 3209e1e1713cSmrg if test "$build_libtool_libs" = yes; then 3210e1e1713cSmrg # Building a libtool convenience library. 3211e1e1713cSmrg # Some compilers have problems with a `.al' extension so 3212e1e1713cSmrg # convenience libraries should have the same extension an 3213e1e1713cSmrg # archive normally would. 3214e1e1713cSmrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 3215e1e1713cSmrg build_libtool_libs=convenience 3216e1e1713cSmrg build_old_libs=yes 3217e1e1713cSmrg fi 32187a84e134Smrg 3219e1e1713cSmrg if test -n "$vinfo"; then 3220e1e1713cSmrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 3221e1e1713cSmrg fi 32227a84e134Smrg 3223e1e1713cSmrg if test -n "$release"; then 3224e1e1713cSmrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 3225e1e1713cSmrg fi 3226e1e1713cSmrg else 32277a84e134Smrg 3228e1e1713cSmrg # Parse the version information argument. 3229e1e1713cSmrg save_ifs="$IFS"; IFS=':' 3230e1e1713cSmrg set dummy $vinfo 0 0 0 3231e1e1713cSmrg IFS="$save_ifs" 32327a84e134Smrg 3233e1e1713cSmrg if test -n "$8"; then 3234e1e1713cSmrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 3235e1e1713cSmrg $echo "$help" 1>&2 3236e1e1713cSmrg exit $EXIT_FAILURE 3237e1e1713cSmrg fi 32387a84e134Smrg 3239e1e1713cSmrg # convert absolute version numbers to libtool ages 3240e1e1713cSmrg # this retains compatibility with .la files and attempts 3241e1e1713cSmrg # to make the code below a bit more comprehensible 32427a84e134Smrg 3243e1e1713cSmrg case $vinfo_number in 3244e1e1713cSmrg yes) 3245e1e1713cSmrg number_major="$2" 3246e1e1713cSmrg number_minor="$3" 3247e1e1713cSmrg number_revision="$4" 3248e1e1713cSmrg # 3249e1e1713cSmrg # There are really only two kinds -- those that 3250e1e1713cSmrg # use the current revision as the major version 3251e1e1713cSmrg # and those that subtract age and use age as 3252e1e1713cSmrg # a minor version. But, then there is irix 3253e1e1713cSmrg # which has an extra 1 added just for fun 3254e1e1713cSmrg # 3255e1e1713cSmrg case $version_type in 3256e1e1713cSmrg darwin|linux|osf|windows|none) 3257e1e1713cSmrg current=`expr $number_major + $number_minor` 3258e1e1713cSmrg age="$number_minor" 3259e1e1713cSmrg revision="$number_revision" 3260e1e1713cSmrg ;; 3261e1e1713cSmrg freebsd-aout|freebsd-elf|sunos) 3262e1e1713cSmrg current="$number_major" 3263e1e1713cSmrg revision="$number_minor" 3264e1e1713cSmrg age="0" 3265e1e1713cSmrg ;; 3266e1e1713cSmrg irix|nonstopux) 3267e1e1713cSmrg current=`expr $number_major + $number_minor` 3268e1e1713cSmrg age="$number_minor" 3269e1e1713cSmrg revision="$number_minor" 3270e1e1713cSmrg lt_irix_increment=no 3271e1e1713cSmrg ;; 3272e1e1713cSmrg esac 3273e1e1713cSmrg ;; 3274e1e1713cSmrg no) 3275e1e1713cSmrg current="$2" 3276e1e1713cSmrg revision="$3" 3277e1e1713cSmrg age="$4" 3278e1e1713cSmrg ;; 3279e1e1713cSmrg esac 32807a84e134Smrg 3281e1e1713cSmrg # Check that each of the things are valid numbers. 3282e1e1713cSmrg case $current in 3283e1e1713cSmrg 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]) ;; 3284e1e1713cSmrg *) 3285e1e1713cSmrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 3286e1e1713cSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3287e1e1713cSmrg exit $EXIT_FAILURE 3288e1e1713cSmrg ;; 3289e1e1713cSmrg esac 32907a84e134Smrg 3291e1e1713cSmrg case $revision in 3292e1e1713cSmrg 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]) ;; 3293e1e1713cSmrg *) 3294e1e1713cSmrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 3295e1e1713cSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3296e1e1713cSmrg exit $EXIT_FAILURE 3297e1e1713cSmrg ;; 3298e1e1713cSmrg esac 32997a84e134Smrg 3300e1e1713cSmrg case $age in 3301e1e1713cSmrg 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]) ;; 3302e1e1713cSmrg *) 3303e1e1713cSmrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 3304e1e1713cSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3305e1e1713cSmrg exit $EXIT_FAILURE 3306e1e1713cSmrg ;; 3307e1e1713cSmrg esac 33087a84e134Smrg 3309e1e1713cSmrg if test "$age" -gt "$current"; then 3310e1e1713cSmrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 3311e1e1713cSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3312e1e1713cSmrg exit $EXIT_FAILURE 3313e1e1713cSmrg fi 33147a84e134Smrg 3315e1e1713cSmrg # Calculate the version variables. 3316e1e1713cSmrg major= 3317e1e1713cSmrg versuffix= 3318e1e1713cSmrg verstring= 3319e1e1713cSmrg case $version_type in 3320e1e1713cSmrg none) ;; 33217a84e134Smrg 3322e1e1713cSmrg darwin) 3323e1e1713cSmrg # Like Linux, but with the current version available in 3324e1e1713cSmrg # verstring for coding it into the library header 3325e1e1713cSmrg major=.`expr $current - $age` 3326e1e1713cSmrg versuffix="$major.$age.$revision" 3327e1e1713cSmrg # Darwin ld doesn't like 0 for these options... 3328e1e1713cSmrg minor_current=`expr $current + 1` 3329e1e1713cSmrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 3330e1e1713cSmrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 3331e1e1713cSmrg ;; 33327a84e134Smrg 3333e1e1713cSmrg freebsd-aout) 3334e1e1713cSmrg major=".$current" 3335e1e1713cSmrg versuffix=".$current.$revision"; 3336e1e1713cSmrg ;; 33377a84e134Smrg 3338e1e1713cSmrg freebsd-elf) 3339e1e1713cSmrg major=".$current" 3340e1e1713cSmrg versuffix=".$current"; 3341e1e1713cSmrg ;; 3342775e7de9Smrg 3343e1e1713cSmrg irix | nonstopux) 3344e1e1713cSmrg if test "X$lt_irix_increment" = "Xno"; then 3345e1e1713cSmrg major=`expr $current - $age` 3346e1e1713cSmrg else 3347e1e1713cSmrg major=`expr $current - $age + 1` 3348e1e1713cSmrg fi 3349e1e1713cSmrg case $version_type in 3350e1e1713cSmrg nonstopux) verstring_prefix=nonstopux ;; 3351e1e1713cSmrg *) verstring_prefix=sgi ;; 3352e1e1713cSmrg esac 3353e1e1713cSmrg verstring="$verstring_prefix$major.$revision" 33547a84e134Smrg 3355e1e1713cSmrg # Add in all the interfaces that we are compatible with. 3356e1e1713cSmrg loop=$revision 3357e1e1713cSmrg while test "$loop" -ne 0; do 3358e1e1713cSmrg iface=`expr $revision - $loop` 3359e1e1713cSmrg loop=`expr $loop - 1` 3360e1e1713cSmrg verstring="$verstring_prefix$major.$iface:$verstring" 3361e1e1713cSmrg done 33627a84e134Smrg 3363e1e1713cSmrg # Before this point, $major must not contain `.'. 3364e1e1713cSmrg major=.$major 3365e1e1713cSmrg versuffix="$major.$revision" 3366e1e1713cSmrg ;; 33677a84e134Smrg 3368e1e1713cSmrg linux) 3369e1e1713cSmrg major=.`expr $current - $age` 3370e1e1713cSmrg versuffix="$major.$age.$revision" 3371e1e1713cSmrg ;; 33727a84e134Smrg 3373e1e1713cSmrg osf) 3374e1e1713cSmrg major=.`expr $current - $age` 3375e1e1713cSmrg versuffix=".$current.$age.$revision" 3376e1e1713cSmrg verstring="$current.$age.$revision" 33777a84e134Smrg 3378e1e1713cSmrg # Add in all the interfaces that we are compatible with. 3379e1e1713cSmrg loop=$age 3380e1e1713cSmrg while test "$loop" -ne 0; do 3381e1e1713cSmrg iface=`expr $current - $loop` 3382e1e1713cSmrg loop=`expr $loop - 1` 3383e1e1713cSmrg verstring="$verstring:${iface}.0" 3384e1e1713cSmrg done 33857a84e134Smrg 3386e1e1713cSmrg # Make executables depend on our current version. 3387e1e1713cSmrg verstring="$verstring:${current}.0" 3388e1e1713cSmrg ;; 33897a84e134Smrg 3390e1e1713cSmrg sunos) 3391e1e1713cSmrg major=".$current" 3392e1e1713cSmrg versuffix=".$current.$revision" 3393e1e1713cSmrg ;; 33947a84e134Smrg 3395e1e1713cSmrg windows) 3396e1e1713cSmrg # Use '-' rather than '.', since we only want one 3397e1e1713cSmrg # extension on DOS 8.3 filesystems. 3398e1e1713cSmrg major=`expr $current - $age` 3399e1e1713cSmrg versuffix="-$major" 3400e1e1713cSmrg ;; 34017a84e134Smrg 3402e1e1713cSmrg *) 3403e1e1713cSmrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 3404e1e1713cSmrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 3405e1e1713cSmrg exit $EXIT_FAILURE 3406e1e1713cSmrg ;; 3407e1e1713cSmrg esac 34087a84e134Smrg 3409e1e1713cSmrg # Clear the version info if we defaulted, and they specified a release. 3410e1e1713cSmrg if test -z "$vinfo" && test -n "$release"; then 3411e1e1713cSmrg major= 3412e1e1713cSmrg case $version_type in 3413e1e1713cSmrg darwin) 3414e1e1713cSmrg # we can't check for "0.0" in archive_cmds due to quoting 3415e1e1713cSmrg # problems, so we reset it completely 3416e1e1713cSmrg verstring= 3417775e7de9Smrg ;; 3418e1e1713cSmrg *) 3419e1e1713cSmrg verstring="0.0" 3420e1e1713cSmrg ;; 3421e1e1713cSmrg esac 3422e1e1713cSmrg if test "$need_version" = no; then 3423e1e1713cSmrg versuffix= 3424e1e1713cSmrg else 3425e1e1713cSmrg versuffix=".0.0" 3426e1e1713cSmrg fi 3427e1e1713cSmrg fi 34287a84e134Smrg 3429e1e1713cSmrg # Remove version info from name if versioning should be avoided 3430e1e1713cSmrg if test "$avoid_version" = yes && test "$need_version" = no; then 3431e1e1713cSmrg major= 3432e1e1713cSmrg versuffix= 3433e1e1713cSmrg verstring="" 3434e1e1713cSmrg fi 34357a84e134Smrg 3436e1e1713cSmrg # Check to see if the archive will have undefined symbols. 3437e1e1713cSmrg if test "$allow_undefined" = yes; then 3438e1e1713cSmrg if test "$allow_undefined_flag" = unsupported; then 3439e1e1713cSmrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 3440e1e1713cSmrg build_libtool_libs=no 3441e1e1713cSmrg build_old_libs=yes 3442e1e1713cSmrg fi 3443e1e1713cSmrg else 3444e1e1713cSmrg # Don't allow undefined symbols. 3445e1e1713cSmrg allow_undefined_flag="$no_undefined_flag" 3446e1e1713cSmrg fi 3447e1e1713cSmrg fi 34487a84e134Smrg 3449e1e1713cSmrg if test "$mode" != relink; then 3450e1e1713cSmrg # Remove our outputs, but don't remove object files since they 3451e1e1713cSmrg # may have been created when compiling PIC objects. 3452e1e1713cSmrg removelist= 3453e1e1713cSmrg tempremovelist=`$echo "$output_objdir/*"` 3454e1e1713cSmrg for p in $tempremovelist; do 3455e1e1713cSmrg case $p in 3456e1e1713cSmrg *.$objext) 3457e1e1713cSmrg ;; 3458e1e1713cSmrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 3459e1e1713cSmrg if test "X$precious_files_regex" != "X"; then 3460e1e1713cSmrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 3461e1e1713cSmrg then 3462e1e1713cSmrg continue 3463e1e1713cSmrg fi 3464e1e1713cSmrg fi 3465e1e1713cSmrg removelist="$removelist $p" 3466e1e1713cSmrg ;; 3467e1e1713cSmrg *) ;; 3468e1e1713cSmrg esac 3469e1e1713cSmrg done 3470e1e1713cSmrg if test -n "$removelist"; then 3471e1e1713cSmrg $show "${rm}r $removelist" 3472e1e1713cSmrg $run ${rm}r $removelist 3473e1e1713cSmrg fi 3474e1e1713cSmrg fi 34757a84e134Smrg 3476e1e1713cSmrg # Now set the variables for building old libraries. 3477e1e1713cSmrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 3478e1e1713cSmrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 34797a84e134Smrg 3480e1e1713cSmrg # Transform .lo files to .o files. 3481e1e1713cSmrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 3482e1e1713cSmrg fi 34837a84e134Smrg 3484e1e1713cSmrg # Eliminate all temporary directories. 3485e1e1713cSmrg #for path in $notinst_path; do 3486e1e1713cSmrg # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 3487e1e1713cSmrg # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 3488e1e1713cSmrg # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 3489e1e1713cSmrg #done 34907a84e134Smrg 3491e1e1713cSmrg if test -n "$xrpath"; then 3492e1e1713cSmrg # If the user specified any rpath flags, then add them. 3493e1e1713cSmrg temp_xrpath= 3494e1e1713cSmrg for libdir in $xrpath; do 3495e1e1713cSmrg temp_xrpath="$temp_xrpath -R$libdir" 3496e1e1713cSmrg case "$finalize_rpath " in 3497e1e1713cSmrg *" $libdir "*) ;; 3498e1e1713cSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 3499e1e1713cSmrg esac 3500e1e1713cSmrg done 3501e1e1713cSmrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 3502e1e1713cSmrg dependency_libs="$temp_xrpath $dependency_libs" 3503e1e1713cSmrg fi 3504e1e1713cSmrg fi 35057a84e134Smrg 3506e1e1713cSmrg # Make sure dlfiles contains only unique files that won't be dlpreopened 3507e1e1713cSmrg old_dlfiles="$dlfiles" 3508e1e1713cSmrg dlfiles= 3509e1e1713cSmrg for lib in $old_dlfiles; do 3510e1e1713cSmrg case " $dlprefiles $dlfiles " in 3511e1e1713cSmrg *" $lib "*) ;; 3512e1e1713cSmrg *) dlfiles="$dlfiles $lib" ;; 3513e1e1713cSmrg esac 3514e1e1713cSmrg done 35157a84e134Smrg 3516e1e1713cSmrg # Make sure dlprefiles contains only unique files 3517e1e1713cSmrg old_dlprefiles="$dlprefiles" 3518e1e1713cSmrg dlprefiles= 3519e1e1713cSmrg for lib in $old_dlprefiles; do 3520e1e1713cSmrg case "$dlprefiles " in 3521e1e1713cSmrg *" $lib "*) ;; 3522e1e1713cSmrg *) dlprefiles="$dlprefiles $lib" ;; 3523e1e1713cSmrg esac 3524e1e1713cSmrg done 35257a84e134Smrg 3526e1e1713cSmrg if test "$build_libtool_libs" = yes; then 3527e1e1713cSmrg if test -n "$rpath"; then 3528e1e1713cSmrg case $host in 3529e1e1713cSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 3530e1e1713cSmrg # these systems don't actually have a c library (as such)! 3531e1e1713cSmrg ;; 3532e1e1713cSmrg *-*-rhapsody* | *-*-darwin1.[012]) 3533e1e1713cSmrg # Rhapsody C library is in the System framework 3534e1e1713cSmrg deplibs="$deplibs -framework System" 3535e1e1713cSmrg ;; 3536e1e1713cSmrg *-*-netbsd*) 3537e1e1713cSmrg # Don't link with libc until the a.out ld.so is fixed. 3538e1e1713cSmrg ;; 3539e1e1713cSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 3540e1e1713cSmrg # Do not include libc due to us having libc/libc_r. 3541e1e1713cSmrg ;; 3542e1e1713cSmrg *-*-sco3.2v5* | *-*-sco5v6*) 3543e1e1713cSmrg # Causes problems with __ctype 3544e1e1713cSmrg ;; 3545e1e1713cSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 3546e1e1713cSmrg # Compiler inserts libc in the correct place for threads to work 3547e1e1713cSmrg ;; 3548e1e1713cSmrg *) 3549e1e1713cSmrg # Add libc to deplibs on all other systems if necessary. 3550e1e1713cSmrg if test "$build_libtool_need_lc" = "yes"; then 3551e1e1713cSmrg deplibs="$deplibs -lc" 3552e1e1713cSmrg fi 3553e1e1713cSmrg ;; 3554e1e1713cSmrg esac 3555e1e1713cSmrg fi 35567a84e134Smrg 3557e1e1713cSmrg # Transform deplibs into only deplibs that can be linked in shared. 3558e1e1713cSmrg name_save=$name 3559e1e1713cSmrg libname_save=$libname 3560e1e1713cSmrg release_save=$release 3561e1e1713cSmrg versuffix_save=$versuffix 3562e1e1713cSmrg major_save=$major 3563e1e1713cSmrg # I'm not sure if I'm treating the release correctly. I think 3564e1e1713cSmrg # release should show up in the -l (ie -lgmp5) so we don't want to 3565e1e1713cSmrg # add it in twice. Is that correct? 3566e1e1713cSmrg release="" 3567e1e1713cSmrg versuffix="" 3568e1e1713cSmrg major="" 3569e1e1713cSmrg newdeplibs= 3570e1e1713cSmrg droppeddeps=no 3571e1e1713cSmrg case $deplibs_check_method in 3572e1e1713cSmrg pass_all) 3573e1e1713cSmrg # Don't check for shared/static. Everything works. 3574e1e1713cSmrg # This might be a little naive. We might want to check 3575e1e1713cSmrg # whether the library exists or not. But this is on 3576e1e1713cSmrg # osf3 & osf4 and I'm not really sure... Just 3577e1e1713cSmrg # implementing what was already the behavior. 3578e1e1713cSmrg newdeplibs=$deplibs 3579e1e1713cSmrg ;; 3580e1e1713cSmrg test_compile) 3581e1e1713cSmrg # This code stresses the "libraries are programs" paradigm to its 3582e1e1713cSmrg # limits. Maybe even breaks it. We compile a program, linking it 3583e1e1713cSmrg # against the deplibs as a proxy for the library. Then we can check 3584e1e1713cSmrg # whether they linked in statically or dynamically with ldd. 3585e1e1713cSmrg $rm conftest.c 3586e1e1713cSmrg cat > conftest.c <<EOF 3587e1e1713cSmrg int main() { return 0; } 3588e1e1713cSmrgEOF 3589e1e1713cSmrg $rm conftest 3590e1e1713cSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 3591e1e1713cSmrg ldd_output=`ldd conftest` 3592e1e1713cSmrg for i in $deplibs; do 3593e1e1713cSmrg name=`expr $i : '-l\(.*\)'` 3594e1e1713cSmrg # If $name is empty we are operating on a -L argument. 3595e1e1713cSmrg if test "$name" != "" && test "$name" != "0"; then 3596e1e1713cSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3597e1e1713cSmrg case " $predeps $postdeps " in 3598e1e1713cSmrg *" $i "*) 3599e1e1713cSmrg newdeplibs="$newdeplibs $i" 3600e1e1713cSmrg i="" 3601e1e1713cSmrg ;; 3602e1e1713cSmrg esac 3603e1e1713cSmrg fi 3604e1e1713cSmrg if test -n "$i" ; then 3605e1e1713cSmrg libname=`eval \\$echo \"$libname_spec\"` 3606e1e1713cSmrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3607e1e1713cSmrg set dummy $deplib_matches 3608e1e1713cSmrg deplib_match=$2 3609e1e1713cSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3610e1e1713cSmrg newdeplibs="$newdeplibs $i" 3611e1e1713cSmrg else 3612e1e1713cSmrg droppeddeps=yes 3613e1e1713cSmrg $echo 3614e1e1713cSmrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3615e1e1713cSmrg $echo "*** I have the capability to make that library automatically link in when" 3616e1e1713cSmrg $echo "*** you link to this library. But I can only do this if you have a" 3617e1e1713cSmrg $echo "*** shared version of the library, which I believe you do not have" 3618e1e1713cSmrg $echo "*** because a test_compile did reveal that the linker did not use it for" 3619e1e1713cSmrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 3620e1e1713cSmrg fi 3621e1e1713cSmrg fi 3622e1e1713cSmrg else 3623e1e1713cSmrg newdeplibs="$newdeplibs $i" 3624e1e1713cSmrg fi 3625e1e1713cSmrg done 3626e1e1713cSmrg else 3627e1e1713cSmrg # Error occurred in the first compile. Let's try to salvage 3628e1e1713cSmrg # the situation: Compile a separate program for each library. 3629e1e1713cSmrg for i in $deplibs; do 3630e1e1713cSmrg name=`expr $i : '-l\(.*\)'` 3631e1e1713cSmrg # If $name is empty we are operating on a -L argument. 3632e1e1713cSmrg if test "$name" != "" && test "$name" != "0"; then 3633e1e1713cSmrg $rm conftest 3634e1e1713cSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 3635e1e1713cSmrg ldd_output=`ldd conftest` 3636e1e1713cSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3637e1e1713cSmrg case " $predeps $postdeps " in 3638e1e1713cSmrg *" $i "*) 3639e1e1713cSmrg newdeplibs="$newdeplibs $i" 3640e1e1713cSmrg i="" 3641e1e1713cSmrg ;; 3642e1e1713cSmrg esac 3643e1e1713cSmrg fi 3644e1e1713cSmrg if test -n "$i" ; then 3645e1e1713cSmrg libname=`eval \\$echo \"$libname_spec\"` 3646e1e1713cSmrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3647e1e1713cSmrg set dummy $deplib_matches 3648e1e1713cSmrg deplib_match=$2 3649e1e1713cSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3650e1e1713cSmrg newdeplibs="$newdeplibs $i" 3651e1e1713cSmrg else 3652e1e1713cSmrg droppeddeps=yes 3653e1e1713cSmrg $echo 3654e1e1713cSmrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3655e1e1713cSmrg $echo "*** I have the capability to make that library automatically link in when" 3656e1e1713cSmrg $echo "*** you link to this library. But I can only do this if you have a" 3657e1e1713cSmrg $echo "*** shared version of the library, which you do not appear to have" 3658e1e1713cSmrg $echo "*** because a test_compile did reveal that the linker did not use this one" 3659e1e1713cSmrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 3660e1e1713cSmrg fi 3661e1e1713cSmrg fi 3662e1e1713cSmrg else 3663e1e1713cSmrg droppeddeps=yes 3664e1e1713cSmrg $echo 3665e1e1713cSmrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 3666e1e1713cSmrg $echo "*** make it link in! You will probably need to install it or some" 3667e1e1713cSmrg $echo "*** library that it depends on before this library will be fully" 3668e1e1713cSmrg $echo "*** functional. Installing it before continuing would be even better." 3669e1e1713cSmrg fi 3670e1e1713cSmrg else 3671e1e1713cSmrg newdeplibs="$newdeplibs $i" 3672e1e1713cSmrg fi 3673e1e1713cSmrg done 3674e1e1713cSmrg fi 3675e1e1713cSmrg ;; 3676e1e1713cSmrg file_magic*) 3677e1e1713cSmrg set dummy $deplibs_check_method 3678e1e1713cSmrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3679e1e1713cSmrg for a_deplib in $deplibs; do 3680e1e1713cSmrg name=`expr $a_deplib : '-l\(.*\)'` 3681e1e1713cSmrg # If $name is empty we are operating on a -L argument. 3682e1e1713cSmrg if test "$name" != "" && test "$name" != "0"; then 3683e1e1713cSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3684e1e1713cSmrg case " $predeps $postdeps " in 3685e1e1713cSmrg *" $a_deplib "*) 3686e1e1713cSmrg newdeplibs="$newdeplibs $a_deplib" 3687e1e1713cSmrg a_deplib="" 3688e1e1713cSmrg ;; 3689e1e1713cSmrg esac 3690e1e1713cSmrg fi 3691e1e1713cSmrg if test -n "$a_deplib" ; then 3692e1e1713cSmrg libname=`eval \\$echo \"$libname_spec\"` 3693e1e1713cSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3694e1e1713cSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3695e1e1713cSmrg for potent_lib in $potential_libs; do 3696e1e1713cSmrg # Follow soft links. 3697e1e1713cSmrg if ls -lLd "$potent_lib" 2>/dev/null \ 3698e1e1713cSmrg | grep " -> " >/dev/null; then 3699e1e1713cSmrg continue 3700e1e1713cSmrg fi 3701e1e1713cSmrg # The statement above tries to avoid entering an 3702e1e1713cSmrg # endless loop below, in case of cyclic links. 3703e1e1713cSmrg # We might still enter an endless loop, since a link 3704e1e1713cSmrg # loop can be closed while we follow links, 3705e1e1713cSmrg # but so what? 3706e1e1713cSmrg potlib="$potent_lib" 3707e1e1713cSmrg while test -h "$potlib" 2>/dev/null; do 3708e1e1713cSmrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 3709e1e1713cSmrg case $potliblink in 3710e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 3711e1e1713cSmrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 3712e1e1713cSmrg esac 3713e1e1713cSmrg done 3714e1e1713cSmrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 3715e1e1713cSmrg | ${SED} 10q \ 3716e1e1713cSmrg | $EGREP "$file_magic_regex" > /dev/null; then 3717e1e1713cSmrg newdeplibs="$newdeplibs $a_deplib" 3718e1e1713cSmrg a_deplib="" 3719e1e1713cSmrg break 2 3720e1e1713cSmrg fi 3721e1e1713cSmrg done 3722e1e1713cSmrg done 3723e1e1713cSmrg fi 3724e1e1713cSmrg if test -n "$a_deplib" ; then 3725e1e1713cSmrg droppeddeps=yes 3726e1e1713cSmrg $echo 3727e1e1713cSmrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3728e1e1713cSmrg $echo "*** I have the capability to make that library automatically link in when" 3729e1e1713cSmrg $echo "*** you link to this library. But I can only do this if you have a" 3730e1e1713cSmrg $echo "*** shared version of the library, which you do not appear to have" 3731e1e1713cSmrg $echo "*** because I did check the linker path looking for a file starting" 3732e1e1713cSmrg if test -z "$potlib" ; then 3733e1e1713cSmrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 3734e1e1713cSmrg else 3735e1e1713cSmrg $echo "*** with $libname and none of the candidates passed a file format test" 3736e1e1713cSmrg $echo "*** using a file magic. Last file checked: $potlib" 3737e1e1713cSmrg fi 3738e1e1713cSmrg fi 3739e1e1713cSmrg else 3740e1e1713cSmrg # Add a -L argument. 3741e1e1713cSmrg newdeplibs="$newdeplibs $a_deplib" 3742e1e1713cSmrg fi 3743e1e1713cSmrg done # Gone through all deplibs. 3744e1e1713cSmrg ;; 3745e1e1713cSmrg match_pattern*) 3746e1e1713cSmrg set dummy $deplibs_check_method 3747e1e1713cSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3748e1e1713cSmrg for a_deplib in $deplibs; do 3749e1e1713cSmrg name=`expr $a_deplib : '-l\(.*\)'` 3750e1e1713cSmrg # If $name is empty we are operating on a -L argument. 3751e1e1713cSmrg if test -n "$name" && test "$name" != "0"; then 3752e1e1713cSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3753e1e1713cSmrg case " $predeps $postdeps " in 3754e1e1713cSmrg *" $a_deplib "*) 3755e1e1713cSmrg newdeplibs="$newdeplibs $a_deplib" 3756e1e1713cSmrg a_deplib="" 3757e1e1713cSmrg ;; 3758e1e1713cSmrg esac 3759e1e1713cSmrg fi 3760e1e1713cSmrg if test -n "$a_deplib" ; then 3761e1e1713cSmrg libname=`eval \\$echo \"$libname_spec\"` 3762e1e1713cSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3763e1e1713cSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3764e1e1713cSmrg for potent_lib in $potential_libs; do 3765e1e1713cSmrg potlib="$potent_lib" # see symlink-check above in file_magic test 3766e1e1713cSmrg if eval $echo \"$potent_lib\" 2>/dev/null \ 3767e1e1713cSmrg | ${SED} 10q \ 3768e1e1713cSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 3769e1e1713cSmrg newdeplibs="$newdeplibs $a_deplib" 3770e1e1713cSmrg a_deplib="" 3771e1e1713cSmrg break 2 3772e1e1713cSmrg fi 3773e1e1713cSmrg done 3774e1e1713cSmrg done 3775e1e1713cSmrg fi 3776e1e1713cSmrg if test -n "$a_deplib" ; then 3777e1e1713cSmrg droppeddeps=yes 3778e1e1713cSmrg $echo 3779e1e1713cSmrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3780e1e1713cSmrg $echo "*** I have the capability to make that library automatically link in when" 3781e1e1713cSmrg $echo "*** you link to this library. But I can only do this if you have a" 3782e1e1713cSmrg $echo "*** shared version of the library, which you do not appear to have" 3783e1e1713cSmrg $echo "*** because I did check the linker path looking for a file starting" 3784e1e1713cSmrg if test -z "$potlib" ; then 3785e1e1713cSmrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 3786e1e1713cSmrg else 3787e1e1713cSmrg $echo "*** with $libname and none of the candidates passed a file format test" 3788e1e1713cSmrg $echo "*** using a regex pattern. Last file checked: $potlib" 3789e1e1713cSmrg fi 3790e1e1713cSmrg fi 3791e1e1713cSmrg else 3792e1e1713cSmrg # Add a -L argument. 3793e1e1713cSmrg newdeplibs="$newdeplibs $a_deplib" 3794e1e1713cSmrg fi 3795e1e1713cSmrg done # Gone through all deplibs. 3796e1e1713cSmrg ;; 3797e1e1713cSmrg none | unknown | *) 3798e1e1713cSmrg newdeplibs="" 3799e1e1713cSmrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 3800e1e1713cSmrg -e 's/ -[LR][^ ]*//g'` 3801e1e1713cSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3802e1e1713cSmrg for i in $predeps $postdeps ; do 3803e1e1713cSmrg # can't use Xsed below, because $i might contain '/' 3804e1e1713cSmrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 3805e1e1713cSmrg done 3806e1e1713cSmrg fi 3807e1e1713cSmrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 3808e1e1713cSmrg | grep . >/dev/null; then 3809e1e1713cSmrg $echo 3810e1e1713cSmrg if test "X$deplibs_check_method" = "Xnone"; then 3811e1e1713cSmrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 3812e1e1713cSmrg else 3813e1e1713cSmrg $echo "*** Warning: inter-library dependencies are not known to be supported." 3814e1e1713cSmrg fi 3815e1e1713cSmrg $echo "*** All declared inter-library dependencies are being dropped." 3816e1e1713cSmrg droppeddeps=yes 3817e1e1713cSmrg fi 3818e1e1713cSmrg ;; 3819e1e1713cSmrg esac 3820e1e1713cSmrg versuffix=$versuffix_save 3821e1e1713cSmrg major=$major_save 3822e1e1713cSmrg release=$release_save 3823e1e1713cSmrg libname=$libname_save 3824e1e1713cSmrg name=$name_save 38257a84e134Smrg 3826e1e1713cSmrg case $host in 3827e1e1713cSmrg *-*-rhapsody* | *-*-darwin1.[012]) 3828e1e1713cSmrg # On Rhapsody replace the C library is the System framework 3829e1e1713cSmrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 3830e1e1713cSmrg ;; 3831e1e1713cSmrg esac 38327a84e134Smrg 3833e1e1713cSmrg if test "$droppeddeps" = yes; then 3834e1e1713cSmrg if test "$module" = yes; then 3835e1e1713cSmrg $echo 3836e1e1713cSmrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 3837e1e1713cSmrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 3838e1e1713cSmrg $echo "*** a static module, that should work as long as the dlopening" 3839e1e1713cSmrg $echo "*** application is linked with the -dlopen flag." 3840e1e1713cSmrg if test -z "$global_symbol_pipe"; then 3841e1e1713cSmrg $echo 3842e1e1713cSmrg $echo "*** However, this would only work if libtool was able to extract symbol" 3843e1e1713cSmrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 3844e1e1713cSmrg $echo "*** not find such a program. So, this module is probably useless." 3845e1e1713cSmrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 3846e1e1713cSmrg fi 3847e1e1713cSmrg if test "$build_old_libs" = no; then 3848e1e1713cSmrg oldlibs="$output_objdir/$libname.$libext" 3849e1e1713cSmrg build_libtool_libs=module 3850e1e1713cSmrg build_old_libs=yes 3851e1e1713cSmrg else 3852e1e1713cSmrg build_libtool_libs=no 3853e1e1713cSmrg fi 3854e1e1713cSmrg else 3855e1e1713cSmrg $echo "*** The inter-library dependencies that have been dropped here will be" 3856e1e1713cSmrg $echo "*** automatically added whenever a program is linked with this library" 3857e1e1713cSmrg $echo "*** or is declared to -dlopen it." 38587a84e134Smrg 3859e1e1713cSmrg if test "$allow_undefined" = no; then 3860e1e1713cSmrg $echo 3861e1e1713cSmrg $echo "*** Since this library must not contain undefined symbols," 3862e1e1713cSmrg $echo "*** because either the platform does not support them or" 3863e1e1713cSmrg $echo "*** it was explicitly requested with -no-undefined," 3864e1e1713cSmrg $echo "*** libtool will only create a static version of it." 3865e1e1713cSmrg if test "$build_old_libs" = no; then 3866e1e1713cSmrg oldlibs="$output_objdir/$libname.$libext" 3867e1e1713cSmrg build_libtool_libs=module 3868e1e1713cSmrg build_old_libs=yes 3869e1e1713cSmrg else 3870e1e1713cSmrg build_libtool_libs=no 3871e1e1713cSmrg fi 3872e1e1713cSmrg fi 3873e1e1713cSmrg fi 3874e1e1713cSmrg fi 3875e1e1713cSmrg # Done checking deplibs! 3876e1e1713cSmrg deplibs=$newdeplibs 3877e1e1713cSmrg fi 38787a84e134Smrg 38797a84e134Smrg 3880e1e1713cSmrg # move library search paths that coincide with paths to not yet 3881e1e1713cSmrg # installed libraries to the beginning of the library search list 3882e1e1713cSmrg new_libs= 3883e1e1713cSmrg for path in $notinst_path; do 3884e1e1713cSmrg case " $new_libs " in 3885e1e1713cSmrg *" -L$path/$objdir "*) ;; 3886e1e1713cSmrg *) 3887e1e1713cSmrg case " $deplibs " in 3888e1e1713cSmrg *" -L$path/$objdir "*) 3889e1e1713cSmrg new_libs="$new_libs -L$path/$objdir" ;; 3890e1e1713cSmrg esac 3891e1e1713cSmrg ;; 3892e1e1713cSmrg esac 3893e1e1713cSmrg done 3894e1e1713cSmrg for deplib in $deplibs; do 3895e1e1713cSmrg case $deplib in 3896e1e1713cSmrg -L*) 3897e1e1713cSmrg case " $new_libs " in 3898e1e1713cSmrg *" $deplib "*) ;; 3899e1e1713cSmrg *) new_libs="$new_libs $deplib" ;; 3900e1e1713cSmrg esac 3901e1e1713cSmrg ;; 3902e1e1713cSmrg *) new_libs="$new_libs $deplib" ;; 3903e1e1713cSmrg esac 3904e1e1713cSmrg done 3905e1e1713cSmrg deplibs="$new_libs" 39067a84e134Smrg 39077a84e134Smrg 3908e1e1713cSmrg # All the library-specific variables (install_libdir is set above). 3909e1e1713cSmrg library_names= 3910e1e1713cSmrg old_library= 3911e1e1713cSmrg dlname= 39127a84e134Smrg 3913e1e1713cSmrg # Test again, we may have decided not to build it any more 3914e1e1713cSmrg if test "$build_libtool_libs" = yes; then 3915e1e1713cSmrg if test "$hardcode_into_libs" = yes; then 3916e1e1713cSmrg # Hardcode the library paths 3917e1e1713cSmrg hardcode_libdirs= 3918e1e1713cSmrg dep_rpath= 3919e1e1713cSmrg rpath="$finalize_rpath" 3920e1e1713cSmrg test "$mode" != relink && rpath="$compile_rpath$rpath" 3921e1e1713cSmrg for libdir in $rpath; do 3922e1e1713cSmrg if test -n "$hardcode_libdir_flag_spec"; then 3923e1e1713cSmrg if test -n "$hardcode_libdir_separator"; then 3924e1e1713cSmrg if test -z "$hardcode_libdirs"; then 3925e1e1713cSmrg hardcode_libdirs="$libdir" 3926e1e1713cSmrg else 3927e1e1713cSmrg # Just accumulate the unique libdirs. 3928e1e1713cSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 3929e1e1713cSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 3930e1e1713cSmrg ;; 3931e1e1713cSmrg *) 3932e1e1713cSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 3933e1e1713cSmrg ;; 3934e1e1713cSmrg esac 3935e1e1713cSmrg fi 3936e1e1713cSmrg else 3937e1e1713cSmrg eval flag=\"$hardcode_libdir_flag_spec\" 3938e1e1713cSmrg dep_rpath="$dep_rpath $flag" 3939e1e1713cSmrg fi 3940e1e1713cSmrg elif test -n "$runpath_var"; then 3941e1e1713cSmrg case "$perm_rpath " in 3942e1e1713cSmrg *" $libdir "*) ;; 3943e1e1713cSmrg *) perm_rpath="$perm_rpath $libdir" ;; 3944e1e1713cSmrg esac 3945e1e1713cSmrg fi 3946e1e1713cSmrg done 3947e1e1713cSmrg # Substitute the hardcoded libdirs into the rpath. 3948e1e1713cSmrg if test -n "$hardcode_libdir_separator" && 3949e1e1713cSmrg test -n "$hardcode_libdirs"; then 3950e1e1713cSmrg libdir="$hardcode_libdirs" 3951e1e1713cSmrg if test -n "$hardcode_libdir_flag_spec_ld"; then 3952e1e1713cSmrg case $archive_cmds in 3953e1e1713cSmrg *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 3954e1e1713cSmrg *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 3955e1e1713cSmrg esac 3956e1e1713cSmrg else 3957e1e1713cSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 3958e1e1713cSmrg fi 3959e1e1713cSmrg fi 3960e1e1713cSmrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 3961e1e1713cSmrg # We should set the runpath_var. 3962e1e1713cSmrg rpath= 3963e1e1713cSmrg for dir in $perm_rpath; do 3964e1e1713cSmrg rpath="$rpath$dir:" 3965e1e1713cSmrg done 3966e1e1713cSmrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 3967e1e1713cSmrg fi 3968e1e1713cSmrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 3969e1e1713cSmrg fi 39707a84e134Smrg 3971e1e1713cSmrg shlibpath="$finalize_shlibpath" 3972e1e1713cSmrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 3973e1e1713cSmrg if test -n "$shlibpath"; then 3974e1e1713cSmrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 3975e1e1713cSmrg fi 39767a84e134Smrg 3977e1e1713cSmrg # Get the real and link names of the library. 3978e1e1713cSmrg eval shared_ext=\"$shrext_cmds\" 3979e1e1713cSmrg eval library_names=\"$library_names_spec\" 3980e1e1713cSmrg set dummy $library_names 3981e1e1713cSmrg realname="$2" 3982e1e1713cSmrg shift; shift 39837a84e134Smrg 3984e1e1713cSmrg if test -n "$soname_spec"; then 3985e1e1713cSmrg eval soname=\"$soname_spec\" 3986e1e1713cSmrg else 3987e1e1713cSmrg soname="$realname" 3988e1e1713cSmrg fi 3989e1e1713cSmrg if test -z "$dlname"; then 3990e1e1713cSmrg dlname=$soname 3991e1e1713cSmrg fi 39927a84e134Smrg 3993e1e1713cSmrg lib="$output_objdir/$realname" 3994e1e1713cSmrg linknames= 3995e1e1713cSmrg for link 3996e1e1713cSmrg do 3997e1e1713cSmrg linknames="$linknames $link" 3998e1e1713cSmrg done 39997a84e134Smrg 4000e1e1713cSmrg # Use standard objects if they are pic 4001e1e1713cSmrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 40027a84e134Smrg 4003e1e1713cSmrg # Prepare the list of exported symbols 4004e1e1713cSmrg if test -z "$export_symbols"; then 4005e1e1713cSmrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 4006e1e1713cSmrg $show "generating symbol list for \`$libname.la'" 4007e1e1713cSmrg export_symbols="$output_objdir/$libname.exp" 4008e1e1713cSmrg $run $rm $export_symbols 4009e1e1713cSmrg cmds=$export_symbols_cmds 4010e1e1713cSmrg save_ifs="$IFS"; IFS='~' 4011e1e1713cSmrg for cmd in $cmds; do 4012e1e1713cSmrg IFS="$save_ifs" 4013e1e1713cSmrg eval cmd=\"$cmd\" 4014e1e1713cSmrg if len=`expr "X$cmd" : ".*"` && 4015e1e1713cSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4016e1e1713cSmrg $show "$cmd" 4017e1e1713cSmrg $run eval "$cmd" || exit $? 4018e1e1713cSmrg skipped_export=false 4019e1e1713cSmrg else 4020e1e1713cSmrg # The command line is too long to execute in one step. 4021e1e1713cSmrg $show "using reloadable object file for export list..." 4022e1e1713cSmrg skipped_export=: 4023e1e1713cSmrg # Break out early, otherwise skipped_export may be 4024e1e1713cSmrg # set to false by a later but shorter cmd. 4025e1e1713cSmrg break 4026e1e1713cSmrg fi 4027e1e1713cSmrg done 4028e1e1713cSmrg IFS="$save_ifs" 4029e1e1713cSmrg if test -n "$export_symbols_regex"; then 4030e1e1713cSmrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 4031e1e1713cSmrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 4032e1e1713cSmrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 4033e1e1713cSmrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 4034e1e1713cSmrg fi 4035e1e1713cSmrg fi 4036e1e1713cSmrg fi 40377a84e134Smrg 4038e1e1713cSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 4039e1e1713cSmrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 4040e1e1713cSmrg fi 40417a84e134Smrg 4042e1e1713cSmrg tmp_deplibs= 4043e1e1713cSmrg for test_deplib in $deplibs; do 4044e1e1713cSmrg case " $convenience " in 4045e1e1713cSmrg *" $test_deplib "*) ;; 4046e1e1713cSmrg *) 4047e1e1713cSmrg tmp_deplibs="$tmp_deplibs $test_deplib" 4048e1e1713cSmrg ;; 4049e1e1713cSmrg esac 4050e1e1713cSmrg done 4051e1e1713cSmrg deplibs="$tmp_deplibs" 40527a84e134Smrg 4053e1e1713cSmrg if test -n "$convenience"; then 4054e1e1713cSmrg if test -n "$whole_archive_flag_spec"; then 4055e1e1713cSmrg save_libobjs=$libobjs 4056e1e1713cSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4057e1e1713cSmrg else 4058e1e1713cSmrg gentop="$output_objdir/${outputname}x" 4059e1e1713cSmrg generated="$generated $gentop" 40607a84e134Smrg 4061e1e1713cSmrg func_extract_archives $gentop $convenience 4062e1e1713cSmrg libobjs="$libobjs $func_extract_archives_result" 4063e1e1713cSmrg fi 4064e1e1713cSmrg fi 4065e1e1713cSmrg 4066e1e1713cSmrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 4067e1e1713cSmrg eval flag=\"$thread_safe_flag_spec\" 4068e1e1713cSmrg linker_flags="$linker_flags $flag" 4069e1e1713cSmrg fi 40707a84e134Smrg 4071e1e1713cSmrg # Make a backup of the uninstalled library when relinking 4072e1e1713cSmrg if test "$mode" = relink; then 4073e1e1713cSmrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 4074e1e1713cSmrg fi 40757a84e134Smrg 4076e1e1713cSmrg # Do each of the archive commands. 4077e1e1713cSmrg if test "$module" = yes && test -n "$module_cmds" ; then 4078e1e1713cSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4079e1e1713cSmrg eval test_cmds=\"$module_expsym_cmds\" 4080e1e1713cSmrg cmds=$module_expsym_cmds 4081e1e1713cSmrg else 4082e1e1713cSmrg eval test_cmds=\"$module_cmds\" 4083e1e1713cSmrg cmds=$module_cmds 4084e1e1713cSmrg fi 4085e1e1713cSmrg else 4086e1e1713cSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4087e1e1713cSmrg eval test_cmds=\"$archive_expsym_cmds\" 4088e1e1713cSmrg cmds=$archive_expsym_cmds 4089e1e1713cSmrg else 4090e1e1713cSmrg eval test_cmds=\"$archive_cmds\" 4091e1e1713cSmrg cmds=$archive_cmds 4092e1e1713cSmrg fi 4093e1e1713cSmrg fi 40947a84e134Smrg 4095e1e1713cSmrg if test "X$skipped_export" != "X:" && 4096e1e1713cSmrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4097e1e1713cSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4098e1e1713cSmrg : 4099e1e1713cSmrg else 4100e1e1713cSmrg # The command line is too long to link in one step, link piecewise. 4101e1e1713cSmrg $echo "creating reloadable object files..." 41027a84e134Smrg 4103e1e1713cSmrg # Save the value of $output and $libobjs because we want to 4104e1e1713cSmrg # use them later. If we have whole_archive_flag_spec, we 4105e1e1713cSmrg # want to use save_libobjs as it was before 4106e1e1713cSmrg # whole_archive_flag_spec was expanded, because we can't 4107e1e1713cSmrg # assume the linker understands whole_archive_flag_spec. 4108e1e1713cSmrg # This may have to be revisited, in case too many 4109e1e1713cSmrg # convenience libraries get linked in and end up exceeding 4110e1e1713cSmrg # the spec. 4111e1e1713cSmrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 4112e1e1713cSmrg save_libobjs=$libobjs 4113e1e1713cSmrg fi 4114e1e1713cSmrg save_output=$output 4115e1e1713cSmrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 41167a84e134Smrg 4117e1e1713cSmrg # Clear the reloadable object creation command queue and 4118e1e1713cSmrg # initialize k to one. 4119e1e1713cSmrg test_cmds= 4120e1e1713cSmrg concat_cmds= 4121e1e1713cSmrg objlist= 4122e1e1713cSmrg delfiles= 4123e1e1713cSmrg last_robj= 4124e1e1713cSmrg k=1 4125e1e1713cSmrg output=$output_objdir/$output_la-${k}.$objext 4126e1e1713cSmrg # Loop over the list of objects to be linked. 4127e1e1713cSmrg for obj in $save_libobjs 4128e1e1713cSmrg do 4129e1e1713cSmrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 4130e1e1713cSmrg if test "X$objlist" = X || 4131e1e1713cSmrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4132e1e1713cSmrg test "$len" -le "$max_cmd_len"; }; then 4133e1e1713cSmrg objlist="$objlist $obj" 4134e1e1713cSmrg else 4135e1e1713cSmrg # The command $test_cmds is almost too long, add a 4136e1e1713cSmrg # command to the queue. 4137e1e1713cSmrg if test "$k" -eq 1 ; then 4138e1e1713cSmrg # The first file doesn't have a previous command to add. 4139e1e1713cSmrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 4140e1e1713cSmrg else 4141e1e1713cSmrg # All subsequent reloadable object files will link in 4142e1e1713cSmrg # the last one created. 4143e1e1713cSmrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 4144e1e1713cSmrg fi 4145e1e1713cSmrg last_robj=$output_objdir/$output_la-${k}.$objext 4146e1e1713cSmrg k=`expr $k + 1` 4147e1e1713cSmrg output=$output_objdir/$output_la-${k}.$objext 4148e1e1713cSmrg objlist=$obj 4149e1e1713cSmrg len=1 4150e1e1713cSmrg fi 4151e1e1713cSmrg done 4152e1e1713cSmrg # Handle the remaining objects by creating one last 4153e1e1713cSmrg # reloadable object file. All subsequent reloadable object 4154e1e1713cSmrg # files will link in the last one created. 4155e1e1713cSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 4156e1e1713cSmrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 4157e1e1713cSmrg 4158e1e1713cSmrg if ${skipped_export-false}; then 4159e1e1713cSmrg $show "generating symbol list for \`$libname.la'" 4160e1e1713cSmrg export_symbols="$output_objdir/$libname.exp" 4161e1e1713cSmrg $run $rm $export_symbols 4162e1e1713cSmrg libobjs=$output 4163e1e1713cSmrg # Append the command to create the export file. 4164e1e1713cSmrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 4165e1e1713cSmrg fi 4166e1e1713cSmrg 4167e1e1713cSmrg # Set up a command to remove the reloadable object files 4168e1e1713cSmrg # after they are used. 4169e1e1713cSmrg i=0 4170e1e1713cSmrg while test "$i" -lt "$k" 4171e1e1713cSmrg do 4172e1e1713cSmrg i=`expr $i + 1` 4173e1e1713cSmrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 4174e1e1713cSmrg done 41757a84e134Smrg 4176e1e1713cSmrg $echo "creating a temporary reloadable object file: $output" 41777a84e134Smrg 4178e1e1713cSmrg # Loop through the commands generated above and execute them. 4179e1e1713cSmrg save_ifs="$IFS"; IFS='~' 4180e1e1713cSmrg for cmd in $concat_cmds; do 4181e1e1713cSmrg IFS="$save_ifs" 4182e1e1713cSmrg $show "$cmd" 4183e1e1713cSmrg $run eval "$cmd" || exit $? 4184e1e1713cSmrg done 4185e1e1713cSmrg IFS="$save_ifs" 41867a84e134Smrg 4187e1e1713cSmrg libobjs=$output 4188e1e1713cSmrg # Restore the value of output. 4189e1e1713cSmrg output=$save_output 41907a84e134Smrg 4191e1e1713cSmrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 4192e1e1713cSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4193e1e1713cSmrg fi 4194e1e1713cSmrg # Expand the library linking commands again to reset the 4195e1e1713cSmrg # value of $libobjs for piecewise linking. 41967a84e134Smrg 4197e1e1713cSmrg # Do each of the archive commands. 4198e1e1713cSmrg if test "$module" = yes && test -n "$module_cmds" ; then 4199e1e1713cSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4200e1e1713cSmrg cmds=$module_expsym_cmds 4201e1e1713cSmrg else 4202e1e1713cSmrg cmds=$module_cmds 4203e1e1713cSmrg fi 4204e1e1713cSmrg else 4205e1e1713cSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4206e1e1713cSmrg cmds=$archive_expsym_cmds 4207e1e1713cSmrg else 4208e1e1713cSmrg cmds=$archive_cmds 4209e1e1713cSmrg fi 4210e1e1713cSmrg fi 42117a84e134Smrg 4212e1e1713cSmrg # Append the command to remove the reloadable object files 4213e1e1713cSmrg # to the just-reset $cmds. 4214e1e1713cSmrg eval cmds=\"\$cmds~\$rm $delfiles\" 4215e1e1713cSmrg fi 4216e1e1713cSmrg save_ifs="$IFS"; IFS='~' 4217e1e1713cSmrg for cmd in $cmds; do 4218e1e1713cSmrg IFS="$save_ifs" 4219e1e1713cSmrg eval cmd=\"$cmd\" 4220e1e1713cSmrg $show "$cmd" 4221e1e1713cSmrg $run eval "$cmd" || { 4222e1e1713cSmrg lt_exit=$? 42237a84e134Smrg 4224e1e1713cSmrg # Restore the uninstalled library and exit 4225e1e1713cSmrg if test "$mode" = relink; then 4226e1e1713cSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 4227e1e1713cSmrg fi 42287a84e134Smrg 4229e1e1713cSmrg exit $lt_exit 4230e1e1713cSmrg } 4231e1e1713cSmrg done 4232e1e1713cSmrg IFS="$save_ifs" 4233e1e1713cSmrg 4234e1e1713cSmrg # Restore the uninstalled library and exit 4235e1e1713cSmrg if test "$mode" = relink; then 4236e1e1713cSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 4237e1e1713cSmrg 4238e1e1713cSmrg if test -n "$convenience"; then 4239e1e1713cSmrg if test -z "$whole_archive_flag_spec"; then 4240e1e1713cSmrg $show "${rm}r $gentop" 4241e1e1713cSmrg $run ${rm}r "$gentop" 4242e1e1713cSmrg fi 4243e1e1713cSmrg fi 4244e1e1713cSmrg 4245e1e1713cSmrg exit $EXIT_SUCCESS 4246e1e1713cSmrg fi 4247e1e1713cSmrg 4248e1e1713cSmrg # Create links to the real library. 4249e1e1713cSmrg for linkname in $linknames; do 4250e1e1713cSmrg if test "$realname" != "$linkname"; then 4251e1e1713cSmrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 4252e1e1713cSmrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 4253e1e1713cSmrg fi 4254e1e1713cSmrg done 4255e1e1713cSmrg 4256e1e1713cSmrg # If -module or -export-dynamic was specified, set the dlname. 4257e1e1713cSmrg if test "$module" = yes || test "$export_dynamic" = yes; then 4258e1e1713cSmrg # On all known operating systems, these are identical. 4259e1e1713cSmrg dlname="$soname" 4260e1e1713cSmrg fi 4261e1e1713cSmrg fi 4262775e7de9Smrg ;; 42637a84e134Smrg 4264e1e1713cSmrg obj) 4265e1e1713cSmrg case " $deplibs" in 4266e1e1713cSmrg *\ -l* | *\ -L*) 4267e1e1713cSmrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; 4268e1e1713cSmrg esac 42697a84e134Smrg 4270e1e1713cSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4271e1e1713cSmrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 4272e1e1713cSmrg fi 42737a84e134Smrg 4274e1e1713cSmrg if test -n "$rpath"; then 4275e1e1713cSmrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 4276e1e1713cSmrg fi 4277e1e1713cSmrg 4278e1e1713cSmrg if test -n "$xrpath"; then 4279e1e1713cSmrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 4280e1e1713cSmrg fi 4281e1e1713cSmrg 4282e1e1713cSmrg if test -n "$vinfo"; then 4283e1e1713cSmrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 4284e1e1713cSmrg fi 4285e1e1713cSmrg 4286e1e1713cSmrg if test -n "$release"; then 4287e1e1713cSmrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 4288e1e1713cSmrg fi 4289e1e1713cSmrg 4290e1e1713cSmrg case $output in 4291e1e1713cSmrg *.lo) 4292e1e1713cSmrg if test -n "$objs$old_deplibs"; then 4293e1e1713cSmrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 4294e1e1713cSmrg exit $EXIT_FAILURE 4295e1e1713cSmrg fi 4296e1e1713cSmrg libobj="$output" 4297e1e1713cSmrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 4298775e7de9Smrg ;; 4299e1e1713cSmrg *) 4300e1e1713cSmrg libobj= 4301e1e1713cSmrg obj="$output" 4302775e7de9Smrg ;; 4303775e7de9Smrg esac 43047a84e134Smrg 4305e1e1713cSmrg # Delete the old objects. 4306e1e1713cSmrg $run $rm $obj $libobj 43077a84e134Smrg 4308e1e1713cSmrg # Objects from convenience libraries. This assumes 4309e1e1713cSmrg # single-version convenience libraries. Whenever we create 4310e1e1713cSmrg # different ones for PIC/non-PIC, this we'll have to duplicate 4311e1e1713cSmrg # the extraction. 4312e1e1713cSmrg reload_conv_objs= 4313e1e1713cSmrg gentop= 4314e1e1713cSmrg # reload_cmds runs $LD directly, so let us get rid of 4315e1e1713cSmrg # -Wl from whole_archive_flag_spec and hope we can get by with 4316e1e1713cSmrg # turning comma into space.. 4317e1e1713cSmrg wl= 43187a84e134Smrg 4319e1e1713cSmrg if test -n "$convenience"; then 4320e1e1713cSmrg if test -n "$whole_archive_flag_spec"; then 4321e1e1713cSmrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 4322e1e1713cSmrg reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 4323e1e1713cSmrg else 4324e1e1713cSmrg gentop="$output_objdir/${obj}x" 4325e1e1713cSmrg generated="$generated $gentop" 43267a84e134Smrg 4327e1e1713cSmrg func_extract_archives $gentop $convenience 4328e1e1713cSmrg reload_conv_objs="$reload_objs $func_extract_archives_result" 4329e1e1713cSmrg fi 4330e1e1713cSmrg fi 43317a84e134Smrg 4332e1e1713cSmrg # Create the old-style object. 4333e1e1713cSmrg 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 43347a84e134Smrg 4335e1e1713cSmrg output="$obj" 4336e1e1713cSmrg cmds=$reload_cmds 4337e1e1713cSmrg save_ifs="$IFS"; IFS='~' 4338e1e1713cSmrg for cmd in $cmds; do 4339e1e1713cSmrg IFS="$save_ifs" 4340e1e1713cSmrg eval cmd=\"$cmd\" 4341e1e1713cSmrg $show "$cmd" 4342e1e1713cSmrg $run eval "$cmd" || exit $? 4343e1e1713cSmrg done 4344e1e1713cSmrg IFS="$save_ifs" 43457a84e134Smrg 4346e1e1713cSmrg # Exit if we aren't doing a library object file. 4347e1e1713cSmrg if test -z "$libobj"; then 4348e1e1713cSmrg if test -n "$gentop"; then 4349e1e1713cSmrg $show "${rm}r $gentop" 4350e1e1713cSmrg $run ${rm}r $gentop 4351e1e1713cSmrg fi 43527a84e134Smrg 4353e1e1713cSmrg exit $EXIT_SUCCESS 4354e1e1713cSmrg fi 43557a84e134Smrg 4356e1e1713cSmrg if test "$build_libtool_libs" != yes; then 4357e1e1713cSmrg if test -n "$gentop"; then 4358e1e1713cSmrg $show "${rm}r $gentop" 4359e1e1713cSmrg $run ${rm}r $gentop 4360e1e1713cSmrg fi 43617a84e134Smrg 4362e1e1713cSmrg # Create an invalid libtool object if no PIC, so that we don't 4363e1e1713cSmrg # accidentally link it into a program. 4364e1e1713cSmrg # $show "echo timestamp > $libobj" 4365e1e1713cSmrg # $run eval "echo timestamp > $libobj" || exit $? 4366e1e1713cSmrg exit $EXIT_SUCCESS 4367e1e1713cSmrg fi 43687a84e134Smrg 4369e1e1713cSmrg if test -n "$pic_flag" || test "$pic_mode" != default; then 4370e1e1713cSmrg # Only do commands if we really have different PIC objects. 4371e1e1713cSmrg reload_objs="$libobjs $reload_conv_objs" 4372e1e1713cSmrg output="$libobj" 4373e1e1713cSmrg cmds=$reload_cmds 4374e1e1713cSmrg save_ifs="$IFS"; IFS='~' 4375e1e1713cSmrg for cmd in $cmds; do 4376e1e1713cSmrg IFS="$save_ifs" 4377e1e1713cSmrg eval cmd=\"$cmd\" 4378e1e1713cSmrg $show "$cmd" 4379e1e1713cSmrg $run eval "$cmd" || exit $? 4380e1e1713cSmrg done 4381e1e1713cSmrg IFS="$save_ifs" 4382e1e1713cSmrg fi 43837a84e134Smrg 4384e1e1713cSmrg if test -n "$gentop"; then 4385e1e1713cSmrg $show "${rm}r $gentop" 4386e1e1713cSmrg $run ${rm}r $gentop 4387e1e1713cSmrg fi 43887a84e134Smrg 4389e1e1713cSmrg exit $EXIT_SUCCESS 4390e1e1713cSmrg ;; 4391775e7de9Smrg 4392e1e1713cSmrg prog) 4393e1e1713cSmrg case $host in 4394e1e1713cSmrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 4395e1e1713cSmrg esac 4396e1e1713cSmrg if test -n "$vinfo"; then 4397e1e1713cSmrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 4398e1e1713cSmrg fi 43997a84e134Smrg 4400e1e1713cSmrg if test -n "$release"; then 4401e1e1713cSmrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 4402e1e1713cSmrg fi 44037a84e134Smrg 4404e1e1713cSmrg if test "$preload" = yes; then 4405e1e1713cSmrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 4406e1e1713cSmrg test "$dlopen_self_static" = unknown; then 4407e1e1713cSmrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 4408775e7de9Smrg fi 4409e1e1713cSmrg fi 44107a84e134Smrg 4411e1e1713cSmrg case $host in 4412e1e1713cSmrg *-*-rhapsody* | *-*-darwin1.[012]) 4413e1e1713cSmrg # On Rhapsody replace the C library is the System framework 4414e1e1713cSmrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4415e1e1713cSmrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4416775e7de9Smrg ;; 4417e1e1713cSmrg esac 44187a84e134Smrg 4419e1e1713cSmrg case $host in 4420e1e1713cSmrg *darwin*) 4421e1e1713cSmrg # Don't allow lazy linking, it breaks C++ global constructors 4422e1e1713cSmrg if test "$tagname" = CXX ; then 4423e1e1713cSmrg compile_command="$compile_command ${wl}-bind_at_load" 4424e1e1713cSmrg finalize_command="$finalize_command ${wl}-bind_at_load" 4425e1e1713cSmrg fi 4426e1e1713cSmrg ;; 4427e1e1713cSmrg esac 44287a84e134Smrg 44297a84e134Smrg 4430e1e1713cSmrg # move library search paths that coincide with paths to not yet 4431e1e1713cSmrg # installed libraries to the beginning of the library search list 4432e1e1713cSmrg new_libs= 4433e1e1713cSmrg for path in $notinst_path; do 4434e1e1713cSmrg case " $new_libs " in 4435e1e1713cSmrg *" -L$path/$objdir "*) ;; 4436e1e1713cSmrg *) 4437e1e1713cSmrg case " $compile_deplibs " in 4438e1e1713cSmrg *" -L$path/$objdir "*) 4439e1e1713cSmrg new_libs="$new_libs -L$path/$objdir" ;; 4440e1e1713cSmrg esac 4441e1e1713cSmrg ;; 4442e1e1713cSmrg esac 4443e1e1713cSmrg done 4444e1e1713cSmrg for deplib in $compile_deplibs; do 4445e1e1713cSmrg case $deplib in 4446e1e1713cSmrg -L*) 4447e1e1713cSmrg case " $new_libs " in 4448e1e1713cSmrg *" $deplib "*) ;; 4449e1e1713cSmrg *) new_libs="$new_libs $deplib" ;; 4450e1e1713cSmrg esac 4451e1e1713cSmrg ;; 4452e1e1713cSmrg *) new_libs="$new_libs $deplib" ;; 4453e1e1713cSmrg esac 4454e1e1713cSmrg done 4455e1e1713cSmrg compile_deplibs="$new_libs" 44567a84e134Smrg 44577a84e134Smrg 4458e1e1713cSmrg compile_command="$compile_command $compile_deplibs" 4459e1e1713cSmrg finalize_command="$finalize_command $finalize_deplibs" 44607a84e134Smrg 4461e1e1713cSmrg if test -n "$rpath$xrpath"; then 4462e1e1713cSmrg # If the user specified any rpath flags, then add them. 4463e1e1713cSmrg for libdir in $rpath $xrpath; do 4464e1e1713cSmrg # This is the magic to use -rpath. 4465e1e1713cSmrg case "$finalize_rpath " in 4466e1e1713cSmrg *" $libdir "*) ;; 4467e1e1713cSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 4468e1e1713cSmrg esac 4469e1e1713cSmrg done 4470e1e1713cSmrg fi 44717a84e134Smrg 4472e1e1713cSmrg # Now hardcode the library paths 4473e1e1713cSmrg rpath= 4474e1e1713cSmrg hardcode_libdirs= 4475e1e1713cSmrg for libdir in $compile_rpath $finalize_rpath; do 4476e1e1713cSmrg if test -n "$hardcode_libdir_flag_spec"; then 4477e1e1713cSmrg if test -n "$hardcode_libdir_separator"; then 4478e1e1713cSmrg if test -z "$hardcode_libdirs"; then 4479e1e1713cSmrg hardcode_libdirs="$libdir" 4480e1e1713cSmrg else 4481e1e1713cSmrg # Just accumulate the unique libdirs. 4482e1e1713cSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4483e1e1713cSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4484e1e1713cSmrg ;; 4485e1e1713cSmrg *) 4486e1e1713cSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4487e1e1713cSmrg ;; 4488e1e1713cSmrg esac 4489e1e1713cSmrg fi 4490775e7de9Smrg else 4491e1e1713cSmrg eval flag=\"$hardcode_libdir_flag_spec\" 4492e1e1713cSmrg rpath="$rpath $flag" 4493775e7de9Smrg fi 4494e1e1713cSmrg elif test -n "$runpath_var"; then 4495e1e1713cSmrg case "$perm_rpath " in 4496e1e1713cSmrg *" $libdir "*) ;; 4497e1e1713cSmrg *) perm_rpath="$perm_rpath $libdir" ;; 4498e1e1713cSmrg esac 4499775e7de9Smrg fi 4500775e7de9Smrg case $host in 4501e1e1713cSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 4502e1e1713cSmrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 4503775e7de9Smrg case :$dllsearchpath: in 4504e1e1713cSmrg *":$libdir:"*) ;; 4505e1e1713cSmrg *) dllsearchpath="$dllsearchpath:$libdir";; 4506775e7de9Smrg esac 4507775e7de9Smrg case :$dllsearchpath: in 4508775e7de9Smrg *":$testbindir:"*) ;; 4509775e7de9Smrg *) dllsearchpath="$dllsearchpath:$testbindir";; 4510775e7de9Smrg esac 4511775e7de9Smrg ;; 4512775e7de9Smrg esac 4513e1e1713cSmrg done 4514e1e1713cSmrg # Substitute the hardcoded libdirs into the rpath. 4515e1e1713cSmrg if test -n "$hardcode_libdir_separator" && 4516e1e1713cSmrg test -n "$hardcode_libdirs"; then 4517e1e1713cSmrg libdir="$hardcode_libdirs" 4518e1e1713cSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 4519e1e1713cSmrg fi 4520e1e1713cSmrg compile_rpath="$rpath" 45217a84e134Smrg 4522e1e1713cSmrg rpath= 4523e1e1713cSmrg hardcode_libdirs= 4524e1e1713cSmrg for libdir in $finalize_rpath; do 4525e1e1713cSmrg if test -n "$hardcode_libdir_flag_spec"; then 4526e1e1713cSmrg if test -n "$hardcode_libdir_separator"; then 4527e1e1713cSmrg if test -z "$hardcode_libdirs"; then 4528e1e1713cSmrg hardcode_libdirs="$libdir" 4529e1e1713cSmrg else 4530e1e1713cSmrg # Just accumulate the unique libdirs. 4531e1e1713cSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4532e1e1713cSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4533e1e1713cSmrg ;; 4534e1e1713cSmrg *) 4535e1e1713cSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4536e1e1713cSmrg ;; 4537e1e1713cSmrg esac 4538e1e1713cSmrg fi 4539e1e1713cSmrg else 4540e1e1713cSmrg eval flag=\"$hardcode_libdir_flag_spec\" 4541e1e1713cSmrg rpath="$rpath $flag" 4542e1e1713cSmrg fi 4543e1e1713cSmrg elif test -n "$runpath_var"; then 4544e1e1713cSmrg case "$finalize_perm_rpath " in 4545e1e1713cSmrg *" $libdir "*) ;; 4546e1e1713cSmrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 4547775e7de9Smrg esac 4548775e7de9Smrg fi 4549e1e1713cSmrg done 4550e1e1713cSmrg # Substitute the hardcoded libdirs into the rpath. 4551e1e1713cSmrg if test -n "$hardcode_libdir_separator" && 4552e1e1713cSmrg test -n "$hardcode_libdirs"; then 4553e1e1713cSmrg libdir="$hardcode_libdirs" 4554e1e1713cSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 4555e1e1713cSmrg fi 4556e1e1713cSmrg finalize_rpath="$rpath" 45577a84e134Smrg 4558e1e1713cSmrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 4559e1e1713cSmrg # Transform all the library objects into standard objects. 4560e1e1713cSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4561e1e1713cSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4562e1e1713cSmrg fi 45637a84e134Smrg 4564e1e1713cSmrg dlsyms= 4565e1e1713cSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4566e1e1713cSmrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 4567e1e1713cSmrg dlsyms="${outputname}S.c" 4568e1e1713cSmrg else 4569e1e1713cSmrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 4570e1e1713cSmrg fi 4571e1e1713cSmrg fi 45727a84e134Smrg 4573e1e1713cSmrg if test -n "$dlsyms"; then 4574e1e1713cSmrg case $dlsyms in 4575e1e1713cSmrg "") ;; 4576e1e1713cSmrg *.c) 4577e1e1713cSmrg # Discover the nlist of each of the dlfiles. 4578e1e1713cSmrg nlist="$output_objdir/${outputname}.nm" 45797a84e134Smrg 4580e1e1713cSmrg $show "$rm $nlist ${nlist}S ${nlist}T" 4581e1e1713cSmrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 45827a84e134Smrg 4583e1e1713cSmrg # Parse the name list into a source file. 4584e1e1713cSmrg $show "creating $output_objdir/$dlsyms" 45857a84e134Smrg 4586e1e1713cSmrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 4587e1e1713cSmrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 4588e1e1713cSmrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 45897a84e134Smrg 4590e1e1713cSmrg#ifdef __cplusplus 4591e1e1713cSmrgextern \"C\" { 4592e1e1713cSmrg#endif 45937a84e134Smrg 4594e1e1713cSmrg/* Prevent the only kind of declaration conflicts we can make. */ 4595e1e1713cSmrg#define lt_preloaded_symbols some_other_symbol 45967a84e134Smrg 4597e1e1713cSmrg/* External symbol declarations for the compiler. */\ 4598e1e1713cSmrg" 45997a84e134Smrg 4600e1e1713cSmrg if test "$dlself" = yes; then 4601e1e1713cSmrg $show "generating symbol list for \`$output'" 46027a84e134Smrg 4603e1e1713cSmrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 46047a84e134Smrg 4605e1e1713cSmrg # Add our own program objects to the symbol list. 4606e1e1713cSmrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4607e1e1713cSmrg for arg in $progfiles; do 4608e1e1713cSmrg $show "extracting global C symbols from \`$arg'" 4609e1e1713cSmrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4610e1e1713cSmrg done 46117a84e134Smrg 4612e1e1713cSmrg if test -n "$exclude_expsyms"; then 4613e1e1713cSmrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 4614e1e1713cSmrg $run eval '$mv "$nlist"T "$nlist"' 4615e1e1713cSmrg fi 46167a84e134Smrg 4617e1e1713cSmrg if test -n "$export_symbols_regex"; then 4618e1e1713cSmrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 4619e1e1713cSmrg $run eval '$mv "$nlist"T "$nlist"' 4620e1e1713cSmrg fi 46217a84e134Smrg 4622e1e1713cSmrg # Prepare the list of exported symbols 4623e1e1713cSmrg if test -z "$export_symbols"; then 4624e1e1713cSmrg export_symbols="$output_objdir/$outputname.exp" 4625e1e1713cSmrg $run $rm $export_symbols 4626e1e1713cSmrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 4627e1e1713cSmrg case $host in 4628e1e1713cSmrg *cygwin* | *mingw* ) 4629e1e1713cSmrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4630e1e1713cSmrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 4631e1e1713cSmrg ;; 4632e1e1713cSmrg esac 4633e1e1713cSmrg else 4634e1e1713cSmrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 4635e1e1713cSmrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 4636e1e1713cSmrg $run eval 'mv "$nlist"T "$nlist"' 4637e1e1713cSmrg case $host in 4638e1e1713cSmrg *cygwin* | *mingw* ) 4639e1e1713cSmrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4640e1e1713cSmrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 4641e1e1713cSmrg ;; 4642e1e1713cSmrg esac 4643e1e1713cSmrg fi 4644e1e1713cSmrg fi 46457a84e134Smrg 4646e1e1713cSmrg for arg in $dlprefiles; do 4647e1e1713cSmrg $show "extracting global C symbols from \`$arg'" 4648e1e1713cSmrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 4649e1e1713cSmrg $run eval '$echo ": $name " >> "$nlist"' 4650e1e1713cSmrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4651e1e1713cSmrg done 46527a84e134Smrg 4653e1e1713cSmrg if test -z "$run"; then 4654e1e1713cSmrg # Make sure we have at least an empty file. 4655e1e1713cSmrg test -f "$nlist" || : > "$nlist" 46567a84e134Smrg 4657e1e1713cSmrg if test -n "$exclude_expsyms"; then 4658e1e1713cSmrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 4659e1e1713cSmrg $mv "$nlist"T "$nlist" 4660e1e1713cSmrg fi 46617a84e134Smrg 4662e1e1713cSmrg # Try sorting and uniquifying the output. 4663e1e1713cSmrg if grep -v "^: " < "$nlist" | 4664e1e1713cSmrg if sort -k 3 </dev/null >/dev/null 2>&1; then 4665e1e1713cSmrg sort -k 3 4666e1e1713cSmrg else 4667e1e1713cSmrg sort +2 4668e1e1713cSmrg fi | 4669e1e1713cSmrg uniq > "$nlist"S; then 4670e1e1713cSmrg : 4671e1e1713cSmrg else 4672e1e1713cSmrg grep -v "^: " < "$nlist" > "$nlist"S 4673e1e1713cSmrg fi 46747a84e134Smrg 4675e1e1713cSmrg if test -f "$nlist"S; then 4676e1e1713cSmrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 4677e1e1713cSmrg else 4678e1e1713cSmrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 4679e1e1713cSmrg fi 46807a84e134Smrg 4681e1e1713cSmrg $echo >> "$output_objdir/$dlsyms" "\ 46827a84e134Smrg 4683e1e1713cSmrg#undef lt_preloaded_symbols 46847a84e134Smrg 4685e1e1713cSmrg#if defined (__STDC__) && __STDC__ 4686e1e1713cSmrg# define lt_ptr void * 4687e1e1713cSmrg#else 4688e1e1713cSmrg# define lt_ptr char * 4689e1e1713cSmrg# define const 4690e1e1713cSmrg#endif 46917a84e134Smrg 4692e1e1713cSmrg/* The mapping between symbol names and symbols. */ 4693e1e1713cSmrg" 46947a84e134Smrg 4695e1e1713cSmrg case $host in 4696e1e1713cSmrg *cygwin* | *mingw* ) 4697e1e1713cSmrg $echo >> "$output_objdir/$dlsyms" "\ 4698e1e1713cSmrg/* DATA imports from DLLs on WIN32 can't be const, because 4699e1e1713cSmrg runtime relocations are performed -- see ld's documentation 4700e1e1713cSmrg on pseudo-relocs */ 4701e1e1713cSmrgstruct { 4702e1e1713cSmrg" 4703e1e1713cSmrg ;; 4704e1e1713cSmrg * ) 4705e1e1713cSmrg $echo >> "$output_objdir/$dlsyms" "\ 4706e1e1713cSmrgconst struct { 4707e1e1713cSmrg" 4708e1e1713cSmrg ;; 4709e1e1713cSmrg esac 47107a84e134Smrg 47117a84e134Smrg 4712e1e1713cSmrg $echo >> "$output_objdir/$dlsyms" "\ 4713e1e1713cSmrg const char *name; 4714e1e1713cSmrg lt_ptr address; 4715e1e1713cSmrg} 4716e1e1713cSmrglt_preloaded_symbols[] = 4717e1e1713cSmrg{\ 4718e1e1713cSmrg" 47197a84e134Smrg 4720e1e1713cSmrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 47217a84e134Smrg 4722e1e1713cSmrg $echo >> "$output_objdir/$dlsyms" "\ 4723e1e1713cSmrg {0, (lt_ptr) 0} 4724e1e1713cSmrg}; 47257a84e134Smrg 4726e1e1713cSmrg/* This works around a problem in FreeBSD linker */ 4727e1e1713cSmrg#ifdef FREEBSD_WORKAROUND 4728e1e1713cSmrgstatic const void *lt_preloaded_setup() { 4729e1e1713cSmrg return lt_preloaded_symbols; 4730e1e1713cSmrg} 4731e1e1713cSmrg#endif 47327a84e134Smrg 4733e1e1713cSmrg#ifdef __cplusplus 4734e1e1713cSmrg} 4735e1e1713cSmrg#endif\ 4736e1e1713cSmrg" 4737775e7de9Smrg fi 4738ab902922Smrg 4739e1e1713cSmrg pic_flag_for_symtable= 4740e1e1713cSmrg case $host in 4741e1e1713cSmrg # compiling the symbol table file with pic_flag works around 4742e1e1713cSmrg # a FreeBSD bug that causes programs to crash when -lm is 4743e1e1713cSmrg # linked before any other PIC object. But we must not use 4744e1e1713cSmrg # pic_flag when linking with -static. The problem exists in 4745e1e1713cSmrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 4746e1e1713cSmrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 4747e1e1713cSmrg case "$compile_command " in 4748e1e1713cSmrg *" -static "*) ;; 4749e1e1713cSmrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 4750e1e1713cSmrg esac;; 4751e1e1713cSmrg *-*-hpux*) 4752e1e1713cSmrg case "$compile_command " in 4753e1e1713cSmrg *" -static "*) ;; 4754e1e1713cSmrg *) pic_flag_for_symtable=" $pic_flag";; 4755e1e1713cSmrg esac 4756e1e1713cSmrg esac 47577a84e134Smrg 4758e1e1713cSmrg # Now compile the dynamic symbol file. 4759e1e1713cSmrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 4760e1e1713cSmrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 47617a84e134Smrg 4762e1e1713cSmrg # Clean up the generated files. 4763e1e1713cSmrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 4764e1e1713cSmrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 47657a84e134Smrg 4766e1e1713cSmrg # Transform the symbol file into the correct name. 4767e1e1713cSmrg case $host in 4768e1e1713cSmrg *cygwin* | *mingw* ) 4769e1e1713cSmrg if test -f "$output_objdir/${outputname}.def" ; then 4770e1e1713cSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4771e1e1713cSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4772e1e1713cSmrg else 4773e1e1713cSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4774e1e1713cSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4775e1e1713cSmrg fi 4776e1e1713cSmrg ;; 4777e1e1713cSmrg * ) 4778e1e1713cSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4779e1e1713cSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4780e1e1713cSmrg ;; 4781e1e1713cSmrg esac 4782e1e1713cSmrg ;; 4783e1e1713cSmrg *) 4784e1e1713cSmrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 4785e1e1713cSmrg exit $EXIT_FAILURE 4786e1e1713cSmrg ;; 4787e1e1713cSmrg esac 4788e1e1713cSmrg else 4789e1e1713cSmrg # We keep going just in case the user didn't refer to 4790e1e1713cSmrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 4791e1e1713cSmrg # really was required. 47927a84e134Smrg 4793e1e1713cSmrg # Nullify the symbol file. 4794e1e1713cSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4795e1e1713cSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4796e1e1713cSmrg fi 4797775e7de9Smrg 4798e1e1713cSmrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 4799e1e1713cSmrg # Replace the output file specification. 4800e1e1713cSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 4801e1e1713cSmrg link_command="$compile_command$compile_rpath" 4802775e7de9Smrg 4803e1e1713cSmrg # We have no uninstalled library dependencies, so finalize right now. 4804e1e1713cSmrg $show "$link_command" 4805e1e1713cSmrg $run eval "$link_command" 4806e1e1713cSmrg exit_status=$? 4807775e7de9Smrg 4808e1e1713cSmrg # Delete the generated files. 4809e1e1713cSmrg if test -n "$dlsyms"; then 4810e1e1713cSmrg $show "$rm $output_objdir/${outputname}S.${objext}" 4811e1e1713cSmrg $run $rm "$output_objdir/${outputname}S.${objext}" 4812775e7de9Smrg fi 4813775e7de9Smrg 4814e1e1713cSmrg exit $exit_status 4815e1e1713cSmrg fi 4816775e7de9Smrg 4817e1e1713cSmrg if test -n "$shlibpath_var"; then 4818e1e1713cSmrg # We should set the shlibpath_var 4819e1e1713cSmrg rpath= 4820e1e1713cSmrg for dir in $temp_rpath; do 4821e1e1713cSmrg case $dir in 4822e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) 4823e1e1713cSmrg # Absolute path. 4824e1e1713cSmrg rpath="$rpath$dir:" 4825e1e1713cSmrg ;; 4826e1e1713cSmrg *) 4827e1e1713cSmrg # Relative path: add a thisdir entry. 4828e1e1713cSmrg rpath="$rpath\$thisdir/$dir:" 4829e1e1713cSmrg ;; 4830e1e1713cSmrg esac 4831e1e1713cSmrg done 4832e1e1713cSmrg temp_rpath="$rpath" 4833775e7de9Smrg fi 4834775e7de9Smrg 4835e1e1713cSmrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 4836e1e1713cSmrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 4837e1e1713cSmrg fi 4838e1e1713cSmrg if test -n "$finalize_shlibpath"; then 4839e1e1713cSmrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 4840e1e1713cSmrg fi 4841775e7de9Smrg 4842e1e1713cSmrg compile_var= 4843e1e1713cSmrg finalize_var= 4844e1e1713cSmrg if test -n "$runpath_var"; then 4845e1e1713cSmrg if test -n "$perm_rpath"; then 4846e1e1713cSmrg # We should set the runpath_var. 4847e1e1713cSmrg rpath= 4848e1e1713cSmrg for dir in $perm_rpath; do 4849e1e1713cSmrg rpath="$rpath$dir:" 4850e1e1713cSmrg done 4851e1e1713cSmrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 4852e1e1713cSmrg fi 4853e1e1713cSmrg if test -n "$finalize_perm_rpath"; then 4854e1e1713cSmrg # We should set the runpath_var. 4855e1e1713cSmrg rpath= 4856e1e1713cSmrg for dir in $finalize_perm_rpath; do 4857e1e1713cSmrg rpath="$rpath$dir:" 4858e1e1713cSmrg done 4859e1e1713cSmrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 4860e1e1713cSmrg fi 4861e1e1713cSmrg fi 4862775e7de9Smrg 4863e1e1713cSmrg if test "$no_install" = yes; then 4864e1e1713cSmrg # We don't need to create a wrapper script. 4865e1e1713cSmrg link_command="$compile_var$compile_command$compile_rpath" 4866e1e1713cSmrg # Replace the output file specification. 4867e1e1713cSmrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 4868e1e1713cSmrg # Delete the old output file. 4869e1e1713cSmrg $run $rm $output 4870e1e1713cSmrg # Link the executable and exit 4871e1e1713cSmrg $show "$link_command" 4872e1e1713cSmrg $run eval "$link_command" || exit $? 4873e1e1713cSmrg exit $EXIT_SUCCESS 4874e1e1713cSmrg fi 4875775e7de9Smrg 4876e1e1713cSmrg if test "$hardcode_action" = relink; then 4877e1e1713cSmrg # Fast installation is not supported 4878e1e1713cSmrg link_command="$compile_var$compile_command$compile_rpath" 4879e1e1713cSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4880775e7de9Smrg 4881e1e1713cSmrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 4882e1e1713cSmrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 4883e1e1713cSmrg else 4884e1e1713cSmrg if test "$fast_install" != no; then 4885e1e1713cSmrg link_command="$finalize_var$compile_command$finalize_rpath" 4886e1e1713cSmrg if test "$fast_install" = yes; then 4887e1e1713cSmrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 4888e1e1713cSmrg else 4889e1e1713cSmrg # fast_install is set to needless 4890e1e1713cSmrg relink_command= 4891e1e1713cSmrg fi 4892e1e1713cSmrg else 4893e1e1713cSmrg link_command="$compile_var$compile_command$compile_rpath" 4894e1e1713cSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4895e1e1713cSmrg fi 4896775e7de9Smrg fi 4897775e7de9Smrg 4898e1e1713cSmrg # Replace the output file specification. 4899e1e1713cSmrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 4900775e7de9Smrg 4901e1e1713cSmrg # Delete the old output files. 4902e1e1713cSmrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 4903775e7de9Smrg 4904e1e1713cSmrg $show "$link_command" 4905e1e1713cSmrg $run eval "$link_command" || exit $? 4906775e7de9Smrg 4907e1e1713cSmrg # Now create the wrapper script. 4908e1e1713cSmrg $show "creating $output" 4909775e7de9Smrg 4910e1e1713cSmrg # Quote the relink command for shipping. 4911e1e1713cSmrg if test -n "$relink_command"; then 4912e1e1713cSmrg # Preserve any variables that may affect compiler behavior 4913e1e1713cSmrg for var in $variables_saved_for_relink; do 4914e1e1713cSmrg if eval test -z \"\${$var+set}\"; then 4915e1e1713cSmrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 4916e1e1713cSmrg elif eval var_value=\$$var; test -z "$var_value"; then 4917e1e1713cSmrg relink_command="$var=; export $var; $relink_command" 4918e1e1713cSmrg else 4919e1e1713cSmrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 4920e1e1713cSmrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 4921e1e1713cSmrg fi 4922775e7de9Smrg done 4923e1e1713cSmrg relink_command="(cd `pwd`; $relink_command)" 4924e1e1713cSmrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 4925775e7de9Smrg fi 4926775e7de9Smrg 4927e1e1713cSmrg # Quote $echo for shipping. 4928e1e1713cSmrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 4929e1e1713cSmrg case $progpath in 4930e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 4931e1e1713cSmrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 4932775e7de9Smrg esac 4933e1e1713cSmrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 4934e1e1713cSmrg else 4935e1e1713cSmrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 4936775e7de9Smrg fi 4937775e7de9Smrg 4938e1e1713cSmrg # Only actually do things if our run command is non-null. 4939e1e1713cSmrg if test -z "$run"; then 4940e1e1713cSmrg # win32 will think the script is a binary if it has 4941e1e1713cSmrg # a .exe suffix, so we strip it off here. 4942e1e1713cSmrg case $output in 4943e1e1713cSmrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 4944e1e1713cSmrg esac 4945e1e1713cSmrg # test for cygwin because mv fails w/o .exe extensions 4946e1e1713cSmrg case $host in 4947e1e1713cSmrg *cygwin*) 4948e1e1713cSmrg exeext=.exe 4949e1e1713cSmrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 4950e1e1713cSmrg *) exeext= ;; 4951e1e1713cSmrg esac 4952e1e1713cSmrg case $host in 4953e1e1713cSmrg *cygwin* | *mingw* ) 4954e1e1713cSmrg output_name=`basename $output` 4955e1e1713cSmrg output_path=`dirname $output` 4956e1e1713cSmrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 4957e1e1713cSmrg cwrapper="$output_path/$output_name.exe" 4958e1e1713cSmrg $rm $cwrappersource $cwrapper 4959e1e1713cSmrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 4960775e7de9Smrg 4961e1e1713cSmrg cat > $cwrappersource <<EOF 4962775e7de9Smrg 4963e1e1713cSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4964e1e1713cSmrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 4965775e7de9Smrg 4966e1e1713cSmrg The $output program cannot be directly executed until all the libtool 4967e1e1713cSmrg libraries that it depends on are installed. 4968775e7de9Smrg 4969e1e1713cSmrg This wrapper executable should never be moved out of the build directory. 4970e1e1713cSmrg If it is, it will not operate correctly. 4971775e7de9Smrg 4972e1e1713cSmrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 4973e1e1713cSmrg but could eventually absorb all of the scripts functionality and 4974e1e1713cSmrg exec $objdir/$outputname directly. 4975e1e1713cSmrg*/ 4976e1e1713cSmrgEOF 4977e1e1713cSmrg cat >> $cwrappersource<<"EOF" 4978e1e1713cSmrg#include <stdio.h> 4979e1e1713cSmrg#include <stdlib.h> 4980e1e1713cSmrg#include <unistd.h> 4981e1e1713cSmrg#include <malloc.h> 4982e1e1713cSmrg#include <stdarg.h> 4983e1e1713cSmrg#include <assert.h> 4984e1e1713cSmrg#include <string.h> 4985e1e1713cSmrg#include <ctype.h> 4986e1e1713cSmrg#include <sys/stat.h> 4987775e7de9Smrg 4988e1e1713cSmrg#if defined(PATH_MAX) 4989e1e1713cSmrg# define LT_PATHMAX PATH_MAX 4990e1e1713cSmrg#elif defined(MAXPATHLEN) 4991e1e1713cSmrg# define LT_PATHMAX MAXPATHLEN 4992e1e1713cSmrg#else 4993e1e1713cSmrg# define LT_PATHMAX 1024 4994e1e1713cSmrg#endif 4995775e7de9Smrg 4996e1e1713cSmrg#ifndef DIR_SEPARATOR 4997e1e1713cSmrg# define DIR_SEPARATOR '/' 4998e1e1713cSmrg# define PATH_SEPARATOR ':' 4999e1e1713cSmrg#endif 5000775e7de9Smrg 5001e1e1713cSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 5002e1e1713cSmrg defined (__OS2__) 5003e1e1713cSmrg# define HAVE_DOS_BASED_FILE_SYSTEM 5004e1e1713cSmrg# ifndef DIR_SEPARATOR_2 5005e1e1713cSmrg# define DIR_SEPARATOR_2 '\\' 5006e1e1713cSmrg# endif 5007e1e1713cSmrg# ifndef PATH_SEPARATOR_2 5008e1e1713cSmrg# define PATH_SEPARATOR_2 ';' 5009e1e1713cSmrg# endif 5010e1e1713cSmrg#endif 5011775e7de9Smrg 5012e1e1713cSmrg#ifndef DIR_SEPARATOR_2 5013e1e1713cSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 5014e1e1713cSmrg#else /* DIR_SEPARATOR_2 */ 5015e1e1713cSmrg# define IS_DIR_SEPARATOR(ch) \ 5016e1e1713cSmrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 5017e1e1713cSmrg#endif /* DIR_SEPARATOR_2 */ 5018775e7de9Smrg 5019e1e1713cSmrg#ifndef PATH_SEPARATOR_2 5020e1e1713cSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 5021e1e1713cSmrg#else /* PATH_SEPARATOR_2 */ 5022e1e1713cSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 5023e1e1713cSmrg#endif /* PATH_SEPARATOR_2 */ 5024775e7de9Smrg 5025e1e1713cSmrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 5026e1e1713cSmrg#define XFREE(stale) do { \ 5027e1e1713cSmrg if (stale) { free ((void *) stale); stale = 0; } \ 5028e1e1713cSmrg} while (0) 5029775e7de9Smrg 5030e1e1713cSmrg/* -DDEBUG is fairly common in CFLAGS. */ 5031e1e1713cSmrg#undef DEBUG 5032e1e1713cSmrg#if defined DEBUGWRAPPER 5033e1e1713cSmrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 5034e1e1713cSmrg#else 5035e1e1713cSmrg# define DEBUG(format, ...) 5036e1e1713cSmrg#endif 5037775e7de9Smrg 5038e1e1713cSmrgconst char *program_name = NULL; 5039775e7de9Smrg 5040e1e1713cSmrgvoid * xmalloc (size_t num); 5041e1e1713cSmrgchar * xstrdup (const char *string); 5042e1e1713cSmrgconst char * base_name (const char *name); 5043e1e1713cSmrgchar * find_executable(const char *wrapper); 5044e1e1713cSmrgint check_executable(const char *path); 5045e1e1713cSmrgchar * strendzap(char *str, const char *pat); 5046e1e1713cSmrgvoid lt_fatal (const char *message, ...); 5047775e7de9Smrg 5048e1e1713cSmrgint 5049e1e1713cSmrgmain (int argc, char *argv[]) 5050e1e1713cSmrg{ 5051e1e1713cSmrg char **newargz; 5052e1e1713cSmrg int i; 5053775e7de9Smrg 5054e1e1713cSmrg program_name = (char *) xstrdup (base_name (argv[0])); 5055e1e1713cSmrg DEBUG("(main) argv[0] : %s\n",argv[0]); 5056e1e1713cSmrg DEBUG("(main) program_name : %s\n",program_name); 5057e1e1713cSmrg newargz = XMALLOC(char *, argc+2); 5058e1e1713cSmrgEOF 5059775e7de9Smrg 5060e1e1713cSmrg cat >> $cwrappersource <<EOF 5061e1e1713cSmrg newargz[0] = (char *) xstrdup("$SHELL"); 5062e1e1713cSmrgEOF 5063775e7de9Smrg 5064e1e1713cSmrg cat >> $cwrappersource <<"EOF" 5065e1e1713cSmrg newargz[1] = find_executable(argv[0]); 5066e1e1713cSmrg if (newargz[1] == NULL) 5067e1e1713cSmrg lt_fatal("Couldn't find %s", argv[0]); 5068e1e1713cSmrg DEBUG("(main) found exe at : %s\n",newargz[1]); 5069e1e1713cSmrg /* we know the script has the same name, without the .exe */ 5070e1e1713cSmrg /* so make sure newargz[1] doesn't end in .exe */ 5071e1e1713cSmrg strendzap(newargz[1],".exe"); 5072e1e1713cSmrg for (i = 1; i < argc; i++) 5073e1e1713cSmrg newargz[i+1] = xstrdup(argv[i]); 5074e1e1713cSmrg newargz[argc+1] = NULL; 5075775e7de9Smrg 5076e1e1713cSmrg for (i=0; i<argc+1; i++) 5077e1e1713cSmrg { 5078e1e1713cSmrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 5079e1e1713cSmrg ; 5080e1e1713cSmrg } 5081775e7de9Smrg 5082e1e1713cSmrgEOF 5083775e7de9Smrg 5084e1e1713cSmrg case $host_os in 5085e1e1713cSmrg mingw*) 5086e1e1713cSmrg cat >> $cwrappersource <<EOF 5087e1e1713cSmrg execv("$SHELL",(char const **)newargz); 5088e1e1713cSmrgEOF 5089e1e1713cSmrg ;; 5090e1e1713cSmrg *) 5091e1e1713cSmrg cat >> $cwrappersource <<EOF 5092e1e1713cSmrg execv("$SHELL",newargz); 5093e1e1713cSmrgEOF 5094e1e1713cSmrg ;; 5095e1e1713cSmrg esac 5096775e7de9Smrg 5097e1e1713cSmrg cat >> $cwrappersource <<"EOF" 5098e1e1713cSmrg return 127; 5099e1e1713cSmrg} 5100775e7de9Smrg 5101e1e1713cSmrgvoid * 5102e1e1713cSmrgxmalloc (size_t num) 5103e1e1713cSmrg{ 5104e1e1713cSmrg void * p = (void *) malloc (num); 5105e1e1713cSmrg if (!p) 5106e1e1713cSmrg lt_fatal ("Memory exhausted"); 5107775e7de9Smrg 5108e1e1713cSmrg return p; 5109e1e1713cSmrg} 5110775e7de9Smrg 5111e1e1713cSmrgchar * 5112e1e1713cSmrgxstrdup (const char *string) 5113e1e1713cSmrg{ 5114e1e1713cSmrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 5115e1e1713cSmrg; 5116e1e1713cSmrg} 5117775e7de9Smrg 5118e1e1713cSmrgconst char * 5119e1e1713cSmrgbase_name (const char *name) 5120e1e1713cSmrg{ 5121e1e1713cSmrg const char *base; 5122775e7de9Smrg 5123e1e1713cSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5124e1e1713cSmrg /* Skip over the disk name in MSDOS pathnames. */ 5125e1e1713cSmrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 5126e1e1713cSmrg name += 2; 5127e1e1713cSmrg#endif 5128775e7de9Smrg 5129e1e1713cSmrg for (base = name; *name; name++) 5130e1e1713cSmrg if (IS_DIR_SEPARATOR (*name)) 5131e1e1713cSmrg base = name + 1; 5132e1e1713cSmrg return base; 5133e1e1713cSmrg} 5134775e7de9Smrg 5135e1e1713cSmrgint 5136e1e1713cSmrgcheck_executable(const char * path) 5137e1e1713cSmrg{ 5138e1e1713cSmrg struct stat st; 5139775e7de9Smrg 5140e1e1713cSmrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 5141e1e1713cSmrg if ((!path) || (!*path)) 5142e1e1713cSmrg return 0; 5143775e7de9Smrg 5144e1e1713cSmrg if ((stat (path, &st) >= 0) && 5145e1e1713cSmrg ( 5146e1e1713cSmrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 5147e1e1713cSmrg#if defined (S_IXOTH) 5148e1e1713cSmrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 5149e1e1713cSmrg#endif 5150e1e1713cSmrg#if defined (S_IXGRP) 5151e1e1713cSmrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 5152e1e1713cSmrg#endif 5153e1e1713cSmrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 5154e1e1713cSmrg ) 5155e1e1713cSmrg return 1; 5156e1e1713cSmrg else 5157e1e1713cSmrg return 0; 5158e1e1713cSmrg} 5159775e7de9Smrg 5160e1e1713cSmrg/* Searches for the full path of the wrapper. Returns 5161e1e1713cSmrg newly allocated full path name if found, NULL otherwise */ 5162e1e1713cSmrgchar * 5163e1e1713cSmrgfind_executable (const char* wrapper) 5164e1e1713cSmrg{ 5165e1e1713cSmrg int has_slash = 0; 5166e1e1713cSmrg const char* p; 5167e1e1713cSmrg const char* p_next; 5168e1e1713cSmrg /* static buffer for getcwd */ 5169e1e1713cSmrg char tmp[LT_PATHMAX + 1]; 5170e1e1713cSmrg int tmp_len; 5171e1e1713cSmrg char* concat_name; 5172775e7de9Smrg 5173e1e1713cSmrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 5174775e7de9Smrg 5175e1e1713cSmrg if ((wrapper == NULL) || (*wrapper == '\0')) 5176e1e1713cSmrg return NULL; 51777a84e134Smrg 5178e1e1713cSmrg /* Absolute path? */ 5179e1e1713cSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5180e1e1713cSmrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 5181e1e1713cSmrg { 5182e1e1713cSmrg concat_name = xstrdup (wrapper); 5183e1e1713cSmrg if (check_executable(concat_name)) 5184e1e1713cSmrg return concat_name; 5185e1e1713cSmrg XFREE(concat_name); 5186e1e1713cSmrg } 5187e1e1713cSmrg else 5188e1e1713cSmrg { 5189e1e1713cSmrg#endif 5190e1e1713cSmrg if (IS_DIR_SEPARATOR (wrapper[0])) 5191e1e1713cSmrg { 5192e1e1713cSmrg concat_name = xstrdup (wrapper); 5193e1e1713cSmrg if (check_executable(concat_name)) 5194e1e1713cSmrg return concat_name; 5195e1e1713cSmrg XFREE(concat_name); 5196e1e1713cSmrg } 5197e1e1713cSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5198e1e1713cSmrg } 5199e1e1713cSmrg#endif 5200e1e1713cSmrg 5201e1e1713cSmrg for (p = wrapper; *p; p++) 5202e1e1713cSmrg if (*p == '/') 5203e1e1713cSmrg { 5204e1e1713cSmrg has_slash = 1; 5205e1e1713cSmrg break; 5206e1e1713cSmrg } 5207e1e1713cSmrg if (!has_slash) 5208e1e1713cSmrg { 5209e1e1713cSmrg /* no slashes; search PATH */ 5210e1e1713cSmrg const char* path = getenv ("PATH"); 5211e1e1713cSmrg if (path != NULL) 5212e1e1713cSmrg { 5213e1e1713cSmrg for (p = path; *p; p = p_next) 5214e1e1713cSmrg { 5215e1e1713cSmrg const char* q; 5216e1e1713cSmrg size_t p_len; 5217e1e1713cSmrg for (q = p; *q; q++) 5218e1e1713cSmrg if (IS_PATH_SEPARATOR(*q)) 5219e1e1713cSmrg break; 5220e1e1713cSmrg p_len = q - p; 5221e1e1713cSmrg p_next = (*q == '\0' ? q : q + 1); 5222e1e1713cSmrg if (p_len == 0) 5223e1e1713cSmrg { 5224e1e1713cSmrg /* empty path: current directory */ 5225e1e1713cSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5226e1e1713cSmrg lt_fatal ("getcwd failed"); 5227e1e1713cSmrg tmp_len = strlen(tmp); 5228e1e1713cSmrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5229e1e1713cSmrg memcpy (concat_name, tmp, tmp_len); 5230e1e1713cSmrg concat_name[tmp_len] = '/'; 5231e1e1713cSmrg strcpy (concat_name + tmp_len + 1, wrapper); 5232e1e1713cSmrg } 5233e1e1713cSmrg else 5234e1e1713cSmrg { 5235e1e1713cSmrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 5236e1e1713cSmrg memcpy (concat_name, p, p_len); 5237e1e1713cSmrg concat_name[p_len] = '/'; 5238e1e1713cSmrg strcpy (concat_name + p_len + 1, wrapper); 5239e1e1713cSmrg } 5240e1e1713cSmrg if (check_executable(concat_name)) 5241e1e1713cSmrg return concat_name; 5242e1e1713cSmrg XFREE(concat_name); 5243e1e1713cSmrg } 5244e1e1713cSmrg } 5245e1e1713cSmrg /* not found in PATH; assume curdir */ 5246e1e1713cSmrg } 5247e1e1713cSmrg /* Relative path | not found in path: prepend cwd */ 5248e1e1713cSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5249e1e1713cSmrg lt_fatal ("getcwd failed"); 5250e1e1713cSmrg tmp_len = strlen(tmp); 5251e1e1713cSmrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5252e1e1713cSmrg memcpy (concat_name, tmp, tmp_len); 5253e1e1713cSmrg concat_name[tmp_len] = '/'; 5254e1e1713cSmrg strcpy (concat_name + tmp_len + 1, wrapper); 5255e1e1713cSmrg 5256e1e1713cSmrg if (check_executable(concat_name)) 5257e1e1713cSmrg return concat_name; 5258e1e1713cSmrg XFREE(concat_name); 5259e1e1713cSmrg return NULL; 5260e1e1713cSmrg} 5261e1e1713cSmrg 5262e1e1713cSmrgchar * 5263e1e1713cSmrgstrendzap(char *str, const char *pat) 5264e1e1713cSmrg{ 5265e1e1713cSmrg size_t len, patlen; 5266e1e1713cSmrg 5267e1e1713cSmrg assert(str != NULL); 5268e1e1713cSmrg assert(pat != NULL); 5269e1e1713cSmrg 5270e1e1713cSmrg len = strlen(str); 5271e1e1713cSmrg patlen = strlen(pat); 5272e1e1713cSmrg 5273e1e1713cSmrg if (patlen <= len) 5274e1e1713cSmrg { 5275e1e1713cSmrg str += len - patlen; 5276e1e1713cSmrg if (strcmp(str, pat) == 0) 5277e1e1713cSmrg *str = '\0'; 5278e1e1713cSmrg } 5279e1e1713cSmrg return str; 5280e1e1713cSmrg} 5281e1e1713cSmrg 5282e1e1713cSmrgstatic void 5283e1e1713cSmrglt_error_core (int exit_status, const char * mode, 5284e1e1713cSmrg const char * message, va_list ap) 5285e1e1713cSmrg{ 5286e1e1713cSmrg fprintf (stderr, "%s: %s: ", program_name, mode); 5287e1e1713cSmrg vfprintf (stderr, message, ap); 5288e1e1713cSmrg fprintf (stderr, ".\n"); 5289e1e1713cSmrg 5290e1e1713cSmrg if (exit_status >= 0) 5291e1e1713cSmrg exit (exit_status); 5292e1e1713cSmrg} 5293e1e1713cSmrg 5294e1e1713cSmrgvoid 5295e1e1713cSmrglt_fatal (const char *message, ...) 5296e1e1713cSmrg{ 5297e1e1713cSmrg va_list ap; 5298e1e1713cSmrg va_start (ap, message); 5299e1e1713cSmrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 5300e1e1713cSmrg va_end (ap); 5301e1e1713cSmrg} 5302e1e1713cSmrgEOF 5303e1e1713cSmrg # we should really use a build-platform specific compiler 5304e1e1713cSmrg # here, but OTOH, the wrappers (shell script and this C one) 5305e1e1713cSmrg # are only useful if you want to execute the "real" binary. 5306e1e1713cSmrg # Since the "real" binary is built for $host, then this 5307e1e1713cSmrg # wrapper might as well be built for $host, too. 5308e1e1713cSmrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 5309e1e1713cSmrg ;; 5310e1e1713cSmrg esac 5311e1e1713cSmrg $rm $output 5312e1e1713cSmrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 5313e1e1713cSmrg 5314e1e1713cSmrg $echo > $output "\ 5315e1e1713cSmrg#! $SHELL 5316e1e1713cSmrg 5317e1e1713cSmrg# $output - temporary wrapper script for $objdir/$outputname 5318e1e1713cSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5319e1e1713cSmrg# 5320e1e1713cSmrg# The $output program cannot be directly executed until all the libtool 5321e1e1713cSmrg# libraries that it depends on are installed. 5322e1e1713cSmrg# 5323e1e1713cSmrg# This wrapper script should never be moved out of the build directory. 5324e1e1713cSmrg# If it is, it will not operate correctly. 5325e1e1713cSmrg 5326e1e1713cSmrg# Sed substitution that helps us do robust quoting. It backslashifies 5327e1e1713cSmrg# metacharacters that are still active within double-quoted strings. 5328e1e1713cSmrgXsed='${SED} -e 1s/^X//' 5329e1e1713cSmrgsed_quote_subst='$sed_quote_subst' 5330e1e1713cSmrg 5331e1e1713cSmrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 5332e1e1713cSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 5333e1e1713cSmrg emulate sh 5334e1e1713cSmrg NULLCMD=: 5335e1e1713cSmrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 5336e1e1713cSmrg # is contrary to our usage. Disable this feature. 5337e1e1713cSmrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 5338e1e1713cSmrg setopt NO_GLOB_SUBST 5339e1e1713cSmrgelse 5340e1e1713cSmrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 5341e1e1713cSmrgfi 5342e1e1713cSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 5343e1e1713cSmrgDUALCASE=1; export DUALCASE # for MKS sh 5344e1e1713cSmrg 5345e1e1713cSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout 5346e1e1713cSmrg# if CDPATH is set. 5347e1e1713cSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 5348e1e1713cSmrg 5349e1e1713cSmrgrelink_command=\"$relink_command\" 5350e1e1713cSmrg 5351e1e1713cSmrg# This environment variable determines our operation mode. 5352e1e1713cSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then 5353e1e1713cSmrg # install mode needs the following variable: 5354e1e1713cSmrg notinst_deplibs='$notinst_deplibs' 5355e1e1713cSmrgelse 5356e1e1713cSmrg # When we are sourced in execute mode, \$file and \$echo are already set. 5357e1e1713cSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5358e1e1713cSmrg echo=\"$qecho\" 5359e1e1713cSmrg file=\"\$0\" 5360e1e1713cSmrg # Make sure echo works. 5361e1e1713cSmrg if test \"X\$1\" = X--no-reexec; then 5362e1e1713cSmrg # Discard the --no-reexec flag, and continue. 5363e1e1713cSmrg shift 5364e1e1713cSmrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 5365e1e1713cSmrg # Yippee, \$echo works! 5366e1e1713cSmrg : 5367e1e1713cSmrg else 5368e1e1713cSmrg # Restart under the correct shell, and then maybe \$echo will work. 5369e1e1713cSmrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 5370e1e1713cSmrg fi 5371e1e1713cSmrg fi\ 5372e1e1713cSmrg" 5373e1e1713cSmrg $echo >> $output "\ 53747a84e134Smrg 5375e1e1713cSmrg # Find the directory that this script lives in. 5376e1e1713cSmrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 5377e1e1713cSmrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 53787a84e134Smrg 5379e1e1713cSmrg # Follow symbolic links until we get to the real thisdir. 5380e1e1713cSmrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 5381e1e1713cSmrg while test -n \"\$file\"; do 5382e1e1713cSmrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 53837a84e134Smrg 5384e1e1713cSmrg # If there was a directory component, then change thisdir. 5385e1e1713cSmrg if test \"x\$destdir\" != \"x\$file\"; then 5386e1e1713cSmrg case \"\$destdir\" in 5387e1e1713cSmrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 5388e1e1713cSmrg *) thisdir=\"\$thisdir/\$destdir\" ;; 5389e1e1713cSmrg esac 5390e1e1713cSmrg fi 53917a84e134Smrg 5392e1e1713cSmrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 5393e1e1713cSmrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 5394e1e1713cSmrg done 53957a84e134Smrg 5396e1e1713cSmrg # Try to get the absolute directory name. 5397e1e1713cSmrg absdir=\`cd \"\$thisdir\" && pwd\` 5398e1e1713cSmrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 5399e1e1713cSmrg" 54007a84e134Smrg 5401e1e1713cSmrg if test "$fast_install" = yes; then 5402e1e1713cSmrg $echo >> $output "\ 5403e1e1713cSmrg program=lt-'$outputname'$exeext 5404e1e1713cSmrg progdir=\"\$thisdir/$objdir\" 54057a84e134Smrg 5406e1e1713cSmrg if test ! -f \"\$progdir/\$program\" || \\ 5407e1e1713cSmrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 5408e1e1713cSmrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 54097a84e134Smrg 5410e1e1713cSmrg file=\"\$\$-\$program\" 54117a84e134Smrg 5412e1e1713cSmrg if test ! -d \"\$progdir\"; then 5413e1e1713cSmrg $mkdir \"\$progdir\" 5414e1e1713cSmrg else 5415e1e1713cSmrg $rm \"\$progdir/\$file\" 5416e1e1713cSmrg fi" 54177a84e134Smrg 5418e1e1713cSmrg $echo >> $output "\ 54197a84e134Smrg 5420e1e1713cSmrg # relink executable if necessary 5421e1e1713cSmrg if test -n \"\$relink_command\"; then 5422e1e1713cSmrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 5423e1e1713cSmrg else 5424e1e1713cSmrg $echo \"\$relink_command_output\" >&2 5425e1e1713cSmrg $rm \"\$progdir/\$file\" 5426e1e1713cSmrg exit $EXIT_FAILURE 5427e1e1713cSmrg fi 5428e1e1713cSmrg fi 54297a84e134Smrg 5430e1e1713cSmrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 5431e1e1713cSmrg { $rm \"\$progdir/\$program\"; 5432e1e1713cSmrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 5433e1e1713cSmrg $rm \"\$progdir/\$file\" 5434e1e1713cSmrg fi" 5435e1e1713cSmrg else 5436e1e1713cSmrg $echo >> $output "\ 5437e1e1713cSmrg program='$outputname' 5438e1e1713cSmrg progdir=\"\$thisdir/$objdir\" 5439e1e1713cSmrg" 54407a84e134Smrg fi 54417a84e134Smrg 5442e1e1713cSmrg $echo >> $output "\ 54437a84e134Smrg 5444e1e1713cSmrg if test -f \"\$progdir/\$program\"; then" 54457a84e134Smrg 5446e1e1713cSmrg # Export our shlibpath_var if we have one. 5447e1e1713cSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 5448e1e1713cSmrg $echo >> $output "\ 5449e1e1713cSmrg # Add our own library path to $shlibpath_var 5450e1e1713cSmrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 54517a84e134Smrg 5452e1e1713cSmrg # Some systems cannot cope with colon-terminated $shlibpath_var 5453e1e1713cSmrg # The second colon is a workaround for a bug in BeOS R4 sed 5454e1e1713cSmrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 54557a84e134Smrg 5456e1e1713cSmrg export $shlibpath_var 5457e1e1713cSmrg" 5458e1e1713cSmrg fi 54597a84e134Smrg 5460e1e1713cSmrg # fixup the dll searchpath if we need to. 5461e1e1713cSmrg if test -n "$dllsearchpath"; then 5462e1e1713cSmrg $echo >> $output "\ 5463e1e1713cSmrg # Add the dll search path components to the executable PATH 5464e1e1713cSmrg PATH=$dllsearchpath:\$PATH 5465e1e1713cSmrg" 5466e1e1713cSmrg fi 5467775e7de9Smrg 5468e1e1713cSmrg $echo >> $output "\ 5469e1e1713cSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5470e1e1713cSmrg # Run the actual program with our arguments. 5471e1e1713cSmrg" 5472e1e1713cSmrg case $host in 5473e1e1713cSmrg # Backslashes separate directories on plain windows 5474e1e1713cSmrg *-*-mingw | *-*-os2*) 5475e1e1713cSmrg $echo >> $output "\ 5476e1e1713cSmrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 5477e1e1713cSmrg" 5478e1e1713cSmrg ;; 54797a84e134Smrg 5480e1e1713cSmrg *) 5481e1e1713cSmrg $echo >> $output "\ 5482e1e1713cSmrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 5483e1e1713cSmrg" 5484e1e1713cSmrg ;; 5485e1e1713cSmrg esac 5486e1e1713cSmrg $echo >> $output "\ 5487e1e1713cSmrg \$echo \"\$0: cannot exec \$program \$*\" 5488e1e1713cSmrg exit $EXIT_FAILURE 5489e1e1713cSmrg fi 5490e1e1713cSmrg else 5491e1e1713cSmrg # The program doesn't exist. 5492e1e1713cSmrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 5493e1e1713cSmrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 5494e1e1713cSmrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 5495e1e1713cSmrg exit $EXIT_FAILURE 5496e1e1713cSmrg fi 5497e1e1713cSmrgfi\ 5498e1e1713cSmrg" 5499e1e1713cSmrg chmod +x $output 5500e1e1713cSmrg fi 5501e1e1713cSmrg exit $EXIT_SUCCESS 5502e1e1713cSmrg ;; 5503e1e1713cSmrg esac 55047a84e134Smrg 5505e1e1713cSmrg # See if we need to build an old-fashioned archive. 5506e1e1713cSmrg for oldlib in $oldlibs; do 55077a84e134Smrg 5508e1e1713cSmrg if test "$build_libtool_libs" = convenience; then 5509e1e1713cSmrg oldobjs="$libobjs_save" 5510e1e1713cSmrg addlibs="$convenience" 5511e1e1713cSmrg build_libtool_libs=no 5512e1e1713cSmrg else 5513e1e1713cSmrg if test "$build_libtool_libs" = module; then 5514e1e1713cSmrg oldobjs="$libobjs_save" 5515e1e1713cSmrg build_libtool_libs=no 5516e1e1713cSmrg else 5517e1e1713cSmrg oldobjs="$old_deplibs $non_pic_objects" 5518e1e1713cSmrg fi 5519e1e1713cSmrg addlibs="$old_convenience" 5520e1e1713cSmrg fi 55217a84e134Smrg 5522e1e1713cSmrg if test -n "$addlibs"; then 5523e1e1713cSmrg gentop="$output_objdir/${outputname}x" 5524e1e1713cSmrg generated="$generated $gentop" 55257a84e134Smrg 5526e1e1713cSmrg func_extract_archives $gentop $addlibs 5527e1e1713cSmrg oldobjs="$oldobjs $func_extract_archives_result" 5528e1e1713cSmrg fi 55297a84e134Smrg 5530e1e1713cSmrg # Do each command in the archive commands. 5531e1e1713cSmrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 5532e1e1713cSmrg cmds=$old_archive_from_new_cmds 5533e1e1713cSmrg else 5534e1e1713cSmrg # POSIX demands no paths to be encoded in archives. We have 5535e1e1713cSmrg # to avoid creating archives with duplicate basenames if we 5536e1e1713cSmrg # might have to extract them afterwards, e.g., when creating a 5537e1e1713cSmrg # static archive out of a convenience library, or when linking 5538e1e1713cSmrg # the entirety of a libtool archive into another (currently 5539e1e1713cSmrg # not supported by libtool). 5540e1e1713cSmrg if (for obj in $oldobjs 5541e1e1713cSmrg do 5542e1e1713cSmrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 5543e1e1713cSmrg done | sort | sort -uc >/dev/null 2>&1); then 5544e1e1713cSmrg : 5545e1e1713cSmrg else 5546e1e1713cSmrg $echo "copying selected object files to avoid basename conflicts..." 55477a84e134Smrg 5548e1e1713cSmrg if test -z "$gentop"; then 5549e1e1713cSmrg gentop="$output_objdir/${outputname}x" 5550e1e1713cSmrg generated="$generated $gentop" 55517a84e134Smrg 5552e1e1713cSmrg $show "${rm}r $gentop" 5553e1e1713cSmrg $run ${rm}r "$gentop" 5554e1e1713cSmrg $show "$mkdir $gentop" 5555e1e1713cSmrg $run $mkdir "$gentop" 5556e1e1713cSmrg exit_status=$? 5557e1e1713cSmrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 5558e1e1713cSmrg exit $exit_status 5559775e7de9Smrg fi 5560775e7de9Smrg fi 55617a84e134Smrg 5562e1e1713cSmrg save_oldobjs=$oldobjs 5563e1e1713cSmrg oldobjs= 5564e1e1713cSmrg counter=1 5565e1e1713cSmrg for obj in $save_oldobjs 5566e1e1713cSmrg do 5567e1e1713cSmrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 5568e1e1713cSmrg case " $oldobjs " in 5569e1e1713cSmrg " ") oldobjs=$obj ;; 5570e1e1713cSmrg *[\ /]"$objbase "*) 5571e1e1713cSmrg while :; do 5572e1e1713cSmrg # Make sure we don't pick an alternate name that also 5573e1e1713cSmrg # overlaps. 5574e1e1713cSmrg newobj=lt$counter-$objbase 5575e1e1713cSmrg counter=`expr $counter + 1` 5576e1e1713cSmrg case " $oldobjs " in 5577e1e1713cSmrg *[\ /]"$newobj "*) ;; 5578e1e1713cSmrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 5579e1e1713cSmrg esac 5580e1e1713cSmrg done 5581e1e1713cSmrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 5582e1e1713cSmrg $run ln "$obj" "$gentop/$newobj" || 5583e1e1713cSmrg $run cp "$obj" "$gentop/$newobj" 5584e1e1713cSmrg oldobjs="$oldobjs $gentop/$newobj" 5585e1e1713cSmrg ;; 5586e1e1713cSmrg *) oldobjs="$oldobjs $obj" ;; 5587e1e1713cSmrg esac 5588e1e1713cSmrg done 5589e1e1713cSmrg fi 55907a84e134Smrg 5591e1e1713cSmrg eval cmds=\"$old_archive_cmds\" 55927a84e134Smrg 5593e1e1713cSmrg if len=`expr "X$cmds" : ".*"` && 5594e1e1713cSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 5595e1e1713cSmrg cmds=$old_archive_cmds 5596e1e1713cSmrg else 5597e1e1713cSmrg # the command line is too long to link in one step, link in parts 5598e1e1713cSmrg $echo "using piecewise archive linking..." 5599e1e1713cSmrg save_RANLIB=$RANLIB 5600e1e1713cSmrg RANLIB=: 5601e1e1713cSmrg objlist= 5602e1e1713cSmrg concat_cmds= 5603e1e1713cSmrg save_oldobjs=$oldobjs 5604e1e1713cSmrg 5605e1e1713cSmrg # Is there a better way of finding the last object in the list? 5606e1e1713cSmrg for obj in $save_oldobjs 5607e1e1713cSmrg do 5608e1e1713cSmrg last_oldobj=$obj 5609e1e1713cSmrg done 5610e1e1713cSmrg for obj in $save_oldobjs 5611e1e1713cSmrg do 5612e1e1713cSmrg oldobjs="$objlist $obj" 5613e1e1713cSmrg objlist="$objlist $obj" 5614e1e1713cSmrg eval test_cmds=\"$old_archive_cmds\" 5615e1e1713cSmrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 5616e1e1713cSmrg test "$len" -le "$max_cmd_len"; then 5617e1e1713cSmrg : 5618775e7de9Smrg else 5619e1e1713cSmrg # the above command should be used before it gets too long 5620e1e1713cSmrg oldobjs=$objlist 5621e1e1713cSmrg if test "$obj" = "$last_oldobj" ; then 5622e1e1713cSmrg RANLIB=$save_RANLIB 5623e1e1713cSmrg fi 5624e1e1713cSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 5625e1e1713cSmrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 5626e1e1713cSmrg objlist= 56277a84e134Smrg fi 5628e1e1713cSmrg done 5629e1e1713cSmrg RANLIB=$save_RANLIB 5630e1e1713cSmrg oldobjs=$objlist 5631e1e1713cSmrg if test "X$oldobjs" = "X" ; then 5632e1e1713cSmrg eval cmds=\"\$concat_cmds\" 56337a84e134Smrg else 5634e1e1713cSmrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 56357a84e134Smrg fi 5636775e7de9Smrg fi 5637e1e1713cSmrg fi 5638e1e1713cSmrg save_ifs="$IFS"; IFS='~' 5639e1e1713cSmrg for cmd in $cmds; do 5640e1e1713cSmrg eval cmd=\"$cmd\" 5641775e7de9Smrg IFS="$save_ifs" 5642e1e1713cSmrg $show "$cmd" 5643e1e1713cSmrg $run eval "$cmd" || exit $? 5644e1e1713cSmrg done 5645e1e1713cSmrg IFS="$save_ifs" 5646e1e1713cSmrg done 56477a84e134Smrg 5648e1e1713cSmrg if test -n "$generated"; then 5649e1e1713cSmrg $show "${rm}r$generated" 5650e1e1713cSmrg $run ${rm}r$generated 5651e1e1713cSmrg fi 5652775e7de9Smrg 5653e1e1713cSmrg # Now create the libtool archive. 5654e1e1713cSmrg case $output in 5655e1e1713cSmrg *.la) 5656e1e1713cSmrg old_library= 5657e1e1713cSmrg test "$build_old_libs" = yes && old_library="$libname.$libext" 5658e1e1713cSmrg $show "creating $output" 56597a84e134Smrg 5660e1e1713cSmrg # Preserve any variables that may affect compiler behavior 5661e1e1713cSmrg for var in $variables_saved_for_relink; do 5662e1e1713cSmrg if eval test -z \"\${$var+set}\"; then 5663e1e1713cSmrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 5664e1e1713cSmrg elif eval var_value=\$$var; test -z "$var_value"; then 5665e1e1713cSmrg relink_command="$var=; export $var; $relink_command" 5666e1e1713cSmrg else 5667e1e1713cSmrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 5668e1e1713cSmrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 5669775e7de9Smrg fi 5670e1e1713cSmrg done 5671e1e1713cSmrg # Quote the link command for shipping. 5672e1e1713cSmrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 5673e1e1713cSmrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 5674e1e1713cSmrg if test "$hardcode_automatic" = yes ; then 5675e1e1713cSmrg relink_command= 5676775e7de9Smrg fi 56777a84e134Smrg 56787a84e134Smrg 5679e1e1713cSmrg # Only create the output if not a dry run. 5680e1e1713cSmrg if test -z "$run"; then 5681e1e1713cSmrg for installed in no yes; do 5682e1e1713cSmrg if test "$installed" = yes; then 5683e1e1713cSmrg if test -z "$install_libdir"; then 5684e1e1713cSmrg break 5685e1e1713cSmrg fi 5686e1e1713cSmrg output="$output_objdir/$outputname"i 5687e1e1713cSmrg # Replace all uninstalled libtool libraries with the installed ones 5688e1e1713cSmrg newdependency_libs= 5689e1e1713cSmrg for deplib in $dependency_libs; do 5690e1e1713cSmrg case $deplib in 5691e1e1713cSmrg *.la) 5692e1e1713cSmrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 5693e1e1713cSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5694e1e1713cSmrg if test -z "$libdir"; then 5695e1e1713cSmrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 5696e1e1713cSmrg exit $EXIT_FAILURE 5697e1e1713cSmrg fi 5698e1e1713cSmrg newdependency_libs="$newdependency_libs $libdir/$name" 5699e1e1713cSmrg ;; 5700e1e1713cSmrg *) newdependency_libs="$newdependency_libs $deplib" ;; 5701e1e1713cSmrg esac 5702e1e1713cSmrg done 5703e1e1713cSmrg dependency_libs="$newdependency_libs" 5704e1e1713cSmrg newdlfiles= 5705e1e1713cSmrg for lib in $dlfiles; do 5706e1e1713cSmrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5707e1e1713cSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5708e1e1713cSmrg if test -z "$libdir"; then 5709e1e1713cSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5710e1e1713cSmrg exit $EXIT_FAILURE 5711e1e1713cSmrg fi 5712e1e1713cSmrg newdlfiles="$newdlfiles $libdir/$name" 5713e1e1713cSmrg done 5714e1e1713cSmrg dlfiles="$newdlfiles" 5715e1e1713cSmrg newdlprefiles= 5716e1e1713cSmrg for lib in $dlprefiles; do 5717e1e1713cSmrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5718e1e1713cSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5719e1e1713cSmrg if test -z "$libdir"; then 5720e1e1713cSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5721e1e1713cSmrg exit $EXIT_FAILURE 5722e1e1713cSmrg fi 5723e1e1713cSmrg newdlprefiles="$newdlprefiles $libdir/$name" 5724e1e1713cSmrg done 5725e1e1713cSmrg dlprefiles="$newdlprefiles" 5726e1e1713cSmrg else 5727e1e1713cSmrg newdlfiles= 5728e1e1713cSmrg for lib in $dlfiles; do 5729e1e1713cSmrg case $lib in 5730e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5731e1e1713cSmrg *) abs=`pwd`"/$lib" ;; 5732e1e1713cSmrg esac 5733e1e1713cSmrg newdlfiles="$newdlfiles $abs" 5734e1e1713cSmrg done 5735e1e1713cSmrg dlfiles="$newdlfiles" 5736e1e1713cSmrg newdlprefiles= 5737e1e1713cSmrg for lib in $dlprefiles; do 5738e1e1713cSmrg case $lib in 5739e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5740e1e1713cSmrg *) abs=`pwd`"/$lib" ;; 5741e1e1713cSmrg esac 5742e1e1713cSmrg newdlprefiles="$newdlprefiles $abs" 5743e1e1713cSmrg done 5744e1e1713cSmrg dlprefiles="$newdlprefiles" 5745e1e1713cSmrg fi 5746e1e1713cSmrg $rm $output 5747e1e1713cSmrg # place dlname in correct position for cygwin 5748e1e1713cSmrg tdlname=$dlname 5749e1e1713cSmrg case $host,$output,$installed,$module,$dlname in 5750e1e1713cSmrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 5751e1e1713cSmrg esac 5752e1e1713cSmrg $echo > $output "\ 5753e1e1713cSmrg# $outputname - a libtool library file 5754e1e1713cSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5755e1e1713cSmrg# 5756e1e1713cSmrg# Please DO NOT delete this file! 5757e1e1713cSmrg# It is necessary for linking the library. 57587a84e134Smrg 5759e1e1713cSmrg# The name that we can dlopen(3). 5760e1e1713cSmrgdlname='$tdlname' 57617a84e134Smrg 5762e1e1713cSmrg# Names of this library. 5763e1e1713cSmrglibrary_names='$library_names' 57647a84e134Smrg 5765e1e1713cSmrg# The name of the static archive. 5766e1e1713cSmrgold_library='$old_library' 57677a84e134Smrg 5768e1e1713cSmrg# Libraries that this one depends upon. 5769e1e1713cSmrgdependency_libs='$dependency_libs' 5770775e7de9Smrg 5771e1e1713cSmrg# Version information for $libname. 5772e1e1713cSmrgcurrent=$current 5773e1e1713cSmrgage=$age 5774e1e1713cSmrgrevision=$revision 5775775e7de9Smrg 5776e1e1713cSmrg# Is this an already installed library? 5777e1e1713cSmrginstalled=$installed 5778775e7de9Smrg 5779e1e1713cSmrg# Should we warn about portability when linking against -modules? 5780e1e1713cSmrgshouldnotlink=$module 5781775e7de9Smrg 5782e1e1713cSmrg# Files to dlopen/dlpreopen 5783e1e1713cSmrgdlopen='$dlfiles' 5784e1e1713cSmrgdlpreopen='$dlprefiles' 5785775e7de9Smrg 5786e1e1713cSmrg# Directory that this library needs to be installed in: 5787e1e1713cSmrglibdir='$install_libdir'" 5788e1e1713cSmrg if test "$installed" = no && test "$need_relink" = yes; then 5789e1e1713cSmrg $echo >> $output "\ 5790e1e1713cSmrgrelink_command=\"$relink_command\"" 5791e1e1713cSmrg fi 5792e1e1713cSmrg done 5793775e7de9Smrg fi 5794775e7de9Smrg 5795e1e1713cSmrg # Do a symbolic link so that the libtool archive can be found in 5796e1e1713cSmrg # LD_LIBRARY_PATH before the program is installed. 5797e1e1713cSmrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 5798e1e1713cSmrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 57997a84e134Smrg ;; 5800e1e1713cSmrg esac 5801e1e1713cSmrg exit $EXIT_SUCCESS 5802e1e1713cSmrg ;; 58037a84e134Smrg 5804e1e1713cSmrg # libtool install mode 5805e1e1713cSmrg install) 5806e1e1713cSmrg modename="$modename: install" 5807e1e1713cSmrg 5808e1e1713cSmrg # There may be an optional sh(1) argument at the beginning of 5809e1e1713cSmrg # install_prog (especially on Windows NT). 5810e1e1713cSmrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 5811e1e1713cSmrg # Allow the use of GNU shtool's install command. 5812e1e1713cSmrg $echo "X$nonopt" | grep shtool > /dev/null; then 5813e1e1713cSmrg # Aesthetically quote it. 5814e1e1713cSmrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 5815e1e1713cSmrg case $arg in 5816e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5817e1e1713cSmrg arg="\"$arg\"" 5818e1e1713cSmrg ;; 5819775e7de9Smrg esac 5820e1e1713cSmrg install_prog="$arg " 5821e1e1713cSmrg arg="$1" 5822e1e1713cSmrg shift 5823e1e1713cSmrg else 5824e1e1713cSmrg install_prog= 5825e1e1713cSmrg arg=$nonopt 5826e1e1713cSmrg fi 58277a84e134Smrg 5828e1e1713cSmrg # The real first argument should be the name of the installation program. 5829e1e1713cSmrg # Aesthetically quote it. 5830e1e1713cSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5831e1e1713cSmrg case $arg in 5832e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5833e1e1713cSmrg arg="\"$arg\"" 5834e1e1713cSmrg ;; 5835e1e1713cSmrg esac 5836e1e1713cSmrg install_prog="$install_prog$arg" 58377a84e134Smrg 5838e1e1713cSmrg # We need to accept at least all the BSD install flags. 5839e1e1713cSmrg dest= 5840e1e1713cSmrg files= 5841e1e1713cSmrg opts= 5842e1e1713cSmrg prev= 5843e1e1713cSmrg install_type= 5844e1e1713cSmrg isdir=no 5845e1e1713cSmrg stripme= 5846e1e1713cSmrg for arg 5847e1e1713cSmrg do 5848e1e1713cSmrg if test -n "$dest"; then 5849e1e1713cSmrg files="$files $dest" 5850e1e1713cSmrg dest=$arg 5851e1e1713cSmrg continue 5852e1e1713cSmrg fi 5853775e7de9Smrg 5854e1e1713cSmrg case $arg in 5855e1e1713cSmrg -d) isdir=yes ;; 5856e1e1713cSmrg -f) 5857e1e1713cSmrg case " $install_prog " in 5858e1e1713cSmrg *[\\\ /]cp\ *) ;; 5859e1e1713cSmrg *) prev=$arg ;; 5860e1e1713cSmrg esac 5861e1e1713cSmrg ;; 5862e1e1713cSmrg -g | -m | -o) prev=$arg ;; 5863e1e1713cSmrg -s) 5864e1e1713cSmrg stripme=" -s" 5865e1e1713cSmrg continue 5866e1e1713cSmrg ;; 5867e1e1713cSmrg -*) 5868e1e1713cSmrg ;; 5869e1e1713cSmrg *) 5870e1e1713cSmrg # If the previous option needed an argument, then skip it. 5871e1e1713cSmrg if test -n "$prev"; then 5872e1e1713cSmrg prev= 5873e1e1713cSmrg else 5874e1e1713cSmrg dest=$arg 5875e1e1713cSmrg continue 5876e1e1713cSmrg fi 58777a84e134Smrg ;; 5878775e7de9Smrg esac 58797a84e134Smrg 5880e1e1713cSmrg # Aesthetically quote the argument. 5881e1e1713cSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5882e1e1713cSmrg case $arg in 5883e1e1713cSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5884e1e1713cSmrg arg="\"$arg\"" 5885775e7de9Smrg ;; 5886775e7de9Smrg esac 5887e1e1713cSmrg install_prog="$install_prog $arg" 5888e1e1713cSmrg done 58897a84e134Smrg 5890e1e1713cSmrg if test -z "$install_prog"; then 5891e1e1713cSmrg $echo "$modename: you must specify an install program" 1>&2 5892e1e1713cSmrg $echo "$help" 1>&2 5893e1e1713cSmrg exit $EXIT_FAILURE 5894e1e1713cSmrg fi 58957a84e134Smrg 5896e1e1713cSmrg if test -n "$prev"; then 5897e1e1713cSmrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 5898e1e1713cSmrg $echo "$help" 1>&2 5899e1e1713cSmrg exit $EXIT_FAILURE 5900e1e1713cSmrg fi 5901e1e1713cSmrg 5902e1e1713cSmrg if test -z "$files"; then 5903e1e1713cSmrg if test -z "$dest"; then 5904e1e1713cSmrg $echo "$modename: no file or destination specified" 1>&2 5905e1e1713cSmrg else 5906e1e1713cSmrg $echo "$modename: you must specify a destination" 1>&2 5907e1e1713cSmrg fi 5908e1e1713cSmrg $echo "$help" 1>&2 5909e1e1713cSmrg exit $EXIT_FAILURE 5910e1e1713cSmrg fi 5911e1e1713cSmrg 5912e1e1713cSmrg # Strip any trailing slash from the destination. 5913e1e1713cSmrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 5914e1e1713cSmrg 5915e1e1713cSmrg # Check to see that the destination is a directory. 5916e1e1713cSmrg test -d "$dest" && isdir=yes 5917e1e1713cSmrg if test "$isdir" = yes; then 5918e1e1713cSmrg destdir="$dest" 5919e1e1713cSmrg destname= 5920e1e1713cSmrg else 5921e1e1713cSmrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 5922e1e1713cSmrg test "X$destdir" = "X$dest" && destdir=. 5923e1e1713cSmrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 5924e1e1713cSmrg 5925e1e1713cSmrg # Not a directory, so check to see that there is only one file specified. 5926e1e1713cSmrg set dummy $files 5927e1e1713cSmrg if test "$#" -gt 2; then 5928e1e1713cSmrg $echo "$modename: \`$dest' is not a directory" 1>&2 5929e1e1713cSmrg $echo "$help" 1>&2 5930e1e1713cSmrg exit $EXIT_FAILURE 5931e1e1713cSmrg fi 5932e1e1713cSmrg fi 5933e1e1713cSmrg case $destdir in 5934e1e1713cSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 5935e1e1713cSmrg *) 5936e1e1713cSmrg for file in $files; do 5937e1e1713cSmrg case $file in 5938e1e1713cSmrg *.lo) ;; 5939775e7de9Smrg *) 5940e1e1713cSmrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 5941e1e1713cSmrg $echo "$help" 1>&2 5942e1e1713cSmrg exit $EXIT_FAILURE 5943775e7de9Smrg ;; 5944775e7de9Smrg esac 5945775e7de9Smrg done 5946e1e1713cSmrg ;; 5947e1e1713cSmrg esac 59487a84e134Smrg 5949e1e1713cSmrg # This variable tells wrapper scripts just to set variables rather 5950e1e1713cSmrg # than running their programs. 5951e1e1713cSmrg libtool_install_magic="$magic" 59527a84e134Smrg 5953e1e1713cSmrg staticlibs= 5954e1e1713cSmrg future_libdirs= 5955e1e1713cSmrg current_libdirs= 5956e1e1713cSmrg for file in $files; do 59577a84e134Smrg 5958e1e1713cSmrg # Do each installation. 5959e1e1713cSmrg case $file in 5960e1e1713cSmrg *.$libext) 5961e1e1713cSmrg # Do the static libraries later. 5962e1e1713cSmrg staticlibs="$staticlibs $file" 5963e1e1713cSmrg ;; 5964e1e1713cSmrg 5965e1e1713cSmrg *.la) 5966e1e1713cSmrg # Check to see that this really is a libtool archive. 5967e1e1713cSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 5968e1e1713cSmrg else 5969e1e1713cSmrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 5970e1e1713cSmrg $echo "$help" 1>&2 5971e1e1713cSmrg exit $EXIT_FAILURE 5972e1e1713cSmrg fi 5973e1e1713cSmrg 5974e1e1713cSmrg library_names= 5975e1e1713cSmrg old_library= 5976e1e1713cSmrg relink_command= 5977e1e1713cSmrg # If there is no directory component, then add one. 5978e1e1713cSmrg case $file in 5979e1e1713cSmrg */* | *\\*) . $file ;; 5980e1e1713cSmrg *) . ./$file ;; 5981e1e1713cSmrg esac 5982e1e1713cSmrg 5983e1e1713cSmrg # Add the libdir to current_libdirs if it is the destination. 5984e1e1713cSmrg if test "X$destdir" = "X$libdir"; then 5985e1e1713cSmrg case "$current_libdirs " in 5986775e7de9Smrg *" $libdir "*) ;; 5987e1e1713cSmrg *) current_libdirs="$current_libdirs $libdir" ;; 5988775e7de9Smrg esac 5989e1e1713cSmrg else 5990e1e1713cSmrg # Note the libdir as a future libdir. 5991e1e1713cSmrg case "$future_libdirs " in 5992775e7de9Smrg *" $libdir "*) ;; 5993e1e1713cSmrg *) future_libdirs="$future_libdirs $libdir" ;; 5994775e7de9Smrg esac 5995775e7de9Smrg fi 59967a84e134Smrg 5997e1e1713cSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 5998e1e1713cSmrg test "X$dir" = "X$file/" && dir= 5999e1e1713cSmrg dir="$dir$objdir" 6000e1e1713cSmrg 6001e1e1713cSmrg if test -n "$relink_command"; then 6002e1e1713cSmrg # Determine the prefix the user has applied to our future dir. 6003e1e1713cSmrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 6004e1e1713cSmrg 6005e1e1713cSmrg # Don't allow the user to place us outside of our expected 6006e1e1713cSmrg # location b/c this prevents finding dependent libraries that 6007e1e1713cSmrg # are installed to the same prefix. 6008e1e1713cSmrg # At present, this check doesn't affect windows .dll's that 6009e1e1713cSmrg # are installed into $libdir/../bin (currently, that works fine) 6010e1e1713cSmrg # but it's something to keep an eye on. 6011e1e1713cSmrg if test "$inst_prefix_dir" = "$destdir"; then 6012e1e1713cSmrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 6013e1e1713cSmrg exit $EXIT_FAILURE 6014e1e1713cSmrg fi 6015e1e1713cSmrg 6016e1e1713cSmrg if test -n "$inst_prefix_dir"; then 6017e1e1713cSmrg # Stick the inst_prefix_dir data into the link command. 6018e1e1713cSmrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 6019e1e1713cSmrg else 6020e1e1713cSmrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 6021e1e1713cSmrg fi 6022e1e1713cSmrg 6023e1e1713cSmrg $echo "$modename: warning: relinking \`$file'" 1>&2 6024e1e1713cSmrg $show "$relink_command" 6025e1e1713cSmrg if $run eval "$relink_command"; then : 60267a84e134Smrg else 6027e1e1713cSmrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6028e1e1713cSmrg exit $EXIT_FAILURE 60297a84e134Smrg fi 60307a84e134Smrg fi 60317a84e134Smrg 6032e1e1713cSmrg # See the names of the shared library. 6033e1e1713cSmrg set dummy $library_names 6034e1e1713cSmrg if test -n "$2"; then 6035e1e1713cSmrg realname="$2" 6036e1e1713cSmrg shift 6037e1e1713cSmrg shift 60387a84e134Smrg 6039e1e1713cSmrg srcname="$realname" 6040e1e1713cSmrg test -n "$relink_command" && srcname="$realname"T 60417a84e134Smrg 6042e1e1713cSmrg # Install the shared library and build the symlinks. 6043e1e1713cSmrg $show "$install_prog $dir/$srcname $destdir/$realname" 6044e1e1713cSmrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 6045e1e1713cSmrg if test -n "$stripme" && test -n "$striplib"; then 6046e1e1713cSmrg $show "$striplib $destdir/$realname" 6047e1e1713cSmrg $run eval "$striplib $destdir/$realname" || exit $? 6048e1e1713cSmrg fi 60497a84e134Smrg 6050e1e1713cSmrg if test "$#" -gt 0; then 6051e1e1713cSmrg # Delete the old symlinks, and create new ones. 6052e1e1713cSmrg # Try `ln -sf' first, because the `ln' binary might depend on 6053e1e1713cSmrg # the symlink we replace! Solaris /bin/ln does not understand -f, 6054e1e1713cSmrg # so we also need to try rm && ln -s. 6055e1e1713cSmrg for linkname 6056e1e1713cSmrg do 6057e1e1713cSmrg if test "$linkname" != "$realname"; then 6058e1e1713cSmrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6059e1e1713cSmrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6060e1e1713cSmrg fi 6061e1e1713cSmrg done 6062e1e1713cSmrg fi 60637a84e134Smrg 6064e1e1713cSmrg # Do each command in the postinstall commands. 6065e1e1713cSmrg lib="$destdir/$realname" 6066e1e1713cSmrg cmds=$postinstall_cmds 6067e1e1713cSmrg save_ifs="$IFS"; IFS='~' 6068e1e1713cSmrg for cmd in $cmds; do 6069e1e1713cSmrg IFS="$save_ifs" 6070e1e1713cSmrg eval cmd=\"$cmd\" 6071e1e1713cSmrg $show "$cmd" 6072e1e1713cSmrg $run eval "$cmd" || { 6073e1e1713cSmrg lt_exit=$? 6074e1e1713cSmrg 6075e1e1713cSmrg # Restore the uninstalled library and exit 6076e1e1713cSmrg if test "$mode" = relink; then 6077e1e1713cSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 6078e1e1713cSmrg fi 60797a84e134Smrg 6080e1e1713cSmrg exit $lt_exit 6081e1e1713cSmrg } 6082e1e1713cSmrg done 6083e1e1713cSmrg IFS="$save_ifs" 60847a84e134Smrg fi 60857a84e134Smrg 6086e1e1713cSmrg # Install the pseudo-library for information purposes. 6087e1e1713cSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6088e1e1713cSmrg instname="$dir/$name"i 6089e1e1713cSmrg $show "$install_prog $instname $destdir/$name" 6090e1e1713cSmrg $run eval "$install_prog $instname $destdir/$name" || exit $? 60917a84e134Smrg 6092e1e1713cSmrg # Maybe install the static library, too. 6093e1e1713cSmrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 6094e1e1713cSmrg ;; 60957a84e134Smrg 6096e1e1713cSmrg *.lo) 6097e1e1713cSmrg # Install (i.e. copy) a libtool object. 6098e1e1713cSmrg 6099e1e1713cSmrg # Figure out destination file name, if it wasn't already specified. 6100e1e1713cSmrg if test -n "$destname"; then 6101e1e1713cSmrg destfile="$destdir/$destname" 6102e1e1713cSmrg else 6103e1e1713cSmrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6104e1e1713cSmrg destfile="$destdir/$destfile" 61057a84e134Smrg fi 6106e1e1713cSmrg 6107e1e1713cSmrg # Deduce the name of the destination old-style object file. 6108e1e1713cSmrg case $destfile in 6109e1e1713cSmrg *.lo) 6110e1e1713cSmrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 6111e1e1713cSmrg ;; 6112e1e1713cSmrg *.$objext) 6113e1e1713cSmrg staticdest="$destfile" 6114e1e1713cSmrg destfile= 6115e1e1713cSmrg ;; 6116e1e1713cSmrg *) 6117e1e1713cSmrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 6118e1e1713cSmrg $echo "$help" 1>&2 6119e1e1713cSmrg exit $EXIT_FAILURE 6120e1e1713cSmrg ;; 6121e1e1713cSmrg esac 6122e1e1713cSmrg 6123e1e1713cSmrg # Install the libtool object if requested. 6124e1e1713cSmrg if test -n "$destfile"; then 6125e1e1713cSmrg $show "$install_prog $file $destfile" 6126e1e1713cSmrg $run eval "$install_prog $file $destfile" || exit $? 61277a84e134Smrg fi 61287a84e134Smrg 6129e1e1713cSmrg # Install the old object if enabled. 6130e1e1713cSmrg if test "$build_old_libs" = yes; then 6131e1e1713cSmrg # Deduce the name of the old-style object file. 6132e1e1713cSmrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 61337a84e134Smrg 6134e1e1713cSmrg $show "$install_prog $staticobj $staticdest" 6135e1e1713cSmrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 6136e1e1713cSmrg fi 6137e1e1713cSmrg exit $EXIT_SUCCESS 6138e1e1713cSmrg ;; 6139775e7de9Smrg 6140e1e1713cSmrg *) 6141e1e1713cSmrg # Figure out destination file name, if it wasn't already specified. 6142e1e1713cSmrg if test -n "$destname"; then 6143e1e1713cSmrg destfile="$destdir/$destname" 61447a84e134Smrg else 6145e1e1713cSmrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6146e1e1713cSmrg destfile="$destdir/$destfile" 61477a84e134Smrg fi 61487a84e134Smrg 6149e1e1713cSmrg # If the file is missing, and there is a .exe on the end, strip it 6150e1e1713cSmrg # because it is most likely a libtool script we actually want to 6151e1e1713cSmrg # install 6152e1e1713cSmrg stripped_ext="" 6153e1e1713cSmrg case $file in 6154e1e1713cSmrg *.exe) 6155e1e1713cSmrg if test ! -f "$file"; then 6156e1e1713cSmrg file=`$echo $file|${SED} 's,.exe$,,'` 6157e1e1713cSmrg stripped_ext=".exe" 6158e1e1713cSmrg fi 6159e1e1713cSmrg ;; 6160e1e1713cSmrg esac 61617a84e134Smrg 6162e1e1713cSmrg # Do a test to see if this is really a libtool program. 6163e1e1713cSmrg case $host in 6164e1e1713cSmrg *cygwin*|*mingw*) 6165e1e1713cSmrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 6166e1e1713cSmrg ;; 6167e1e1713cSmrg *) 6168e1e1713cSmrg wrapper=$file 6169e1e1713cSmrg ;; 6170e1e1713cSmrg esac 6171e1e1713cSmrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 6172e1e1713cSmrg notinst_deplibs= 6173e1e1713cSmrg relink_command= 61747a84e134Smrg 6175e1e1713cSmrg # Note that it is not necessary on cygwin/mingw to append a dot to 6176e1e1713cSmrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6177e1e1713cSmrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6178e1e1713cSmrg # `FILE.' does not work on cygwin managed mounts. 6179e1e1713cSmrg # 6180e1e1713cSmrg # If there is no directory component, then add one. 6181e1e1713cSmrg case $wrapper in 6182e1e1713cSmrg */* | *\\*) . ${wrapper} ;; 6183e1e1713cSmrg *) . ./${wrapper} ;; 6184e1e1713cSmrg esac 61857a84e134Smrg 6186e1e1713cSmrg # Check the variables that should have been set. 6187e1e1713cSmrg if test -z "$notinst_deplibs"; then 6188e1e1713cSmrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 6189e1e1713cSmrg exit $EXIT_FAILURE 6190e1e1713cSmrg fi 61917a84e134Smrg 6192e1e1713cSmrg finalize=yes 6193e1e1713cSmrg for lib in $notinst_deplibs; do 6194e1e1713cSmrg # Check to see that each library is installed. 6195e1e1713cSmrg libdir= 6196e1e1713cSmrg if test -f "$lib"; then 6197e1e1713cSmrg # If there is no directory component, then add one. 6198e1e1713cSmrg case $lib in 6199e1e1713cSmrg */* | *\\*) . $lib ;; 6200e1e1713cSmrg *) . ./$lib ;; 6201e1e1713cSmrg esac 6202e1e1713cSmrg fi 6203e1e1713cSmrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 6204e1e1713cSmrg if test -n "$libdir" && test ! -f "$libfile"; then 6205e1e1713cSmrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 6206e1e1713cSmrg finalize=no 6207e1e1713cSmrg fi 6208e1e1713cSmrg done 6209e1e1713cSmrg 6210e1e1713cSmrg relink_command= 6211e1e1713cSmrg # Note that it is not necessary on cygwin/mingw to append a dot to 6212e1e1713cSmrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6213e1e1713cSmrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6214e1e1713cSmrg # `FILE.' does not work on cygwin managed mounts. 6215e1e1713cSmrg # 6216e1e1713cSmrg # If there is no directory component, then add one. 6217e1e1713cSmrg case $wrapper in 6218e1e1713cSmrg */* | *\\*) . ${wrapper} ;; 6219e1e1713cSmrg *) . ./${wrapper} ;; 6220e1e1713cSmrg esac 6221e1e1713cSmrg 6222e1e1713cSmrg outputname= 6223e1e1713cSmrg if test "$fast_install" = no && test -n "$relink_command"; then 6224e1e1713cSmrg if test "$finalize" = yes && test -z "$run"; then 6225e1e1713cSmrg tmpdir=`func_mktempdir` 6226e1e1713cSmrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 6227e1e1713cSmrg outputname="$tmpdir/$file" 6228e1e1713cSmrg # Replace the output file specification. 6229e1e1713cSmrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 6230e1e1713cSmrg 6231e1e1713cSmrg $show "$relink_command" 6232e1e1713cSmrg if $run eval "$relink_command"; then : 6233e1e1713cSmrg else 6234e1e1713cSmrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6235e1e1713cSmrg ${rm}r "$tmpdir" 6236e1e1713cSmrg continue 6237e1e1713cSmrg fi 6238e1e1713cSmrg file="$outputname" 6239e1e1713cSmrg else 6240e1e1713cSmrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 6241e1e1713cSmrg fi 62427a84e134Smrg else 6243e1e1713cSmrg # Install the binary that we compiled earlier. 6244e1e1713cSmrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 62457a84e134Smrg fi 6246e1e1713cSmrg fi 6247775e7de9Smrg 6248e1e1713cSmrg # remove .exe since cygwin /usr/bin/install will append another 6249e1e1713cSmrg # one anyway 6250e1e1713cSmrg case $install_prog,$host in 6251e1e1713cSmrg */usr/bin/install*,*cygwin*) 6252e1e1713cSmrg case $file:$destfile in 6253e1e1713cSmrg *.exe:*.exe) 6254e1e1713cSmrg # this is ok 6255e1e1713cSmrg ;; 6256e1e1713cSmrg *.exe:*) 6257e1e1713cSmrg destfile=$destfile.exe 6258e1e1713cSmrg ;; 6259e1e1713cSmrg *:*.exe) 6260e1e1713cSmrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 6261e1e1713cSmrg ;; 6262e1e1713cSmrg esac 6263e1e1713cSmrg ;; 62647a84e134Smrg esac 6265e1e1713cSmrg $show "$install_prog$stripme $file $destfile" 6266e1e1713cSmrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 6267e1e1713cSmrg test -n "$outputname" && ${rm}r "$tmpdir" 6268e1e1713cSmrg ;; 6269e1e1713cSmrg esac 6270e1e1713cSmrg done 62717a84e134Smrg 6272e1e1713cSmrg for file in $staticlibs; do 6273e1e1713cSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 62747a84e134Smrg 6275e1e1713cSmrg # Set up the ranlib parameters. 6276e1e1713cSmrg oldlib="$destdir/$name" 62777a84e134Smrg 6278e1e1713cSmrg $show "$install_prog $file $oldlib" 6279e1e1713cSmrg $run eval "$install_prog \$file \$oldlib" || exit $? 62807a84e134Smrg 6281e1e1713cSmrg if test -n "$stripme" && test -n "$old_striplib"; then 6282e1e1713cSmrg $show "$old_striplib $oldlib" 6283e1e1713cSmrg $run eval "$old_striplib $oldlib" || exit $? 62847a84e134Smrg fi 62857a84e134Smrg 6286e1e1713cSmrg # Do each command in the postinstall commands. 6287e1e1713cSmrg cmds=$old_postinstall_cmds 6288e1e1713cSmrg save_ifs="$IFS"; IFS='~' 6289e1e1713cSmrg for cmd in $cmds; do 6290e1e1713cSmrg IFS="$save_ifs" 6291e1e1713cSmrg eval cmd=\"$cmd\" 6292e1e1713cSmrg $show "$cmd" 6293e1e1713cSmrg $run eval "$cmd" || exit $? 6294e1e1713cSmrg done 6295e1e1713cSmrg IFS="$save_ifs" 6296e1e1713cSmrg done 62977a84e134Smrg 6298e1e1713cSmrg if test -n "$future_libdirs"; then 6299e1e1713cSmrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 6300e1e1713cSmrg fi 63017a84e134Smrg 6302e1e1713cSmrg if test -n "$current_libdirs"; then 6303e1e1713cSmrg # Maybe just do a dry run. 6304e1e1713cSmrg test -n "$run" && current_libdirs=" -n$current_libdirs" 6305e1e1713cSmrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 6306e1e1713cSmrg else 6307e1e1713cSmrg exit $EXIT_SUCCESS 6308e1e1713cSmrg fi 6309e1e1713cSmrg ;; 63107a84e134Smrg 6311e1e1713cSmrg # libtool finish mode 6312e1e1713cSmrg finish) 6313e1e1713cSmrg modename="$modename: finish" 6314e1e1713cSmrg libdirs="$nonopt" 6315e1e1713cSmrg admincmds= 63167a84e134Smrg 6317e1e1713cSmrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 6318e1e1713cSmrg for dir 6319e1e1713cSmrg do 6320e1e1713cSmrg libdirs="$libdirs $dir" 6321e1e1713cSmrg done 63227a84e134Smrg 6323e1e1713cSmrg for libdir in $libdirs; do 6324e1e1713cSmrg if test -n "$finish_cmds"; then 6325e1e1713cSmrg # Do each command in the finish commands. 6326e1e1713cSmrg cmds=$finish_cmds 6327e1e1713cSmrg save_ifs="$IFS"; IFS='~' 6328e1e1713cSmrg for cmd in $cmds; do 6329e1e1713cSmrg IFS="$save_ifs" 6330e1e1713cSmrg eval cmd=\"$cmd\" 6331e1e1713cSmrg $show "$cmd" 6332e1e1713cSmrg $run eval "$cmd" || admincmds="$admincmds 6333e1e1713cSmrg $cmd" 63347a84e134Smrg done 6335e1e1713cSmrg IFS="$save_ifs" 63367a84e134Smrg fi 6337e1e1713cSmrg if test -n "$finish_eval"; then 6338e1e1713cSmrg # Do the single finish_eval. 6339e1e1713cSmrg eval cmds=\"$finish_eval\" 6340e1e1713cSmrg $run eval "$cmds" || admincmds="$admincmds 6341e1e1713cSmrg $cmds" 6342775e7de9Smrg fi 6343e1e1713cSmrg done 6344e1e1713cSmrg fi 6345e1e1713cSmrg 6346e1e1713cSmrg # Exit here if they wanted silent mode. 6347e1e1713cSmrg test "$show" = : && exit $EXIT_SUCCESS 6348e1e1713cSmrg 6349e1e1713cSmrg $echo "X----------------------------------------------------------------------" | $Xsed 6350e1e1713cSmrg $echo "Libraries have been installed in:" 6351e1e1713cSmrg for libdir in $libdirs; do 6352e1e1713cSmrg $echo " $libdir" 63537a84e134Smrg done 6354e1e1713cSmrg $echo 6355e1e1713cSmrg $echo "If you ever happen to want to link against installed libraries" 6356e1e1713cSmrg $echo "in a given directory, LIBDIR, you must either use libtool, and" 6357e1e1713cSmrg $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 6358e1e1713cSmrg $echo "flag during linking and do at least one of the following:" 6359e1e1713cSmrg if test -n "$shlibpath_var"; then 6360e1e1713cSmrg $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 6361e1e1713cSmrg $echo " during execution" 6362e1e1713cSmrg fi 6363e1e1713cSmrg if test -n "$runpath_var"; then 6364e1e1713cSmrg $echo " - add LIBDIR to the \`$runpath_var' environment variable" 6365e1e1713cSmrg $echo " during linking" 6366e1e1713cSmrg fi 6367e1e1713cSmrg if test -n "$hardcode_libdir_flag_spec"; then 6368e1e1713cSmrg libdir=LIBDIR 6369e1e1713cSmrg eval flag=\"$hardcode_libdir_flag_spec\" 63707a84e134Smrg 6371e1e1713cSmrg $echo " - use the \`$flag' linker flag" 6372e1e1713cSmrg fi 6373e1e1713cSmrg if test -n "$admincmds"; then 6374e1e1713cSmrg $echo " - have your system administrator run these commands:$admincmds" 6375e1e1713cSmrg fi 6376e1e1713cSmrg if test -f /etc/ld.so.conf; then 6377e1e1713cSmrg $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 6378e1e1713cSmrg fi 6379e1e1713cSmrg $echo 6380e1e1713cSmrg $echo "See any operating system documentation about shared libraries for" 6381e1e1713cSmrg $echo "more information, such as the ld(1) and ld.so(8) manual pages." 6382e1e1713cSmrg $echo "X----------------------------------------------------------------------" | $Xsed 6383e1e1713cSmrg exit $EXIT_SUCCESS 6384e1e1713cSmrg ;; 63857a84e134Smrg 6386e1e1713cSmrg # libtool execute mode 6387e1e1713cSmrg execute) 6388e1e1713cSmrg modename="$modename: execute" 63897a84e134Smrg 6390e1e1713cSmrg # The first argument is the command name. 6391e1e1713cSmrg cmd="$nonopt" 6392e1e1713cSmrg if test -z "$cmd"; then 6393e1e1713cSmrg $echo "$modename: you must specify a COMMAND" 1>&2 6394e1e1713cSmrg $echo "$help" 6395e1e1713cSmrg exit $EXIT_FAILURE 6396e1e1713cSmrg fi 63977a84e134Smrg 6398e1e1713cSmrg # Handle -dlopen flags immediately. 6399e1e1713cSmrg for file in $execute_dlfiles; do 6400e1e1713cSmrg if test ! -f "$file"; then 6401e1e1713cSmrg $echo "$modename: \`$file' is not a file" 1>&2 6402e1e1713cSmrg $echo "$help" 1>&2 6403e1e1713cSmrg exit $EXIT_FAILURE 6404e1e1713cSmrg fi 6405775e7de9Smrg 6406e1e1713cSmrg dir= 6407e1e1713cSmrg case $file in 6408e1e1713cSmrg *.la) 6409e1e1713cSmrg # Check to see that this really is a libtool archive. 6410e1e1713cSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 6411e1e1713cSmrg else 6412e1e1713cSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 6413e1e1713cSmrg $echo "$help" 1>&2 6414e1e1713cSmrg exit $EXIT_FAILURE 6415e1e1713cSmrg fi 64167a84e134Smrg 6417e1e1713cSmrg # Read the libtool library. 6418e1e1713cSmrg dlname= 6419e1e1713cSmrg library_names= 64207a84e134Smrg 6421e1e1713cSmrg # If there is no directory component, then add one. 6422e1e1713cSmrg case $file in 6423e1e1713cSmrg */* | *\\*) . $file ;; 6424e1e1713cSmrg *) . ./$file ;; 6425e1e1713cSmrg esac 64267a84e134Smrg 6427e1e1713cSmrg # Skip this library if it cannot be dlopened. 6428e1e1713cSmrg if test -z "$dlname"; then 6429e1e1713cSmrg # Warn if it was a shared library. 6430e1e1713cSmrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 6431e1e1713cSmrg continue 6432e1e1713cSmrg fi 64337a84e134Smrg 6434e1e1713cSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6435e1e1713cSmrg test "X$dir" = "X$file" && dir=. 64367a84e134Smrg 6437e1e1713cSmrg if test -f "$dir/$objdir/$dlname"; then 6438e1e1713cSmrg dir="$dir/$objdir" 6439e1e1713cSmrg else 6440e1e1713cSmrg if test ! -f "$dir/$dlname"; then 6441e1e1713cSmrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 6442e1e1713cSmrg exit $EXIT_FAILURE 6443e1e1713cSmrg fi 6444e1e1713cSmrg fi 6445e1e1713cSmrg ;; 64467a84e134Smrg 6447e1e1713cSmrg *.lo) 6448e1e1713cSmrg # Just add the directory containing the .lo file. 6449e1e1713cSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6450e1e1713cSmrg test "X$dir" = "X$file" && dir=. 6451e1e1713cSmrg ;; 64527a84e134Smrg 6453e1e1713cSmrg *) 6454e1e1713cSmrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 6455e1e1713cSmrg continue 6456e1e1713cSmrg ;; 6457e1e1713cSmrg esac 64587a84e134Smrg 6459e1e1713cSmrg # Get the absolute pathname. 6460e1e1713cSmrg absdir=`cd "$dir" && pwd` 6461e1e1713cSmrg test -n "$absdir" && dir="$absdir" 64627a84e134Smrg 6463e1e1713cSmrg # Now add the directory to shlibpath_var. 6464e1e1713cSmrg if eval "test -z \"\$$shlibpath_var\""; then 6465e1e1713cSmrg eval "$shlibpath_var=\"\$dir\"" 6466e1e1713cSmrg else 6467e1e1713cSmrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 6468e1e1713cSmrg fi 6469e1e1713cSmrg done 64707a84e134Smrg 6471e1e1713cSmrg # This variable tells wrapper scripts just to set shlibpath_var 6472e1e1713cSmrg # rather than running their programs. 6473e1e1713cSmrg libtool_execute_magic="$magic" 64747a84e134Smrg 6475e1e1713cSmrg # Check if any of the arguments is a wrapper script. 6476e1e1713cSmrg args= 6477e1e1713cSmrg for file 6478e1e1713cSmrg do 6479e1e1713cSmrg case $file in 6480e1e1713cSmrg -*) ;; 6481e1e1713cSmrg *) 6482e1e1713cSmrg # Do a test to see if this is really a libtool program. 6483e1e1713cSmrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6484e1e1713cSmrg # If there is no directory component, then add one. 6485e1e1713cSmrg case $file in 6486e1e1713cSmrg */* | *\\*) . $file ;; 6487e1e1713cSmrg *) . ./$file ;; 6488e1e1713cSmrg esac 64897a84e134Smrg 6490e1e1713cSmrg # Transform arg to wrapped name. 6491e1e1713cSmrg file="$progdir/$program" 6492e1e1713cSmrg fi 6493e1e1713cSmrg ;; 6494e1e1713cSmrg esac 6495e1e1713cSmrg # Quote arguments (to preserve shell metacharacters). 6496e1e1713cSmrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 6497e1e1713cSmrg args="$args \"$file\"" 6498e1e1713cSmrg done 64997a84e134Smrg 6500e1e1713cSmrg if test -z "$run"; then 6501e1e1713cSmrg if test -n "$shlibpath_var"; then 6502e1e1713cSmrg # Export the shlibpath_var. 6503e1e1713cSmrg eval "export $shlibpath_var" 6504e1e1713cSmrg fi 6505e1e1713cSmrg 6506e1e1713cSmrg # Restore saved environment variables 6507e1e1713cSmrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 6508e1e1713cSmrg do 6509e1e1713cSmrg eval "if test \"\${save_$lt_var+set}\" = set; then 6510e1e1713cSmrg $lt_var=\$save_$lt_var; export $lt_var 6511e1e1713cSmrg fi" 6512e1e1713cSmrg done 65137a84e134Smrg 6514e1e1713cSmrg # Now prepare to actually exec the command. 6515e1e1713cSmrg exec_cmd="\$cmd$args" 6516e1e1713cSmrg else 6517e1e1713cSmrg # Display what would be done. 6518e1e1713cSmrg if test -n "$shlibpath_var"; then 6519e1e1713cSmrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 6520e1e1713cSmrg $echo "export $shlibpath_var" 6521e1e1713cSmrg fi 6522e1e1713cSmrg $echo "$cmd$args" 6523e1e1713cSmrg exit $EXIT_SUCCESS 6524e1e1713cSmrg fi 6525e1e1713cSmrg ;; 65267a84e134Smrg 6527e1e1713cSmrg # libtool clean and uninstall mode 6528e1e1713cSmrg clean | uninstall) 6529e1e1713cSmrg modename="$modename: $mode" 6530e1e1713cSmrg rm="$nonopt" 65317a84e134Smrg files= 65327a84e134Smrg rmforce= 65337a84e134Smrg exit_status=0 65347a84e134Smrg 65357a84e134Smrg # This variable tells wrapper scripts just to set variables rather 65367a84e134Smrg # than running their programs. 65377a84e134Smrg libtool_install_magic="$magic" 65387a84e134Smrg 65397a84e134Smrg for arg 65407a84e134Smrg do 65417a84e134Smrg case $arg in 6542e1e1713cSmrg -f) rm="$rm $arg"; rmforce=yes ;; 6543e1e1713cSmrg -*) rm="$rm $arg" ;; 65447a84e134Smrg *) files="$files $arg" ;; 65457a84e134Smrg esac 65467a84e134Smrg done 65477a84e134Smrg 6548e1e1713cSmrg if test -z "$rm"; then 6549e1e1713cSmrg $echo "$modename: you must specify an RM program" 1>&2 6550e1e1713cSmrg $echo "$help" 1>&2 6551e1e1713cSmrg exit $EXIT_FAILURE 6552e1e1713cSmrg fi 65537a84e134Smrg 65547a84e134Smrg rmdirs= 65557a84e134Smrg 65567a84e134Smrg origobjdir="$objdir" 65577a84e134Smrg for file in $files; do 6558e1e1713cSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6559e1e1713cSmrg if test "X$dir" = "X$file"; then 6560e1e1713cSmrg dir=. 65617a84e134Smrg objdir="$origobjdir" 65627a84e134Smrg else 65637a84e134Smrg objdir="$dir/$origobjdir" 65647a84e134Smrg fi 6565e1e1713cSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 65667a84e134Smrg test "$mode" = uninstall && objdir="$dir" 65677a84e134Smrg 65687a84e134Smrg # Remember objdir for removal later, being careful to avoid duplicates 65697a84e134Smrg if test "$mode" = clean; then 65707a84e134Smrg case " $rmdirs " in 65717a84e134Smrg *" $objdir "*) ;; 65727a84e134Smrg *) rmdirs="$rmdirs $objdir" ;; 65737a84e134Smrg esac 65747a84e134Smrg fi 65757a84e134Smrg 65767a84e134Smrg # Don't error if the file doesn't exist and rm -f was used. 6577e1e1713cSmrg if (test -L "$file") >/dev/null 2>&1 \ 6578e1e1713cSmrg || (test -h "$file") >/dev/null 2>&1 \ 6579e1e1713cSmrg || test -f "$file"; then 65807a84e134Smrg : 65817a84e134Smrg elif test -d "$file"; then 65827a84e134Smrg exit_status=1 65837a84e134Smrg continue 65847a84e134Smrg elif test "$rmforce" = yes; then 65857a84e134Smrg continue 65867a84e134Smrg fi 65877a84e134Smrg 65887a84e134Smrg rmfiles="$file" 65897a84e134Smrg 65907a84e134Smrg case $name in 65917a84e134Smrg *.la) 65927a84e134Smrg # Possibly a libtool archive, so verify it. 6593e1e1713cSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6594e1e1713cSmrg . $dir/$name 65957a84e134Smrg 65967a84e134Smrg # Delete the libtool libraries and symlinks. 65977a84e134Smrg for n in $library_names; do 65987a84e134Smrg rmfiles="$rmfiles $objdir/$n" 65997a84e134Smrg done 66007a84e134Smrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 66017a84e134Smrg 66027a84e134Smrg case "$mode" in 66037a84e134Smrg clean) 66047a84e134Smrg case " $library_names " in 66057a84e134Smrg # " " in the beginning catches empty $dlname 66067a84e134Smrg *" $dlname "*) ;; 66077a84e134Smrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 66087a84e134Smrg esac 6609e1e1713cSmrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 66107a84e134Smrg ;; 66117a84e134Smrg uninstall) 66127a84e134Smrg if test -n "$library_names"; then 66137a84e134Smrg # Do each command in the postuninstall commands. 6614e1e1713cSmrg cmds=$postuninstall_cmds 6615e1e1713cSmrg save_ifs="$IFS"; IFS='~' 6616e1e1713cSmrg for cmd in $cmds; do 6617e1e1713cSmrg IFS="$save_ifs" 6618e1e1713cSmrg eval cmd=\"$cmd\" 6619e1e1713cSmrg $show "$cmd" 6620e1e1713cSmrg $run eval "$cmd" 6621e1e1713cSmrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6622e1e1713cSmrg exit_status=1 6623e1e1713cSmrg fi 6624e1e1713cSmrg done 6625e1e1713cSmrg IFS="$save_ifs" 66267a84e134Smrg fi 66277a84e134Smrg 66287a84e134Smrg if test -n "$old_library"; then 66297a84e134Smrg # Do each command in the old_postuninstall commands. 6630e1e1713cSmrg cmds=$old_postuninstall_cmds 6631e1e1713cSmrg save_ifs="$IFS"; IFS='~' 6632e1e1713cSmrg for cmd in $cmds; do 6633e1e1713cSmrg IFS="$save_ifs" 6634e1e1713cSmrg eval cmd=\"$cmd\" 6635e1e1713cSmrg $show "$cmd" 6636e1e1713cSmrg $run eval "$cmd" 6637e1e1713cSmrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6638e1e1713cSmrg exit_status=1 6639e1e1713cSmrg fi 6640e1e1713cSmrg done 6641e1e1713cSmrg IFS="$save_ifs" 66427a84e134Smrg fi 66437a84e134Smrg # FIXME: should reinstall the best remaining shared library. 66447a84e134Smrg ;; 66457a84e134Smrg esac 66467a84e134Smrg fi 66477a84e134Smrg ;; 66487a84e134Smrg 66497a84e134Smrg *.lo) 66507a84e134Smrg # Possibly a libtool object, so verify it. 6651e1e1713cSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 66527a84e134Smrg 66537a84e134Smrg # Read the .lo file 6654e1e1713cSmrg . $dir/$name 66557a84e134Smrg 66567a84e134Smrg # Add PIC object to the list of files to remove. 6657e1e1713cSmrg if test -n "$pic_object" \ 6658e1e1713cSmrg && test "$pic_object" != none; then 66597a84e134Smrg rmfiles="$rmfiles $dir/$pic_object" 66607a84e134Smrg fi 66617a84e134Smrg 66627a84e134Smrg # Add non-PIC object to the list of files to remove. 6663e1e1713cSmrg if test -n "$non_pic_object" \ 6664e1e1713cSmrg && test "$non_pic_object" != none; then 66657a84e134Smrg rmfiles="$rmfiles $dir/$non_pic_object" 66667a84e134Smrg fi 66677a84e134Smrg fi 66687a84e134Smrg ;; 66697a84e134Smrg 66707a84e134Smrg *) 66717a84e134Smrg if test "$mode" = clean ; then 66727a84e134Smrg noexename=$name 66737a84e134Smrg case $file in 66747a84e134Smrg *.exe) 6675e1e1713cSmrg file=`$echo $file|${SED} 's,.exe$,,'` 6676e1e1713cSmrg noexename=`$echo $name|${SED} 's,.exe$,,'` 66777a84e134Smrg # $file with .exe has already been added to rmfiles, 66787a84e134Smrg # add $file without .exe 66797a84e134Smrg rmfiles="$rmfiles $file" 66807a84e134Smrg ;; 66817a84e134Smrg esac 66827a84e134Smrg # Do a test to see if this is a libtool program. 6683e1e1713cSmrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6684e1e1713cSmrg relink_command= 6685e1e1713cSmrg . $dir/$noexename 66867a84e134Smrg 66877a84e134Smrg # note $name still contains .exe if it was in $file originally 66887a84e134Smrg # as does the version of $file that was added into $rmfiles 66897a84e134Smrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 66907a84e134Smrg if test "$fast_install" = yes && test -n "$relink_command"; then 66917a84e134Smrg rmfiles="$rmfiles $objdir/lt-$name" 66927a84e134Smrg fi 66937a84e134Smrg if test "X$noexename" != "X$name" ; then 66947a84e134Smrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 66957a84e134Smrg fi 66967a84e134Smrg fi 66977a84e134Smrg fi 66987a84e134Smrg ;; 66997a84e134Smrg esac 6700e1e1713cSmrg $show "$rm $rmfiles" 6701e1e1713cSmrg $run $rm $rmfiles || exit_status=1 67027a84e134Smrg done 67037a84e134Smrg objdir="$origobjdir" 67047a84e134Smrg 67057a84e134Smrg # Try to remove the ${objdir}s in the directories where we deleted files 67067a84e134Smrg for dir in $rmdirs; do 67077a84e134Smrg if test -d "$dir"; then 6708e1e1713cSmrg $show "rmdir $dir" 6709e1e1713cSmrg $run rmdir $dir >/dev/null 2>&1 67107a84e134Smrg fi 67117a84e134Smrg done 67127a84e134Smrg 67137a84e134Smrg exit $exit_status 6714e1e1713cSmrg ;; 67157a84e134Smrg 6716e1e1713cSmrg "") 6717e1e1713cSmrg $echo "$modename: you must specify a MODE" 1>&2 6718e1e1713cSmrg $echo "$generic_help" 1>&2 6719e1e1713cSmrg exit $EXIT_FAILURE 6720e1e1713cSmrg ;; 6721e1e1713cSmrg esac 6722775e7de9Smrg 6723e1e1713cSmrg if test -z "$exec_cmd"; then 6724e1e1713cSmrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6725e1e1713cSmrg $echo "$generic_help" 1>&2 6726e1e1713cSmrg exit $EXIT_FAILURE 6727e1e1713cSmrg fi 6728e1e1713cSmrgfi # test -z "$show_help" 67297a84e134Smrg 67307a84e134Smrgif test -n "$exec_cmd"; then 6731e1e1713cSmrg eval exec $exec_cmd 67327a84e134Smrg exit $EXIT_FAILURE 67337a84e134Smrgfi 67347a84e134Smrg 6735e1e1713cSmrg# We need to display help for each of the modes. 6736e1e1713cSmrgcase $mode in 6737e1e1713cSmrg"") $echo \ 6738e1e1713cSmrg"Usage: $modename [OPTION]... [MODE-ARG]... 6739e1e1713cSmrg 6740e1e1713cSmrgProvide generalized library-building support services. 6741e1e1713cSmrg 6742e1e1713cSmrg --config show all configuration variables 6743e1e1713cSmrg --debug enable verbose shell tracing 6744e1e1713cSmrg-n, --dry-run display commands without modifying any files 6745e1e1713cSmrg --features display basic configuration information and exit 6746e1e1713cSmrg --finish same as \`--mode=finish' 6747e1e1713cSmrg --help display this help message and exit 6748e1e1713cSmrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 6749e1e1713cSmrg --quiet same as \`--silent' 6750e1e1713cSmrg --silent don't print informational messages 6751e1e1713cSmrg --tag=TAG use configuration variables from tag TAG 6752e1e1713cSmrg --version print version information 6753e1e1713cSmrg 6754e1e1713cSmrgMODE must be one of the following: 6755e1e1713cSmrg 6756e1e1713cSmrg clean remove files from the build directory 6757e1e1713cSmrg compile compile a source file into a libtool object 6758e1e1713cSmrg execute automatically set library path, then run a program 6759e1e1713cSmrg finish complete the installation of libtool libraries 6760e1e1713cSmrg install install libraries or executables 6761e1e1713cSmrg link create a library or an executable 6762e1e1713cSmrg uninstall remove libraries from an installed directory 6763e1e1713cSmrg 6764e1e1713cSmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 6765e1e1713cSmrga more detailed description of MODE. 6766e1e1713cSmrg 6767e1e1713cSmrgReport bugs to <bug-libtool@gnu.org>." 6768e1e1713cSmrg exit $EXIT_SUCCESS 6769e1e1713cSmrg ;; 6770e1e1713cSmrg 6771e1e1713cSmrgclean) 6772e1e1713cSmrg $echo \ 6773e1e1713cSmrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 6774e1e1713cSmrg 6775e1e1713cSmrgRemove files from the build directory. 6776e1e1713cSmrg 6777e1e1713cSmrgRM is the name of the program to use to delete files associated with each FILE 6778e1e1713cSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6779e1e1713cSmrgto RM. 6780e1e1713cSmrg 6781e1e1713cSmrgIf FILE is a libtool library, object or program, all the files associated 6782e1e1713cSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 6783e1e1713cSmrg ;; 6784e1e1713cSmrg 6785e1e1713cSmrgcompile) 6786e1e1713cSmrg $echo \ 6787e1e1713cSmrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 6788e1e1713cSmrg 6789e1e1713cSmrgCompile a source file into a libtool library object. 6790e1e1713cSmrg 6791e1e1713cSmrgThis mode accepts the following additional options: 6792e1e1713cSmrg 6793e1e1713cSmrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 6794e1e1713cSmrg -prefer-pic try to building PIC objects only 6795e1e1713cSmrg -prefer-non-pic try to building non-PIC objects only 6796e1e1713cSmrg -static always build a \`.o' file suitable for static linking 6797e1e1713cSmrg 6798e1e1713cSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 6799e1e1713cSmrgfrom the given SOURCEFILE. 6800e1e1713cSmrg 6801e1e1713cSmrgThe output file name is determined by removing the directory component from 6802e1e1713cSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 6803e1e1713cSmrglibrary object suffix, \`.lo'." 6804e1e1713cSmrg ;; 6805e1e1713cSmrg 6806e1e1713cSmrgexecute) 6807e1e1713cSmrg $echo \ 6808e1e1713cSmrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 6809e1e1713cSmrg 6810e1e1713cSmrgAutomatically set library path, then run a program. 6811e1e1713cSmrg 6812e1e1713cSmrgThis mode accepts the following additional options: 6813e1e1713cSmrg 6814e1e1713cSmrg -dlopen FILE add the directory containing FILE to the library path 6815e1e1713cSmrg 6816e1e1713cSmrgThis mode sets the library path environment variable according to \`-dlopen' 6817e1e1713cSmrgflags. 6818e1e1713cSmrg 6819e1e1713cSmrgIf any of the ARGS are libtool executable wrappers, then they are translated 6820e1e1713cSmrginto their corresponding uninstalled binary, and any of their required library 6821e1e1713cSmrgdirectories are added to the library path. 6822e1e1713cSmrg 6823e1e1713cSmrgThen, COMMAND is executed, with ARGS as arguments." 6824e1e1713cSmrg ;; 6825e1e1713cSmrg 6826e1e1713cSmrgfinish) 6827e1e1713cSmrg $echo \ 6828e1e1713cSmrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 6829e1e1713cSmrg 6830e1e1713cSmrgComplete the installation of libtool libraries. 6831e1e1713cSmrg 6832e1e1713cSmrgEach LIBDIR is a directory that contains libtool libraries. 6833e1e1713cSmrg 6834e1e1713cSmrgThe commands that this mode executes may require superuser privileges. Use 6835e1e1713cSmrgthe \`--dry-run' option if you just want to see what would be executed." 6836e1e1713cSmrg ;; 6837e1e1713cSmrg 6838e1e1713cSmrginstall) 6839e1e1713cSmrg $echo \ 6840e1e1713cSmrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 6841e1e1713cSmrg 6842e1e1713cSmrgInstall executables or libraries. 6843e1e1713cSmrg 6844e1e1713cSmrgINSTALL-COMMAND is the installation command. The first component should be 6845e1e1713cSmrgeither the \`install' or \`cp' program. 6846e1e1713cSmrg 6847e1e1713cSmrgThe rest of the components are interpreted as arguments to that command (only 6848e1e1713cSmrgBSD-compatible install options are recognized)." 6849e1e1713cSmrg ;; 6850e1e1713cSmrg 6851e1e1713cSmrglink) 6852e1e1713cSmrg $echo \ 6853e1e1713cSmrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 6854e1e1713cSmrg 6855e1e1713cSmrgLink object files or libraries together to form another library, or to 6856e1e1713cSmrgcreate an executable program. 68577a84e134Smrg 6858e1e1713cSmrgLINK-COMMAND is a command using the C compiler that you would use to create 6859e1e1713cSmrga program from several object files. 6860e1e1713cSmrg 6861e1e1713cSmrgThe following components of LINK-COMMAND are treated specially: 6862e1e1713cSmrg 6863e1e1713cSmrg -all-static do not do any dynamic linking at all 6864e1e1713cSmrg -avoid-version do not add a version suffix if possible 6865e1e1713cSmrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 6866e1e1713cSmrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 6867e1e1713cSmrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 6868e1e1713cSmrg -export-symbols SYMFILE 6869e1e1713cSmrg try to export only the symbols listed in SYMFILE 6870e1e1713cSmrg -export-symbols-regex REGEX 6871e1e1713cSmrg try to export only the symbols matching REGEX 6872e1e1713cSmrg -LLIBDIR search LIBDIR for required installed libraries 6873e1e1713cSmrg -lNAME OUTPUT-FILE requires the installed library libNAME 6874e1e1713cSmrg -module build a library that can dlopened 6875e1e1713cSmrg -no-fast-install disable the fast-install mode 6876e1e1713cSmrg -no-install link a not-installable executable 6877e1e1713cSmrg -no-undefined declare that a library does not refer to external symbols 6878e1e1713cSmrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 6879e1e1713cSmrg -objectlist FILE Use a list of object files found in FILE to specify objects 6880e1e1713cSmrg -precious-files-regex REGEX 6881e1e1713cSmrg don't remove output files matching REGEX 6882e1e1713cSmrg -release RELEASE specify package release information 6883e1e1713cSmrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 6884e1e1713cSmrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 6885e1e1713cSmrg -static do not do any dynamic linking of uninstalled libtool libraries 6886e1e1713cSmrg -static-libtool-libs 6887e1e1713cSmrg do not do any dynamic linking of libtool libraries 6888e1e1713cSmrg -version-info CURRENT[:REVISION[:AGE]] 6889e1e1713cSmrg specify library version info [each variable defaults to 0] 6890e1e1713cSmrg 6891e1e1713cSmrgAll other options (arguments beginning with \`-') are ignored. 6892e1e1713cSmrg 6893e1e1713cSmrgEvery other argument is treated as a filename. Files ending in \`.la' are 6894e1e1713cSmrgtreated as uninstalled libtool libraries, other files are standard or library 6895e1e1713cSmrgobject files. 6896e1e1713cSmrg 6897e1e1713cSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 6898e1e1713cSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 6899e1e1713cSmrgrequired, except when creating a convenience library. 6900e1e1713cSmrg 6901e1e1713cSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 6902e1e1713cSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 6903e1e1713cSmrg 6904e1e1713cSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 6905e1e1713cSmrgis created, otherwise an executable program is created." 6906e1e1713cSmrg ;; 6907e1e1713cSmrg 6908e1e1713cSmrguninstall) 6909e1e1713cSmrg $echo \ 6910e1e1713cSmrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 6911e1e1713cSmrg 6912e1e1713cSmrgRemove libraries from an installation directory. 6913e1e1713cSmrg 6914e1e1713cSmrgRM is the name of the program to use to delete files associated with each FILE 6915e1e1713cSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6916e1e1713cSmrgto RM. 6917e1e1713cSmrg 6918e1e1713cSmrgIf FILE is a libtool library, all the files associated with it are deleted. 6919e1e1713cSmrgOtherwise, only FILE itself is deleted using RM." 6920e1e1713cSmrg ;; 6921e1e1713cSmrg 6922e1e1713cSmrg*) 6923e1e1713cSmrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6924e1e1713cSmrg $echo "$help" 1>&2 6925e1e1713cSmrg exit $EXIT_FAILURE 6926e1e1713cSmrg ;; 6927e1e1713cSmrgesac 6928e1e1713cSmrg 6929e1e1713cSmrg$echo 6930e1e1713cSmrg$echo "Try \`$modename --help' for more information about other modes." 6931e1e1713cSmrg 6932e1e1713cSmrgexit $? 69337a84e134Smrg 69347a84e134Smrg# The TAGs below are defined such that we never get into a situation 69357a84e134Smrg# in which we disable both kinds of libraries. Given conflicting 69367a84e134Smrg# choices, we go for a static library, that is the most portable, 69377a84e134Smrg# since we can't tell whether shared libraries were disabled because 69387a84e134Smrg# the user asked for that or because the platform doesn't support 69397a84e134Smrg# them. This is particularly important on AIX, because we don't 69407a84e134Smrg# support having both static and shared libraries enabled at the same 69417a84e134Smrg# time on that platform, so we default to a shared-only configuration. 69427a84e134Smrg# If a disable-shared tag is given, we'll fallback to a static-only 69437a84e134Smrg# configuration. But we'll never go from static-only to shared-only. 69447a84e134Smrg 69457a84e134Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 6946e1e1713cSmrgdisable_libs=shared 69477a84e134Smrg# ### END LIBTOOL TAG CONFIG: disable-shared 69487a84e134Smrg 69497a84e134Smrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 6950e1e1713cSmrgdisable_libs=static 69517a84e134Smrg# ### END LIBTOOL TAG CONFIG: disable-static 69527a84e134Smrg 69537a84e134Smrg# Local Variables: 69547a84e134Smrg# mode:shell-script 69557a84e134Smrg# sh-indentation:2 69567a84e134Smrg# End: 6957