ltmain.sh revision c5629e66
1266e564dSmrg# ltmain.sh - Provide generalized library-building support services. 2266e564dSmrg# NOTE: Changing this file will not affect anything until you rerun configure. 3266e564dSmrg# 4c5629e66Smrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 5c5629e66Smrg# 2007, 2008 Free Software Foundation, Inc. 6266e564dSmrg# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 7266e564dSmrg# 8266e564dSmrg# This program is free software; you can redistribute it and/or modify 9266e564dSmrg# it under the terms of the GNU General Public License as published by 10266e564dSmrg# the Free Software Foundation; either version 2 of the License, or 11266e564dSmrg# (at your option) any later version. 12266e564dSmrg# 13266e564dSmrg# This program is distributed in the hope that it will be useful, but 14266e564dSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 15266e564dSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16266e564dSmrg# General Public License for more details. 17266e564dSmrg# 18266e564dSmrg# You should have received a copy of the GNU General Public License 19266e564dSmrg# along with this program; if not, write to the Free Software 20266e564dSmrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21266e564dSmrg# 22266e564dSmrg# As a special exception to the GNU General Public License, if you 23266e564dSmrg# distribute this file as part of a program that contains a 24266e564dSmrg# configuration script generated by Autoconf, you may include it under 25266e564dSmrg# the same distribution terms that you use for the rest of that program. 26266e564dSmrg 27266e564dSmrgbasename="s,^.*/,,g" 28266e564dSmrg 29266e564dSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 30266e564dSmrg# is ksh but when the shell is invoked as "sh" and the current value of 31266e564dSmrg# the _XPG environment variable is not equal to 1 (one), the special 32266e564dSmrg# positional parameter $0, within a function call, is the name of the 33266e564dSmrg# function. 34266e564dSmrgprogpath="$0" 35266e564dSmrg 36c5629e66Smrg# define SED for historic ltconfig's generated by Libtool 1.3 37c5629e66Smrgtest -z "$SED" && SED=sed 38c5629e66Smrg 39266e564dSmrg# The name of this program: 40266e564dSmrgprogname=`echo "$progpath" | $SED $basename` 41266e564dSmrgmodename="$progname" 42266e564dSmrg 43266e564dSmrg# Global variables: 44266e564dSmrgEXIT_SUCCESS=0 45266e564dSmrgEXIT_FAILURE=1 46266e564dSmrg 47266e564dSmrgPROGRAM=ltmain.sh 48266e564dSmrgPACKAGE=libtool 49c5629e66SmrgVERSION=1.5.26 50c5629e66SmrgTIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)" 51c5629e66Smrg 52c5629e66Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 53c5629e66Smrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 54c5629e66Smrg emulate sh 55c5629e66Smrg NULLCMD=: 56c5629e66Smrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 57c5629e66Smrg # is contrary to our usage. Disable this feature. 58c5629e66Smrg alias -g '${1+"$@"}'='"$@"' 59266e564dSmrg setopt NO_GLOB_SUBST 60c5629e66Smrgelse 61c5629e66Smrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 62266e564dSmrgfi 63c5629e66SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 64c5629e66SmrgDUALCASE=1; export DUALCASE # for MKS sh 65266e564dSmrg 66266e564dSmrg# Check that we have a working $echo. 67266e564dSmrgif test "X$1" = X--no-reexec; then 68266e564dSmrg # Discard the --no-reexec flag, and continue. 69266e564dSmrg shift 70266e564dSmrgelif test "X$1" = X--fallback-echo; then 71266e564dSmrg # Avoid inline document here, it may be left over 72266e564dSmrg : 73266e564dSmrgelif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 74266e564dSmrg # Yippee, $echo works! 75266e564dSmrg : 76266e564dSmrgelse 77266e564dSmrg # Restart under the correct shell, and then maybe $echo will work. 78266e564dSmrg exec $SHELL "$progpath" --no-reexec ${1+"$@"} 79266e564dSmrgfi 80266e564dSmrg 81266e564dSmrgif test "X$1" = X--fallback-echo; then 82266e564dSmrg # used as fallback echo 83266e564dSmrg shift 84266e564dSmrg cat <<EOF 85266e564dSmrg$* 86266e564dSmrgEOF 87266e564dSmrg exit $EXIT_SUCCESS 88266e564dSmrgfi 89266e564dSmrg 90266e564dSmrgdefault_mode= 91266e564dSmrghelp="Try \`$progname --help' for more information." 92266e564dSmrgmagic="%%%MAGIC variable%%%" 93266e564dSmrgmkdir="mkdir" 94266e564dSmrgmv="mv -f" 95266e564dSmrgrm="rm -f" 96266e564dSmrg 97266e564dSmrg# Sed substitution that helps us do robust quoting. It backslashifies 98266e564dSmrg# metacharacters that are still active within double-quoted strings. 99266e564dSmrgXsed="${SED}"' -e 1s/^X//' 100266e564dSmrgsed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 101266e564dSmrg# test EBCDIC or ASCII 102266e564dSmrgcase `echo X|tr X '\101'` in 103266e564dSmrg A) # ASCII based system 104266e564dSmrg # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr 105266e564dSmrg SP2NL='tr \040 \012' 106266e564dSmrg NL2SP='tr \015\012 \040\040' 107266e564dSmrg ;; 108266e564dSmrg *) # EBCDIC based system 109266e564dSmrg SP2NL='tr \100 \n' 110266e564dSmrg NL2SP='tr \r\n \100\100' 111266e564dSmrg ;; 112266e564dSmrgesac 113266e564dSmrg 114266e564dSmrg# NLS nuisances. 115266e564dSmrg# Only set LANG and LC_ALL to C if already set. 116266e564dSmrg# These must not be set unconditionally because not all systems understand 117266e564dSmrg# e.g. LANG=C (notably SCO). 118266e564dSmrg# We save the old values to restore during execute mode. 119c5629e66Smrglt_env= 120c5629e66Smrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 121c5629e66Smrgdo 122c5629e66Smrg eval "if test \"\${$lt_var+set}\" = set; then 123c5629e66Smrg save_$lt_var=\$$lt_var 124c5629e66Smrg lt_env=\"$lt_var=\$$lt_var \$lt_env\" 125c5629e66Smrg $lt_var=C 126c5629e66Smrg export $lt_var 127c5629e66Smrg fi" 128c5629e66Smrgdone 129c5629e66Smrg 130c5629e66Smrgif test -n "$lt_env"; then 131c5629e66Smrg lt_env="env $lt_env" 132266e564dSmrgfi 133266e564dSmrg 134266e564dSmrg# Make sure IFS has a sensible default 135266e564dSmrglt_nl=' 136266e564dSmrg' 137266e564dSmrgIFS=" $lt_nl" 138266e564dSmrg 139266e564dSmrgif test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 140266e564dSmrg $echo "$modename: not configured to build any kind of library" 1>&2 141266e564dSmrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 142266e564dSmrg exit $EXIT_FAILURE 143266e564dSmrgfi 144266e564dSmrg 145266e564dSmrg# Global variables. 146266e564dSmrgmode=$default_mode 147266e564dSmrgnonopt= 148266e564dSmrgprev= 149266e564dSmrgprevopt= 150266e564dSmrgrun= 151266e564dSmrgshow="$echo" 152266e564dSmrgshow_help= 153266e564dSmrgexecute_dlfiles= 154266e564dSmrgduplicate_deps=no 155266e564dSmrgpreserve_args= 156266e564dSmrglo2o="s/\\.lo\$/.${objext}/" 157266e564dSmrgo2lo="s/\\.${objext}\$/.lo/" 158c5629e66Smrgextracted_archives= 159c5629e66Smrgextracted_serial=0 160266e564dSmrg 161266e564dSmrg##################################### 162266e564dSmrg# Shell function definitions: 163266e564dSmrg# This seems to be the best place for them 164266e564dSmrg 165266e564dSmrg# func_mktempdir [string] 166266e564dSmrg# Make a temporary directory that won't clash with other running 167266e564dSmrg# libtool processes, and avoids race conditions if possible. If 168266e564dSmrg# given, STRING is the basename for that directory. 169266e564dSmrgfunc_mktempdir () 170266e564dSmrg{ 171266e564dSmrg my_template="${TMPDIR-/tmp}/${1-$progname}" 172266e564dSmrg 173266e564dSmrg if test "$run" = ":"; then 174266e564dSmrg # Return a directory name, but don't create it in dry-run mode 175266e564dSmrg my_tmpdir="${my_template}-$$" 176266e564dSmrg else 177266e564dSmrg 178266e564dSmrg # If mktemp works, use that first and foremost 179266e564dSmrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 180266e564dSmrg 181266e564dSmrg if test ! -d "$my_tmpdir"; then 182266e564dSmrg # Failing that, at least try and use $RANDOM to avoid a race 183266e564dSmrg my_tmpdir="${my_template}-${RANDOM-0}$$" 184266e564dSmrg 185266e564dSmrg save_mktempdir_umask=`umask` 186266e564dSmrg umask 0077 187266e564dSmrg $mkdir "$my_tmpdir" 188266e564dSmrg umask $save_mktempdir_umask 189266e564dSmrg fi 190266e564dSmrg 191266e564dSmrg # If we're not in dry-run mode, bomb out on failure 192266e564dSmrg test -d "$my_tmpdir" || { 193266e564dSmrg $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 194266e564dSmrg exit $EXIT_FAILURE 195266e564dSmrg } 196266e564dSmrg fi 197266e564dSmrg 198266e564dSmrg $echo "X$my_tmpdir" | $Xsed 199266e564dSmrg} 200266e564dSmrg 201266e564dSmrg 202266e564dSmrg# func_win32_libid arg 203266e564dSmrg# return the library type of file 'arg' 204266e564dSmrg# 205266e564dSmrg# Need a lot of goo to handle *both* DLLs and import libs 206266e564dSmrg# Has to be a shell function in order to 'eat' the argument 207266e564dSmrg# that is supplied when $file_magic_command is called. 208266e564dSmrgfunc_win32_libid () 209266e564dSmrg{ 210266e564dSmrg win32_libid_type="unknown" 211266e564dSmrg win32_fileres=`file -L $1 2>/dev/null` 212266e564dSmrg case $win32_fileres in 213266e564dSmrg *ar\ archive\ import\ library*) # definitely import 214266e564dSmrg win32_libid_type="x86 archive import" 215266e564dSmrg ;; 216266e564dSmrg *ar\ archive*) # could be an import, or static 217266e564dSmrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ 218266e564dSmrg $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then 219266e564dSmrg win32_nmres=`eval $NM -f posix -A $1 | \ 220c5629e66Smrg $SED -n -e '1,100{ 221c5629e66Smrg / I /{ 222c5629e66Smrg s,.*,import, 223c5629e66Smrg p 224c5629e66Smrg q 225c5629e66Smrg } 226c5629e66Smrg }'` 227266e564dSmrg case $win32_nmres in 228266e564dSmrg import*) win32_libid_type="x86 archive import";; 229266e564dSmrg *) win32_libid_type="x86 archive static";; 230266e564dSmrg esac 231266e564dSmrg fi 232266e564dSmrg ;; 233266e564dSmrg *DLL*) 234266e564dSmrg win32_libid_type="x86 DLL" 235266e564dSmrg ;; 236266e564dSmrg *executable*) # but shell scripts are "executable" too... 237266e564dSmrg case $win32_fileres in 238266e564dSmrg *MS\ Windows\ PE\ Intel*) 239266e564dSmrg win32_libid_type="x86 DLL" 240266e564dSmrg ;; 241266e564dSmrg esac 242266e564dSmrg ;; 243266e564dSmrg esac 244266e564dSmrg $echo $win32_libid_type 245266e564dSmrg} 246266e564dSmrg 247266e564dSmrg 248266e564dSmrg# func_infer_tag arg 249266e564dSmrg# Infer tagged configuration to use if any are available and 250266e564dSmrg# if one wasn't chosen via the "--tag" command line option. 251266e564dSmrg# Only attempt this if the compiler in the base compile 252266e564dSmrg# command doesn't match the default compiler. 253266e564dSmrg# arg is usually of the form 'gcc ...' 254266e564dSmrgfunc_infer_tag () 255266e564dSmrg{ 256266e564dSmrg if test -n "$available_tags" && test -z "$tagname"; then 257266e564dSmrg CC_quoted= 258266e564dSmrg for arg in $CC; do 259266e564dSmrg case $arg in 260266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 261266e564dSmrg arg="\"$arg\"" 262266e564dSmrg ;; 263266e564dSmrg esac 264266e564dSmrg CC_quoted="$CC_quoted $arg" 265266e564dSmrg done 266266e564dSmrg case $@ in 267266e564dSmrg # Blanks in the command may have been stripped by the calling shell, 268266e564dSmrg # but not from the CC environment variable when configure was run. 269266e564dSmrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; 270266e564dSmrg # Blanks at the start of $base_compile will cause this to fail 271266e564dSmrg # if we don't check for them as well. 272266e564dSmrg *) 273266e564dSmrg for z in $available_tags; do 274266e564dSmrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 275266e564dSmrg # Evaluate the configuration. 276266e564dSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 277266e564dSmrg CC_quoted= 278266e564dSmrg for arg in $CC; do 279266e564dSmrg # Double-quote args containing other shell metacharacters. 280266e564dSmrg case $arg in 281266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 282266e564dSmrg arg="\"$arg\"" 283266e564dSmrg ;; 284266e564dSmrg esac 285266e564dSmrg CC_quoted="$CC_quoted $arg" 286266e564dSmrg done 287266e564dSmrg case "$@ " in 288266e564dSmrg " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) 289266e564dSmrg # The compiler in the base compile command matches 290266e564dSmrg # the one in the tagged configuration. 291266e564dSmrg # Assume this is the tagged configuration we want. 292266e564dSmrg tagname=$z 293266e564dSmrg break 294266e564dSmrg ;; 295266e564dSmrg esac 296266e564dSmrg fi 297266e564dSmrg done 298266e564dSmrg # If $tagname still isn't set, then no tagged configuration 299266e564dSmrg # was found and let the user know that the "--tag" command 300266e564dSmrg # line option must be used. 301266e564dSmrg if test -z "$tagname"; then 302266e564dSmrg $echo "$modename: unable to infer tagged configuration" 303266e564dSmrg $echo "$modename: specify a tag with \`--tag'" 1>&2 304266e564dSmrg exit $EXIT_FAILURE 305266e564dSmrg# else 306266e564dSmrg# $echo "$modename: using $tagname tagged configuration" 307266e564dSmrg fi 308266e564dSmrg ;; 309266e564dSmrg esac 310266e564dSmrg fi 311266e564dSmrg} 312266e564dSmrg 313266e564dSmrg 314266e564dSmrg# func_extract_an_archive dir oldlib 315266e564dSmrgfunc_extract_an_archive () 316266e564dSmrg{ 317266e564dSmrg f_ex_an_ar_dir="$1"; shift 318266e564dSmrg f_ex_an_ar_oldlib="$1" 319266e564dSmrg 320266e564dSmrg $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" 321266e564dSmrg $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? 322266e564dSmrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 323266e564dSmrg : 324266e564dSmrg else 325266e564dSmrg $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 326266e564dSmrg exit $EXIT_FAILURE 327266e564dSmrg fi 328266e564dSmrg} 329266e564dSmrg 330266e564dSmrg# func_extract_archives gentop oldlib ... 331266e564dSmrgfunc_extract_archives () 332266e564dSmrg{ 333266e564dSmrg my_gentop="$1"; shift 334266e564dSmrg my_oldlibs=${1+"$@"} 335266e564dSmrg my_oldobjs="" 336266e564dSmrg my_xlib="" 337266e564dSmrg my_xabs="" 338266e564dSmrg my_xdir="" 339266e564dSmrg my_status="" 340266e564dSmrg 341266e564dSmrg $show "${rm}r $my_gentop" 342266e564dSmrg $run ${rm}r "$my_gentop" 343266e564dSmrg $show "$mkdir $my_gentop" 344266e564dSmrg $run $mkdir "$my_gentop" 345266e564dSmrg my_status=$? 346266e564dSmrg if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then 347266e564dSmrg exit $my_status 348266e564dSmrg fi 349266e564dSmrg 350266e564dSmrg for my_xlib in $my_oldlibs; do 351266e564dSmrg # Extract the objects. 352266e564dSmrg case $my_xlib in 353266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 354266e564dSmrg *) my_xabs=`pwd`"/$my_xlib" ;; 355266e564dSmrg esac 356266e564dSmrg my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` 357c5629e66Smrg my_xlib_u=$my_xlib 358c5629e66Smrg while :; do 359c5629e66Smrg case " $extracted_archives " in 360c5629e66Smrg *" $my_xlib_u "*) 361c5629e66Smrg extracted_serial=`expr $extracted_serial + 1` 362c5629e66Smrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 363c5629e66Smrg *) break ;; 364c5629e66Smrg esac 365c5629e66Smrg done 366c5629e66Smrg extracted_archives="$extracted_archives $my_xlib_u" 367c5629e66Smrg my_xdir="$my_gentop/$my_xlib_u" 368266e564dSmrg 369266e564dSmrg $show "${rm}r $my_xdir" 370266e564dSmrg $run ${rm}r "$my_xdir" 371266e564dSmrg $show "$mkdir $my_xdir" 372266e564dSmrg $run $mkdir "$my_xdir" 373266e564dSmrg exit_status=$? 374266e564dSmrg if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then 375266e564dSmrg exit $exit_status 376266e564dSmrg fi 377266e564dSmrg case $host in 378266e564dSmrg *-darwin*) 379266e564dSmrg $show "Extracting $my_xabs" 380266e564dSmrg # Do not bother doing anything if just a dry run 381266e564dSmrg if test -z "$run"; then 382266e564dSmrg darwin_orig_dir=`pwd` 383266e564dSmrg cd $my_xdir || exit $? 384266e564dSmrg darwin_archive=$my_xabs 385266e564dSmrg darwin_curdir=`pwd` 386266e564dSmrg darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` 387266e564dSmrg darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` 388266e564dSmrg if test -n "$darwin_arches"; then 389266e564dSmrg darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` 390266e564dSmrg darwin_arch= 391266e564dSmrg $show "$darwin_base_archive has multiple architectures $darwin_arches" 392266e564dSmrg for darwin_arch in $darwin_arches ; do 393266e564dSmrg mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 394266e564dSmrg lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 395266e564dSmrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 396266e564dSmrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 397266e564dSmrg cd "$darwin_curdir" 398266e564dSmrg $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 399266e564dSmrg done # $darwin_arches 400266e564dSmrg ## Okay now we have a bunch of thin objects, gotta fatten them up :) 401266e564dSmrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` 402266e564dSmrg darwin_file= 403266e564dSmrg darwin_files= 404266e564dSmrg for darwin_file in $darwin_filelist; do 405266e564dSmrg darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` 406266e564dSmrg lipo -create -output "$darwin_file" $darwin_files 407266e564dSmrg done # $darwin_filelist 408266e564dSmrg ${rm}r unfat-$$ 409266e564dSmrg cd "$darwin_orig_dir" 410266e564dSmrg else 411266e564dSmrg cd "$darwin_orig_dir" 412266e564dSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 413266e564dSmrg fi # $darwin_arches 414266e564dSmrg fi # $run 415266e564dSmrg ;; 416266e564dSmrg *) 417266e564dSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 418266e564dSmrg ;; 419266e564dSmrg esac 420266e564dSmrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` 421266e564dSmrg done 422266e564dSmrg func_extract_archives_result="$my_oldobjs" 423266e564dSmrg} 424266e564dSmrg# End of Shell function definitions 425266e564dSmrg##################################### 426266e564dSmrg 427266e564dSmrg# Darwin sucks 428266e564dSmrgeval std_shrext=\"$shrext_cmds\" 429266e564dSmrg 430266e564dSmrgdisable_libs=no 431266e564dSmrg 432266e564dSmrg# Parse our command line options once, thoroughly. 433266e564dSmrgwhile test "$#" -gt 0 434266e564dSmrgdo 435266e564dSmrg arg="$1" 436266e564dSmrg shift 437266e564dSmrg 438266e564dSmrg case $arg in 439266e564dSmrg -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 440266e564dSmrg *) optarg= ;; 441266e564dSmrg esac 442266e564dSmrg 443266e564dSmrg # If the previous option needs an argument, assign it. 444266e564dSmrg if test -n "$prev"; then 445266e564dSmrg case $prev in 446266e564dSmrg execute_dlfiles) 447266e564dSmrg execute_dlfiles="$execute_dlfiles $arg" 448266e564dSmrg ;; 449266e564dSmrg tag) 450266e564dSmrg tagname="$arg" 451266e564dSmrg preserve_args="${preserve_args}=$arg" 452266e564dSmrg 453266e564dSmrg # Check whether tagname contains only valid characters 454266e564dSmrg case $tagname in 455266e564dSmrg *[!-_A-Za-z0-9,/]*) 456266e564dSmrg $echo "$progname: invalid tag name: $tagname" 1>&2 457266e564dSmrg exit $EXIT_FAILURE 458266e564dSmrg ;; 459266e564dSmrg esac 460266e564dSmrg 461266e564dSmrg case $tagname in 462266e564dSmrg CC) 463266e564dSmrg # Don't test for the "default" C tag, as we know, it's there, but 464266e564dSmrg # not specially marked. 465266e564dSmrg ;; 466266e564dSmrg *) 467266e564dSmrg if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then 468266e564dSmrg taglist="$taglist $tagname" 469266e564dSmrg # Evaluate the configuration. 470266e564dSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" 471266e564dSmrg else 472266e564dSmrg $echo "$progname: ignoring unknown tag $tagname" 1>&2 473266e564dSmrg fi 474266e564dSmrg ;; 475266e564dSmrg esac 476266e564dSmrg ;; 477266e564dSmrg *) 478266e564dSmrg eval "$prev=\$arg" 479266e564dSmrg ;; 480266e564dSmrg esac 481266e564dSmrg 482266e564dSmrg prev= 483266e564dSmrg prevopt= 484266e564dSmrg continue 485266e564dSmrg fi 486266e564dSmrg 487266e564dSmrg # Have we seen a non-optional argument yet? 488266e564dSmrg case $arg in 489266e564dSmrg --help) 490266e564dSmrg show_help=yes 491266e564dSmrg ;; 492266e564dSmrg 493266e564dSmrg --version) 494c5629e66Smrg echo "\ 495c5629e66Smrg$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP 496c5629e66Smrg 497c5629e66SmrgCopyright (C) 2008 Free Software Foundation, Inc. 498c5629e66SmrgThis is free software; see the source for copying conditions. There is NO 499c5629e66Smrgwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." 500266e564dSmrg exit $? 501266e564dSmrg ;; 502266e564dSmrg 503266e564dSmrg --config) 504266e564dSmrg ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath 505266e564dSmrg # Now print the configurations for the tags. 506266e564dSmrg for tagname in $taglist; do 507266e564dSmrg ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" 508266e564dSmrg done 509266e564dSmrg exit $? 510266e564dSmrg ;; 511266e564dSmrg 512266e564dSmrg --debug) 513266e564dSmrg $echo "$progname: enabling shell trace mode" 514266e564dSmrg set -x 515266e564dSmrg preserve_args="$preserve_args $arg" 516266e564dSmrg ;; 517266e564dSmrg 518266e564dSmrg --dry-run | -n) 519266e564dSmrg run=: 520266e564dSmrg ;; 521266e564dSmrg 522266e564dSmrg --features) 523266e564dSmrg $echo "host: $host" 524266e564dSmrg if test "$build_libtool_libs" = yes; then 525266e564dSmrg $echo "enable shared libraries" 526266e564dSmrg else 527266e564dSmrg $echo "disable shared libraries" 528266e564dSmrg fi 529266e564dSmrg if test "$build_old_libs" = yes; then 530266e564dSmrg $echo "enable static libraries" 531266e564dSmrg else 532266e564dSmrg $echo "disable static libraries" 533266e564dSmrg fi 534266e564dSmrg exit $? 535266e564dSmrg ;; 536266e564dSmrg 537266e564dSmrg --finish) mode="finish" ;; 538266e564dSmrg 539266e564dSmrg --mode) prevopt="--mode" prev=mode ;; 540266e564dSmrg --mode=*) mode="$optarg" ;; 541266e564dSmrg 542266e564dSmrg --preserve-dup-deps) duplicate_deps="yes" ;; 543266e564dSmrg 544266e564dSmrg --quiet | --silent) 545266e564dSmrg show=: 546266e564dSmrg preserve_args="$preserve_args $arg" 547266e564dSmrg ;; 548266e564dSmrg 549266e564dSmrg --tag) 550266e564dSmrg prevopt="--tag" 551266e564dSmrg prev=tag 552266e564dSmrg preserve_args="$preserve_args --tag" 553266e564dSmrg ;; 554266e564dSmrg --tag=*) 555266e564dSmrg set tag "$optarg" ${1+"$@"} 556266e564dSmrg shift 557266e564dSmrg prev=tag 558266e564dSmrg preserve_args="$preserve_args --tag" 559266e564dSmrg ;; 560266e564dSmrg 561266e564dSmrg -dlopen) 562266e564dSmrg prevopt="-dlopen" 563266e564dSmrg prev=execute_dlfiles 564266e564dSmrg ;; 565266e564dSmrg 566266e564dSmrg -*) 567266e564dSmrg $echo "$modename: unrecognized option \`$arg'" 1>&2 568266e564dSmrg $echo "$help" 1>&2 569266e564dSmrg exit $EXIT_FAILURE 570266e564dSmrg ;; 571266e564dSmrg 572266e564dSmrg *) 573266e564dSmrg nonopt="$arg" 574266e564dSmrg break 575266e564dSmrg ;; 576266e564dSmrg esac 577266e564dSmrgdone 578266e564dSmrg 579266e564dSmrgif test -n "$prevopt"; then 580266e564dSmrg $echo "$modename: option \`$prevopt' requires an argument" 1>&2 581266e564dSmrg $echo "$help" 1>&2 582266e564dSmrg exit $EXIT_FAILURE 583266e564dSmrgfi 584266e564dSmrg 585266e564dSmrgcase $disable_libs in 586266e564dSmrgno) 587266e564dSmrg ;; 588266e564dSmrgshared) 589266e564dSmrg build_libtool_libs=no 590266e564dSmrg build_old_libs=yes 591266e564dSmrg ;; 592266e564dSmrgstatic) 593266e564dSmrg build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 594266e564dSmrg ;; 595266e564dSmrgesac 596266e564dSmrg 597266e564dSmrg# If this variable is set in any of the actions, the command in it 598266e564dSmrg# will be execed at the end. This prevents here-documents from being 599266e564dSmrg# left over by shells. 600266e564dSmrgexec_cmd= 601266e564dSmrg 602266e564dSmrgif test -z "$show_help"; then 603266e564dSmrg 604266e564dSmrg # Infer the operation mode. 605266e564dSmrg if test -z "$mode"; then 606266e564dSmrg $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 607266e564dSmrg $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 608266e564dSmrg case $nonopt in 609266e564dSmrg *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) 610266e564dSmrg mode=link 611266e564dSmrg for arg 612266e564dSmrg do 613266e564dSmrg case $arg in 614266e564dSmrg -c) 615266e564dSmrg mode=compile 616266e564dSmrg break 617266e564dSmrg ;; 618266e564dSmrg esac 619266e564dSmrg done 620266e564dSmrg ;; 621266e564dSmrg *db | *dbx | *strace | *truss) 622266e564dSmrg mode=execute 623266e564dSmrg ;; 624266e564dSmrg *install*|cp|mv) 625266e564dSmrg mode=install 626266e564dSmrg ;; 627266e564dSmrg *rm) 628266e564dSmrg mode=uninstall 629266e564dSmrg ;; 630266e564dSmrg *) 631266e564dSmrg # If we have no mode, but dlfiles were specified, then do execute mode. 632266e564dSmrg test -n "$execute_dlfiles" && mode=execute 633266e564dSmrg 634266e564dSmrg # Just use the default operation mode. 635266e564dSmrg if test -z "$mode"; then 636266e564dSmrg if test -n "$nonopt"; then 637266e564dSmrg $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 638266e564dSmrg else 639266e564dSmrg $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 640266e564dSmrg fi 641266e564dSmrg fi 642266e564dSmrg ;; 643266e564dSmrg esac 644266e564dSmrg fi 645266e564dSmrg 646266e564dSmrg # Only execute mode is allowed to have -dlopen flags. 647266e564dSmrg if test -n "$execute_dlfiles" && test "$mode" != execute; then 648266e564dSmrg $echo "$modename: unrecognized option \`-dlopen'" 1>&2 649266e564dSmrg $echo "$help" 1>&2 650266e564dSmrg exit $EXIT_FAILURE 651266e564dSmrg fi 652266e564dSmrg 653266e564dSmrg # Change the help message to a mode-specific one. 654266e564dSmrg generic_help="$help" 655266e564dSmrg help="Try \`$modename --help --mode=$mode' for more information." 656266e564dSmrg 657266e564dSmrg # These modes are in order of execution frequency so that they run quickly. 658266e564dSmrg case $mode in 659266e564dSmrg # libtool compile mode 660266e564dSmrg compile) 661266e564dSmrg modename="$modename: compile" 662266e564dSmrg # Get the compilation command and the source file. 663266e564dSmrg base_compile= 664266e564dSmrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 665266e564dSmrg suppress_opt=yes 666266e564dSmrg suppress_output= 667266e564dSmrg arg_mode=normal 668266e564dSmrg libobj= 669266e564dSmrg later= 670266e564dSmrg 671266e564dSmrg for arg 672266e564dSmrg do 673266e564dSmrg case $arg_mode in 674266e564dSmrg arg ) 675266e564dSmrg # do not "continue". Instead, add this to base_compile 676266e564dSmrg lastarg="$arg" 677266e564dSmrg arg_mode=normal 678266e564dSmrg ;; 679266e564dSmrg 680266e564dSmrg target ) 681266e564dSmrg libobj="$arg" 682266e564dSmrg arg_mode=normal 683266e564dSmrg continue 684266e564dSmrg ;; 685266e564dSmrg 686266e564dSmrg normal ) 687266e564dSmrg # Accept any command-line options. 688266e564dSmrg case $arg in 689266e564dSmrg -o) 690266e564dSmrg if test -n "$libobj" ; then 691266e564dSmrg $echo "$modename: you cannot specify \`-o' more than once" 1>&2 692266e564dSmrg exit $EXIT_FAILURE 693266e564dSmrg fi 694266e564dSmrg arg_mode=target 695266e564dSmrg continue 696266e564dSmrg ;; 697266e564dSmrg 698266e564dSmrg -static | -prefer-pic | -prefer-non-pic) 699266e564dSmrg later="$later $arg" 700266e564dSmrg continue 701266e564dSmrg ;; 702266e564dSmrg 703266e564dSmrg -no-suppress) 704266e564dSmrg suppress_opt=no 705266e564dSmrg continue 706266e564dSmrg ;; 707266e564dSmrg 708266e564dSmrg -Xcompiler) 709266e564dSmrg arg_mode=arg # the next one goes into the "base_compile" arg list 710266e564dSmrg continue # The current "srcfile" will either be retained or 711266e564dSmrg ;; # replaced later. I would guess that would be a bug. 712266e564dSmrg 713266e564dSmrg -Wc,*) 714266e564dSmrg args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` 715266e564dSmrg lastarg= 716266e564dSmrg save_ifs="$IFS"; IFS=',' 717266e564dSmrg for arg in $args; do 718266e564dSmrg IFS="$save_ifs" 719266e564dSmrg 720266e564dSmrg # Double-quote args containing other shell metacharacters. 721266e564dSmrg # Many Bourne shells cannot handle close brackets correctly 722266e564dSmrg # in scan sets, so we specify it separately. 723266e564dSmrg case $arg in 724266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 725266e564dSmrg arg="\"$arg\"" 726266e564dSmrg ;; 727266e564dSmrg esac 728266e564dSmrg lastarg="$lastarg $arg" 729266e564dSmrg done 730266e564dSmrg IFS="$save_ifs" 731266e564dSmrg lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` 732266e564dSmrg 733266e564dSmrg # Add the arguments to base_compile. 734266e564dSmrg base_compile="$base_compile $lastarg" 735266e564dSmrg continue 736266e564dSmrg ;; 737266e564dSmrg 738266e564dSmrg * ) 739266e564dSmrg # Accept the current argument as the source file. 740266e564dSmrg # The previous "srcfile" becomes the current argument. 741266e564dSmrg # 742266e564dSmrg lastarg="$srcfile" 743266e564dSmrg srcfile="$arg" 744266e564dSmrg ;; 745266e564dSmrg esac # case $arg 746266e564dSmrg ;; 747266e564dSmrg esac # case $arg_mode 748266e564dSmrg 749266e564dSmrg # Aesthetically quote the previous argument. 750266e564dSmrg lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 751266e564dSmrg 752266e564dSmrg case $lastarg in 753266e564dSmrg # Double-quote args containing other shell metacharacters. 754266e564dSmrg # Many Bourne shells cannot handle close brackets correctly 755266e564dSmrg # in scan sets, and some SunOS ksh mistreat backslash-escaping 756266e564dSmrg # in scan sets (worked around with variable expansion), 757266e564dSmrg # and furthermore cannot handle '|' '&' '(' ')' in scan sets 758266e564dSmrg # at all, so we specify them separately. 759266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 760266e564dSmrg lastarg="\"$lastarg\"" 761266e564dSmrg ;; 762266e564dSmrg esac 763266e564dSmrg 764266e564dSmrg base_compile="$base_compile $lastarg" 765266e564dSmrg done # for arg 766266e564dSmrg 767266e564dSmrg case $arg_mode in 768266e564dSmrg arg) 769266e564dSmrg $echo "$modename: you must specify an argument for -Xcompile" 770266e564dSmrg exit $EXIT_FAILURE 771266e564dSmrg ;; 772266e564dSmrg target) 773266e564dSmrg $echo "$modename: you must specify a target with \`-o'" 1>&2 774266e564dSmrg exit $EXIT_FAILURE 775266e564dSmrg ;; 776266e564dSmrg *) 777266e564dSmrg # Get the name of the library object. 778266e564dSmrg [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 779266e564dSmrg ;; 780266e564dSmrg esac 781266e564dSmrg 782266e564dSmrg # Recognize several different file suffixes. 783266e564dSmrg # If the user specifies -o file.o, it is replaced with file.lo 784266e564dSmrg xform='[cCFSifmso]' 785266e564dSmrg case $libobj in 786266e564dSmrg *.ada) xform=ada ;; 787266e564dSmrg *.adb) xform=adb ;; 788266e564dSmrg *.ads) xform=ads ;; 789266e564dSmrg *.asm) xform=asm ;; 790266e564dSmrg *.c++) xform=c++ ;; 791266e564dSmrg *.cc) xform=cc ;; 792266e564dSmrg *.ii) xform=ii ;; 793266e564dSmrg *.class) xform=class ;; 794266e564dSmrg *.cpp) xform=cpp ;; 795266e564dSmrg *.cxx) xform=cxx ;; 796c5629e66Smrg *.[fF][09]?) xform=[fF][09]. ;; 797266e564dSmrg *.for) xform=for ;; 798266e564dSmrg *.java) xform=java ;; 799c5629e66Smrg *.obj) xform=obj ;; 800c5629e66Smrg *.sx) xform=sx ;; 801266e564dSmrg esac 802266e564dSmrg 803266e564dSmrg libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 804266e564dSmrg 805266e564dSmrg case $libobj in 806266e564dSmrg *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 807266e564dSmrg *) 808266e564dSmrg $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 809266e564dSmrg exit $EXIT_FAILURE 810266e564dSmrg ;; 811266e564dSmrg esac 812266e564dSmrg 813266e564dSmrg func_infer_tag $base_compile 814266e564dSmrg 815266e564dSmrg for arg in $later; do 816266e564dSmrg case $arg in 817266e564dSmrg -static) 818266e564dSmrg build_old_libs=yes 819266e564dSmrg continue 820266e564dSmrg ;; 821266e564dSmrg 822266e564dSmrg -prefer-pic) 823266e564dSmrg pic_mode=yes 824266e564dSmrg continue 825266e564dSmrg ;; 826266e564dSmrg 827266e564dSmrg -prefer-non-pic) 828266e564dSmrg pic_mode=no 829266e564dSmrg continue 830266e564dSmrg ;; 831266e564dSmrg esac 832266e564dSmrg done 833266e564dSmrg 834266e564dSmrg qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` 835266e564dSmrg case $qlibobj in 836266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 837266e564dSmrg qlibobj="\"$qlibobj\"" ;; 838266e564dSmrg esac 839266e564dSmrg test "X$libobj" != "X$qlibobj" \ 840266e564dSmrg && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ 841266e564dSmrg && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." 842266e564dSmrg objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 843266e564dSmrg xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` 844266e564dSmrg if test "X$xdir" = "X$obj"; then 845266e564dSmrg xdir= 846266e564dSmrg else 847266e564dSmrg xdir=$xdir/ 848266e564dSmrg fi 849266e564dSmrg lobj=${xdir}$objdir/$objname 850266e564dSmrg 851266e564dSmrg if test -z "$base_compile"; then 852266e564dSmrg $echo "$modename: you must specify a compilation command" 1>&2 853266e564dSmrg $echo "$help" 1>&2 854266e564dSmrg exit $EXIT_FAILURE 855266e564dSmrg fi 856266e564dSmrg 857266e564dSmrg # Delete any leftover library objects. 858266e564dSmrg if test "$build_old_libs" = yes; then 859266e564dSmrg removelist="$obj $lobj $libobj ${libobj}T" 860266e564dSmrg else 861266e564dSmrg removelist="$lobj $libobj ${libobj}T" 862266e564dSmrg fi 863266e564dSmrg 864266e564dSmrg $run $rm $removelist 865266e564dSmrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 866266e564dSmrg 867266e564dSmrg # On Cygwin there's no "real" PIC flag so we must build both object types 868266e564dSmrg case $host_os in 869266e564dSmrg cygwin* | mingw* | pw32* | os2*) 870266e564dSmrg pic_mode=default 871266e564dSmrg ;; 872266e564dSmrg esac 873266e564dSmrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 874266e564dSmrg # non-PIC code in shared libraries is not supported 875266e564dSmrg pic_mode=default 876266e564dSmrg fi 877266e564dSmrg 878266e564dSmrg # Calculate the filename of the output object if compiler does 879266e564dSmrg # not support -o with -c 880266e564dSmrg if test "$compiler_c_o" = no; then 881266e564dSmrg output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} 882266e564dSmrg lockfile="$output_obj.lock" 883266e564dSmrg removelist="$removelist $output_obj $lockfile" 884266e564dSmrg trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 885266e564dSmrg else 886266e564dSmrg output_obj= 887266e564dSmrg need_locks=no 888266e564dSmrg lockfile= 889266e564dSmrg fi 890266e564dSmrg 891266e564dSmrg # Lock this critical section if it is needed 892266e564dSmrg # We use this script file to make the link, it avoids creating a new file 893266e564dSmrg if test "$need_locks" = yes; then 894266e564dSmrg until $run ln "$progpath" "$lockfile" 2>/dev/null; do 895266e564dSmrg $show "Waiting for $lockfile to be removed" 896266e564dSmrg sleep 2 897266e564dSmrg done 898266e564dSmrg elif test "$need_locks" = warn; then 899266e564dSmrg if test -f "$lockfile"; then 900266e564dSmrg $echo "\ 901266e564dSmrg*** ERROR, $lockfile exists and contains: 902266e564dSmrg`cat $lockfile 2>/dev/null` 903266e564dSmrg 904266e564dSmrgThis indicates that another process is trying to use the same 905266e564dSmrgtemporary object file, and libtool could not work around it because 906266e564dSmrgyour compiler does not support \`-c' and \`-o' together. If you 907266e564dSmrgrepeat this compilation, it may succeed, by chance, but you had better 908266e564dSmrgavoid parallel builds (make -j) in this platform, or get a better 909266e564dSmrgcompiler." 910266e564dSmrg 911266e564dSmrg $run $rm $removelist 912266e564dSmrg exit $EXIT_FAILURE 913266e564dSmrg fi 914266e564dSmrg $echo "$srcfile" > "$lockfile" 915266e564dSmrg fi 916266e564dSmrg 917266e564dSmrg if test -n "$fix_srcfile_path"; then 918266e564dSmrg eval srcfile=\"$fix_srcfile_path\" 919266e564dSmrg fi 920266e564dSmrg qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` 921266e564dSmrg case $qsrcfile in 922266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 923266e564dSmrg qsrcfile="\"$qsrcfile\"" ;; 924266e564dSmrg esac 925266e564dSmrg 926266e564dSmrg $run $rm "$libobj" "${libobj}T" 927266e564dSmrg 928266e564dSmrg # Create a libtool object file (analogous to a ".la" file), 929266e564dSmrg # but don't create it if we're doing a dry run. 930266e564dSmrg test -z "$run" && cat > ${libobj}T <<EOF 931266e564dSmrg# $libobj - a libtool object file 932266e564dSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 933266e564dSmrg# 934266e564dSmrg# Please DO NOT delete this file! 935266e564dSmrg# It is necessary for linking the library. 936266e564dSmrg 937266e564dSmrg# Name of the PIC object. 938266e564dSmrgEOF 939266e564dSmrg 940266e564dSmrg # Only build a PIC object if we are building libtool libraries. 941266e564dSmrg if test "$build_libtool_libs" = yes; then 942266e564dSmrg # Without this assignment, base_compile gets emptied. 943266e564dSmrg fbsd_hideous_sh_bug=$base_compile 944266e564dSmrg 945266e564dSmrg if test "$pic_mode" != no; then 946266e564dSmrg command="$base_compile $qsrcfile $pic_flag" 947266e564dSmrg else 948266e564dSmrg # Don't build PIC code 949266e564dSmrg command="$base_compile $qsrcfile" 950266e564dSmrg fi 951266e564dSmrg 952266e564dSmrg if test ! -d "${xdir}$objdir"; then 953266e564dSmrg $show "$mkdir ${xdir}$objdir" 954266e564dSmrg $run $mkdir ${xdir}$objdir 955266e564dSmrg exit_status=$? 956266e564dSmrg if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then 957266e564dSmrg exit $exit_status 958266e564dSmrg fi 959266e564dSmrg fi 960266e564dSmrg 961266e564dSmrg if test -z "$output_obj"; then 962266e564dSmrg # Place PIC objects in $objdir 963266e564dSmrg command="$command -o $lobj" 964266e564dSmrg fi 965266e564dSmrg 966266e564dSmrg $run $rm "$lobj" "$output_obj" 967266e564dSmrg 968266e564dSmrg $show "$command" 969c5629e66Smrg if $run eval $lt_env "$command"; then : 970266e564dSmrg else 971266e564dSmrg test -n "$output_obj" && $run $rm $removelist 972266e564dSmrg exit $EXIT_FAILURE 973266e564dSmrg fi 974266e564dSmrg 975266e564dSmrg if test "$need_locks" = warn && 976266e564dSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 977266e564dSmrg $echo "\ 978266e564dSmrg*** ERROR, $lockfile contains: 979266e564dSmrg`cat $lockfile 2>/dev/null` 980266e564dSmrg 981266e564dSmrgbut it should contain: 982266e564dSmrg$srcfile 983266e564dSmrg 984266e564dSmrgThis indicates that another process is trying to use the same 985266e564dSmrgtemporary object file, and libtool could not work around it because 986266e564dSmrgyour compiler does not support \`-c' and \`-o' together. If you 987266e564dSmrgrepeat this compilation, it may succeed, by chance, but you had better 988266e564dSmrgavoid parallel builds (make -j) in this platform, or get a better 989266e564dSmrgcompiler." 990266e564dSmrg 991266e564dSmrg $run $rm $removelist 992266e564dSmrg exit $EXIT_FAILURE 993266e564dSmrg fi 994266e564dSmrg 995266e564dSmrg # Just move the object if needed, then go on to compile the next one 996266e564dSmrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 997266e564dSmrg $show "$mv $output_obj $lobj" 998266e564dSmrg if $run $mv $output_obj $lobj; then : 999266e564dSmrg else 1000266e564dSmrg error=$? 1001266e564dSmrg $run $rm $removelist 1002266e564dSmrg exit $error 1003266e564dSmrg fi 1004266e564dSmrg fi 1005266e564dSmrg 1006266e564dSmrg # Append the name of the PIC object to the libtool object file. 1007266e564dSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1008266e564dSmrgpic_object='$objdir/$objname' 1009266e564dSmrg 1010266e564dSmrgEOF 1011266e564dSmrg 1012266e564dSmrg # Allow error messages only from the first compilation. 1013266e564dSmrg if test "$suppress_opt" = yes; then 1014266e564dSmrg suppress_output=' >/dev/null 2>&1' 1015266e564dSmrg fi 1016266e564dSmrg else 1017266e564dSmrg # No PIC object so indicate it doesn't exist in the libtool 1018266e564dSmrg # object file. 1019266e564dSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1020266e564dSmrgpic_object=none 1021266e564dSmrg 1022266e564dSmrgEOF 1023266e564dSmrg fi 1024266e564dSmrg 1025266e564dSmrg # Only build a position-dependent object if we build old libraries. 1026266e564dSmrg if test "$build_old_libs" = yes; then 1027266e564dSmrg if test "$pic_mode" != yes; then 1028266e564dSmrg # Don't build PIC code 1029266e564dSmrg command="$base_compile $qsrcfile" 1030266e564dSmrg else 1031266e564dSmrg command="$base_compile $qsrcfile $pic_flag" 1032266e564dSmrg fi 1033266e564dSmrg if test "$compiler_c_o" = yes; then 1034266e564dSmrg command="$command -o $obj" 1035266e564dSmrg fi 1036266e564dSmrg 1037266e564dSmrg # Suppress compiler output if we already did a PIC compilation. 1038266e564dSmrg command="$command$suppress_output" 1039266e564dSmrg $run $rm "$obj" "$output_obj" 1040266e564dSmrg $show "$command" 1041c5629e66Smrg if $run eval $lt_env "$command"; then : 1042266e564dSmrg else 1043266e564dSmrg $run $rm $removelist 1044266e564dSmrg exit $EXIT_FAILURE 1045266e564dSmrg fi 1046266e564dSmrg 1047266e564dSmrg if test "$need_locks" = warn && 1048266e564dSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1049266e564dSmrg $echo "\ 1050266e564dSmrg*** ERROR, $lockfile contains: 1051266e564dSmrg`cat $lockfile 2>/dev/null` 1052266e564dSmrg 1053266e564dSmrgbut it should contain: 1054266e564dSmrg$srcfile 1055266e564dSmrg 1056266e564dSmrgThis indicates that another process is trying to use the same 1057266e564dSmrgtemporary object file, and libtool could not work around it because 1058266e564dSmrgyour compiler does not support \`-c' and \`-o' together. If you 1059266e564dSmrgrepeat this compilation, it may succeed, by chance, but you had better 1060266e564dSmrgavoid parallel builds (make -j) in this platform, or get a better 1061266e564dSmrgcompiler." 1062266e564dSmrg 1063266e564dSmrg $run $rm $removelist 1064266e564dSmrg exit $EXIT_FAILURE 1065266e564dSmrg fi 1066266e564dSmrg 1067266e564dSmrg # Just move the object if needed 1068266e564dSmrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1069266e564dSmrg $show "$mv $output_obj $obj" 1070266e564dSmrg if $run $mv $output_obj $obj; then : 1071266e564dSmrg else 1072266e564dSmrg error=$? 1073266e564dSmrg $run $rm $removelist 1074266e564dSmrg exit $error 1075266e564dSmrg fi 1076266e564dSmrg fi 1077266e564dSmrg 1078266e564dSmrg # Append the name of the non-PIC object the libtool object file. 1079266e564dSmrg # Only append if the libtool object file exists. 1080266e564dSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1081266e564dSmrg# Name of the non-PIC object. 1082266e564dSmrgnon_pic_object='$objname' 1083266e564dSmrg 1084266e564dSmrgEOF 1085266e564dSmrg else 1086266e564dSmrg # Append the name of the non-PIC object the libtool object file. 1087266e564dSmrg # Only append if the libtool object file exists. 1088266e564dSmrg test -z "$run" && cat >> ${libobj}T <<EOF 1089266e564dSmrg# Name of the non-PIC object. 1090266e564dSmrgnon_pic_object=none 1091266e564dSmrg 1092266e564dSmrgEOF 1093266e564dSmrg fi 1094266e564dSmrg 1095266e564dSmrg $run $mv "${libobj}T" "${libobj}" 1096266e564dSmrg 1097266e564dSmrg # Unlock the critical section if it was locked 1098266e564dSmrg if test "$need_locks" != no; then 1099266e564dSmrg $run $rm "$lockfile" 1100266e564dSmrg fi 1101266e564dSmrg 1102266e564dSmrg exit $EXIT_SUCCESS 1103266e564dSmrg ;; 1104266e564dSmrg 1105266e564dSmrg # libtool link mode 1106266e564dSmrg link | relink) 1107266e564dSmrg modename="$modename: link" 1108266e564dSmrg case $host in 1109266e564dSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1110266e564dSmrg # It is impossible to link a dll without this setting, and 1111266e564dSmrg # we shouldn't force the makefile maintainer to figure out 1112266e564dSmrg # which system we are compiling for in order to pass an extra 1113266e564dSmrg # flag for every libtool invocation. 1114266e564dSmrg # allow_undefined=no 1115266e564dSmrg 1116266e564dSmrg # FIXME: Unfortunately, there are problems with the above when trying 1117266e564dSmrg # to make a dll which has undefined symbols, in which case not 1118266e564dSmrg # even a static library is built. For now, we need to specify 1119266e564dSmrg # -no-undefined on the libtool link line when we can be certain 1120266e564dSmrg # that all symbols are satisfied, otherwise we get a static library. 1121266e564dSmrg allow_undefined=yes 1122266e564dSmrg ;; 1123266e564dSmrg *) 1124266e564dSmrg allow_undefined=yes 1125266e564dSmrg ;; 1126266e564dSmrg esac 1127266e564dSmrg libtool_args="$nonopt" 1128266e564dSmrg base_compile="$nonopt $@" 1129266e564dSmrg compile_command="$nonopt" 1130266e564dSmrg finalize_command="$nonopt" 1131266e564dSmrg 1132266e564dSmrg compile_rpath= 1133266e564dSmrg finalize_rpath= 1134266e564dSmrg compile_shlibpath= 1135266e564dSmrg finalize_shlibpath= 1136266e564dSmrg convenience= 1137266e564dSmrg old_convenience= 1138266e564dSmrg deplibs= 1139266e564dSmrg old_deplibs= 1140266e564dSmrg compiler_flags= 1141266e564dSmrg linker_flags= 1142266e564dSmrg dllsearchpath= 1143266e564dSmrg lib_search_path=`pwd` 1144266e564dSmrg inst_prefix_dir= 1145266e564dSmrg 1146266e564dSmrg avoid_version=no 1147266e564dSmrg dlfiles= 1148266e564dSmrg dlprefiles= 1149266e564dSmrg dlself=no 1150266e564dSmrg export_dynamic=no 1151266e564dSmrg export_symbols= 1152266e564dSmrg export_symbols_regex= 1153266e564dSmrg generated= 1154266e564dSmrg libobjs= 1155266e564dSmrg ltlibs= 1156266e564dSmrg module=no 1157266e564dSmrg no_install=no 1158266e564dSmrg objs= 1159266e564dSmrg non_pic_objects= 1160266e564dSmrg notinst_path= # paths that contain not-installed libtool libraries 1161266e564dSmrg precious_files_regex= 1162266e564dSmrg prefer_static_libs=no 1163266e564dSmrg preload=no 1164266e564dSmrg prev= 1165266e564dSmrg prevarg= 1166266e564dSmrg release= 1167266e564dSmrg rpath= 1168266e564dSmrg xrpath= 1169266e564dSmrg perm_rpath= 1170266e564dSmrg temp_rpath= 1171266e564dSmrg thread_safe=no 1172266e564dSmrg vinfo= 1173266e564dSmrg vinfo_number=no 1174c5629e66Smrg single_module="${wl}-single_module" 1175266e564dSmrg 1176266e564dSmrg func_infer_tag $base_compile 1177266e564dSmrg 1178266e564dSmrg # We need to know -static, to get the right output filenames. 1179266e564dSmrg for arg 1180266e564dSmrg do 1181266e564dSmrg case $arg in 1182c5629e66Smrg -all-static | -static | -static-libtool-libs) 1183c5629e66Smrg case $arg in 1184c5629e66Smrg -all-static) 1185266e564dSmrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 1186266e564dSmrg $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 1187266e564dSmrg fi 1188266e564dSmrg if test -n "$link_static_flag"; then 1189266e564dSmrg dlopen_self=$dlopen_self_static 1190266e564dSmrg fi 1191266e564dSmrg prefer_static_libs=yes 1192c5629e66Smrg ;; 1193c5629e66Smrg -static) 1194266e564dSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1195266e564dSmrg dlopen_self=$dlopen_self_static 1196266e564dSmrg fi 1197266e564dSmrg prefer_static_libs=built 1198c5629e66Smrg ;; 1199c5629e66Smrg -static-libtool-libs) 1200c5629e66Smrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 1201c5629e66Smrg dlopen_self=$dlopen_self_static 1202c5629e66Smrg fi 1203c5629e66Smrg prefer_static_libs=yes 1204c5629e66Smrg ;; 1205c5629e66Smrg esac 1206266e564dSmrg build_libtool_libs=no 1207266e564dSmrg build_old_libs=yes 1208266e564dSmrg break 1209266e564dSmrg ;; 1210266e564dSmrg esac 1211266e564dSmrg done 1212266e564dSmrg 1213266e564dSmrg # See if our shared archives depend on static archives. 1214266e564dSmrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 1215266e564dSmrg 1216266e564dSmrg # Go through the arguments, transforming them on the way. 1217266e564dSmrg while test "$#" -gt 0; do 1218266e564dSmrg arg="$1" 1219266e564dSmrg shift 1220266e564dSmrg case $arg in 1221266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1222266e564dSmrg qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 1223266e564dSmrg ;; 1224266e564dSmrg *) qarg=$arg ;; 1225266e564dSmrg esac 1226266e564dSmrg libtool_args="$libtool_args $qarg" 1227266e564dSmrg 1228266e564dSmrg # If the previous option needs an argument, assign it. 1229266e564dSmrg if test -n "$prev"; then 1230266e564dSmrg case $prev in 1231266e564dSmrg output) 1232266e564dSmrg compile_command="$compile_command @OUTPUT@" 1233266e564dSmrg finalize_command="$finalize_command @OUTPUT@" 1234266e564dSmrg ;; 1235266e564dSmrg esac 1236266e564dSmrg 1237266e564dSmrg case $prev in 1238266e564dSmrg dlfiles|dlprefiles) 1239266e564dSmrg if test "$preload" = no; then 1240266e564dSmrg # Add the symbol object into the linking commands. 1241266e564dSmrg compile_command="$compile_command @SYMFILE@" 1242266e564dSmrg finalize_command="$finalize_command @SYMFILE@" 1243266e564dSmrg preload=yes 1244266e564dSmrg fi 1245266e564dSmrg case $arg in 1246266e564dSmrg *.la | *.lo) ;; # We handle these cases below. 1247266e564dSmrg force) 1248266e564dSmrg if test "$dlself" = no; then 1249266e564dSmrg dlself=needless 1250266e564dSmrg export_dynamic=yes 1251266e564dSmrg fi 1252266e564dSmrg prev= 1253266e564dSmrg continue 1254266e564dSmrg ;; 1255266e564dSmrg self) 1256266e564dSmrg if test "$prev" = dlprefiles; then 1257266e564dSmrg dlself=yes 1258266e564dSmrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 1259266e564dSmrg dlself=yes 1260266e564dSmrg else 1261266e564dSmrg dlself=needless 1262266e564dSmrg export_dynamic=yes 1263266e564dSmrg fi 1264266e564dSmrg prev= 1265266e564dSmrg continue 1266266e564dSmrg ;; 1267266e564dSmrg *) 1268266e564dSmrg if test "$prev" = dlfiles; then 1269266e564dSmrg dlfiles="$dlfiles $arg" 1270266e564dSmrg else 1271266e564dSmrg dlprefiles="$dlprefiles $arg" 1272266e564dSmrg fi 1273266e564dSmrg prev= 1274266e564dSmrg continue 1275266e564dSmrg ;; 1276266e564dSmrg esac 1277266e564dSmrg ;; 1278266e564dSmrg expsyms) 1279266e564dSmrg export_symbols="$arg" 1280266e564dSmrg if test ! -f "$arg"; then 1281266e564dSmrg $echo "$modename: symbol file \`$arg' does not exist" 1282266e564dSmrg exit $EXIT_FAILURE 1283266e564dSmrg fi 1284266e564dSmrg prev= 1285266e564dSmrg continue 1286266e564dSmrg ;; 1287266e564dSmrg expsyms_regex) 1288266e564dSmrg export_symbols_regex="$arg" 1289266e564dSmrg prev= 1290266e564dSmrg continue 1291266e564dSmrg ;; 1292266e564dSmrg inst_prefix) 1293266e564dSmrg inst_prefix_dir="$arg" 1294266e564dSmrg prev= 1295266e564dSmrg continue 1296266e564dSmrg ;; 1297266e564dSmrg precious_regex) 1298266e564dSmrg precious_files_regex="$arg" 1299266e564dSmrg prev= 1300266e564dSmrg continue 1301266e564dSmrg ;; 1302266e564dSmrg release) 1303266e564dSmrg release="-$arg" 1304266e564dSmrg prev= 1305266e564dSmrg continue 1306266e564dSmrg ;; 1307266e564dSmrg objectlist) 1308266e564dSmrg if test -f "$arg"; then 1309266e564dSmrg save_arg=$arg 1310266e564dSmrg moreargs= 1311266e564dSmrg for fil in `cat $save_arg` 1312266e564dSmrg do 1313266e564dSmrg# moreargs="$moreargs $fil" 1314266e564dSmrg arg=$fil 1315266e564dSmrg # A libtool-controlled object. 1316266e564dSmrg 1317266e564dSmrg # Check to see that this really is a libtool object. 1318266e564dSmrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1319266e564dSmrg pic_object= 1320266e564dSmrg non_pic_object= 1321266e564dSmrg 1322266e564dSmrg # Read the .lo file 1323266e564dSmrg # If there is no directory component, then add one. 1324266e564dSmrg case $arg in 1325266e564dSmrg */* | *\\*) . $arg ;; 1326266e564dSmrg *) . ./$arg ;; 1327266e564dSmrg esac 1328266e564dSmrg 1329266e564dSmrg if test -z "$pic_object" || \ 1330266e564dSmrg test -z "$non_pic_object" || 1331266e564dSmrg test "$pic_object" = none && \ 1332266e564dSmrg test "$non_pic_object" = none; then 1333266e564dSmrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1334266e564dSmrg exit $EXIT_FAILURE 1335266e564dSmrg fi 1336266e564dSmrg 1337266e564dSmrg # Extract subdirectory from the argument. 1338266e564dSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1339266e564dSmrg if test "X$xdir" = "X$arg"; then 1340266e564dSmrg xdir= 1341266e564dSmrg else 1342266e564dSmrg xdir="$xdir/" 1343266e564dSmrg fi 1344266e564dSmrg 1345266e564dSmrg if test "$pic_object" != none; then 1346266e564dSmrg # Prepend the subdirectory the object is found in. 1347266e564dSmrg pic_object="$xdir$pic_object" 1348266e564dSmrg 1349266e564dSmrg if test "$prev" = dlfiles; then 1350266e564dSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1351266e564dSmrg dlfiles="$dlfiles $pic_object" 1352266e564dSmrg prev= 1353266e564dSmrg continue 1354266e564dSmrg else 1355266e564dSmrg # If libtool objects are unsupported, then we need to preload. 1356266e564dSmrg prev=dlprefiles 1357266e564dSmrg fi 1358266e564dSmrg fi 1359266e564dSmrg 1360266e564dSmrg # CHECK ME: I think I busted this. -Ossama 1361266e564dSmrg if test "$prev" = dlprefiles; then 1362266e564dSmrg # Preload the old-style object. 1363266e564dSmrg dlprefiles="$dlprefiles $pic_object" 1364266e564dSmrg prev= 1365266e564dSmrg fi 1366266e564dSmrg 1367266e564dSmrg # A PIC object. 1368266e564dSmrg libobjs="$libobjs $pic_object" 1369266e564dSmrg arg="$pic_object" 1370266e564dSmrg fi 1371266e564dSmrg 1372266e564dSmrg # Non-PIC object. 1373266e564dSmrg if test "$non_pic_object" != none; then 1374266e564dSmrg # Prepend the subdirectory the object is found in. 1375266e564dSmrg non_pic_object="$xdir$non_pic_object" 1376266e564dSmrg 1377266e564dSmrg # A standard non-PIC object 1378266e564dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1379266e564dSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 1380266e564dSmrg arg="$non_pic_object" 1381266e564dSmrg fi 1382266e564dSmrg else 1383266e564dSmrg # If the PIC object exists, use it instead. 1384266e564dSmrg # $xdir was prepended to $pic_object above. 1385266e564dSmrg non_pic_object="$pic_object" 1386266e564dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1387266e564dSmrg fi 1388266e564dSmrg else 1389266e564dSmrg # Only an error if not doing a dry-run. 1390266e564dSmrg if test -z "$run"; then 1391266e564dSmrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1392266e564dSmrg exit $EXIT_FAILURE 1393266e564dSmrg else 1394266e564dSmrg # Dry-run case. 1395266e564dSmrg 1396266e564dSmrg # Extract subdirectory from the argument. 1397266e564dSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1398266e564dSmrg if test "X$xdir" = "X$arg"; then 1399266e564dSmrg xdir= 1400266e564dSmrg else 1401266e564dSmrg xdir="$xdir/" 1402266e564dSmrg fi 1403266e564dSmrg 1404266e564dSmrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1405266e564dSmrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1406266e564dSmrg libobjs="$libobjs $pic_object" 1407266e564dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1408266e564dSmrg fi 1409266e564dSmrg fi 1410266e564dSmrg done 1411266e564dSmrg else 1412266e564dSmrg $echo "$modename: link input file \`$save_arg' does not exist" 1413266e564dSmrg exit $EXIT_FAILURE 1414266e564dSmrg fi 1415266e564dSmrg arg=$save_arg 1416266e564dSmrg prev= 1417266e564dSmrg continue 1418266e564dSmrg ;; 1419266e564dSmrg rpath | xrpath) 1420266e564dSmrg # We need an absolute path. 1421266e564dSmrg case $arg in 1422266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1423266e564dSmrg *) 1424266e564dSmrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1425266e564dSmrg exit $EXIT_FAILURE 1426266e564dSmrg ;; 1427266e564dSmrg esac 1428266e564dSmrg if test "$prev" = rpath; then 1429266e564dSmrg case "$rpath " in 1430266e564dSmrg *" $arg "*) ;; 1431266e564dSmrg *) rpath="$rpath $arg" ;; 1432266e564dSmrg esac 1433266e564dSmrg else 1434266e564dSmrg case "$xrpath " in 1435266e564dSmrg *" $arg "*) ;; 1436266e564dSmrg *) xrpath="$xrpath $arg" ;; 1437266e564dSmrg esac 1438266e564dSmrg fi 1439266e564dSmrg prev= 1440266e564dSmrg continue 1441266e564dSmrg ;; 1442266e564dSmrg xcompiler) 1443266e564dSmrg compiler_flags="$compiler_flags $qarg" 1444266e564dSmrg prev= 1445266e564dSmrg compile_command="$compile_command $qarg" 1446266e564dSmrg finalize_command="$finalize_command $qarg" 1447266e564dSmrg continue 1448266e564dSmrg ;; 1449266e564dSmrg xlinker) 1450266e564dSmrg linker_flags="$linker_flags $qarg" 1451266e564dSmrg compiler_flags="$compiler_flags $wl$qarg" 1452266e564dSmrg prev= 1453266e564dSmrg compile_command="$compile_command $wl$qarg" 1454266e564dSmrg finalize_command="$finalize_command $wl$qarg" 1455266e564dSmrg continue 1456266e564dSmrg ;; 1457266e564dSmrg xcclinker) 1458266e564dSmrg linker_flags="$linker_flags $qarg" 1459266e564dSmrg compiler_flags="$compiler_flags $qarg" 1460266e564dSmrg prev= 1461266e564dSmrg compile_command="$compile_command $qarg" 1462266e564dSmrg finalize_command="$finalize_command $qarg" 1463266e564dSmrg continue 1464266e564dSmrg ;; 1465266e564dSmrg shrext) 1466266e564dSmrg shrext_cmds="$arg" 1467266e564dSmrg prev= 1468266e564dSmrg continue 1469266e564dSmrg ;; 1470266e564dSmrg darwin_framework|darwin_framework_skip) 1471266e564dSmrg test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" 1472266e564dSmrg compile_command="$compile_command $arg" 1473266e564dSmrg finalize_command="$finalize_command $arg" 1474266e564dSmrg prev= 1475266e564dSmrg continue 1476266e564dSmrg ;; 1477266e564dSmrg *) 1478266e564dSmrg eval "$prev=\"\$arg\"" 1479266e564dSmrg prev= 1480266e564dSmrg continue 1481266e564dSmrg ;; 1482266e564dSmrg esac 1483266e564dSmrg fi # test -n "$prev" 1484266e564dSmrg 1485266e564dSmrg prevarg="$arg" 1486266e564dSmrg 1487266e564dSmrg case $arg in 1488266e564dSmrg -all-static) 1489266e564dSmrg if test -n "$link_static_flag"; then 1490266e564dSmrg compile_command="$compile_command $link_static_flag" 1491266e564dSmrg finalize_command="$finalize_command $link_static_flag" 1492266e564dSmrg fi 1493266e564dSmrg continue 1494266e564dSmrg ;; 1495266e564dSmrg 1496266e564dSmrg -allow-undefined) 1497266e564dSmrg # FIXME: remove this flag sometime in the future. 1498266e564dSmrg $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 1499266e564dSmrg continue 1500266e564dSmrg ;; 1501266e564dSmrg 1502266e564dSmrg -avoid-version) 1503266e564dSmrg avoid_version=yes 1504266e564dSmrg continue 1505266e564dSmrg ;; 1506266e564dSmrg 1507266e564dSmrg -dlopen) 1508266e564dSmrg prev=dlfiles 1509266e564dSmrg continue 1510266e564dSmrg ;; 1511266e564dSmrg 1512266e564dSmrg -dlpreopen) 1513266e564dSmrg prev=dlprefiles 1514266e564dSmrg continue 1515266e564dSmrg ;; 1516266e564dSmrg 1517266e564dSmrg -export-dynamic) 1518266e564dSmrg export_dynamic=yes 1519266e564dSmrg continue 1520266e564dSmrg ;; 1521266e564dSmrg 1522266e564dSmrg -export-symbols | -export-symbols-regex) 1523266e564dSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 1524266e564dSmrg $echo "$modename: more than one -exported-symbols argument is not allowed" 1525266e564dSmrg exit $EXIT_FAILURE 1526266e564dSmrg fi 1527266e564dSmrg if test "X$arg" = "X-export-symbols"; then 1528266e564dSmrg prev=expsyms 1529266e564dSmrg else 1530266e564dSmrg prev=expsyms_regex 1531266e564dSmrg fi 1532266e564dSmrg continue 1533266e564dSmrg ;; 1534266e564dSmrg 1535266e564dSmrg -framework|-arch|-isysroot) 1536266e564dSmrg case " $CC " in 1537266e564dSmrg *" ${arg} ${1} "* | *" ${arg} ${1} "*) 1538266e564dSmrg prev=darwin_framework_skip ;; 1539266e564dSmrg *) compiler_flags="$compiler_flags $arg" 1540266e564dSmrg prev=darwin_framework ;; 1541266e564dSmrg esac 1542266e564dSmrg compile_command="$compile_command $arg" 1543266e564dSmrg finalize_command="$finalize_command $arg" 1544266e564dSmrg continue 1545266e564dSmrg ;; 1546266e564dSmrg 1547266e564dSmrg -inst-prefix-dir) 1548266e564dSmrg prev=inst_prefix 1549266e564dSmrg continue 1550266e564dSmrg ;; 1551266e564dSmrg 1552266e564dSmrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 1553266e564dSmrg # so, if we see these flags be careful not to treat them like -L 1554266e564dSmrg -L[A-Z][A-Z]*:*) 1555266e564dSmrg case $with_gcc/$host in 1556266e564dSmrg no/*-*-irix* | /*-*-irix*) 1557266e564dSmrg compile_command="$compile_command $arg" 1558266e564dSmrg finalize_command="$finalize_command $arg" 1559266e564dSmrg ;; 1560266e564dSmrg esac 1561266e564dSmrg continue 1562266e564dSmrg ;; 1563266e564dSmrg 1564266e564dSmrg -L*) 1565266e564dSmrg dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` 1566266e564dSmrg # We need an absolute path. 1567266e564dSmrg case $dir in 1568266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1569266e564dSmrg *) 1570266e564dSmrg absdir=`cd "$dir" && pwd` 1571266e564dSmrg if test -z "$absdir"; then 1572266e564dSmrg $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 1573266e564dSmrg absdir="$dir" 1574266e564dSmrg notinst_path="$notinst_path $dir" 1575266e564dSmrg fi 1576266e564dSmrg dir="$absdir" 1577266e564dSmrg ;; 1578266e564dSmrg esac 1579266e564dSmrg case "$deplibs " in 1580266e564dSmrg *" -L$dir "*) ;; 1581266e564dSmrg *) 1582266e564dSmrg deplibs="$deplibs -L$dir" 1583266e564dSmrg lib_search_path="$lib_search_path $dir" 1584266e564dSmrg ;; 1585266e564dSmrg esac 1586266e564dSmrg case $host in 1587266e564dSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 1588266e564dSmrg testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` 1589266e564dSmrg case :$dllsearchpath: in 1590266e564dSmrg *":$dir:"*) ;; 1591266e564dSmrg *) dllsearchpath="$dllsearchpath:$dir";; 1592266e564dSmrg esac 1593266e564dSmrg case :$dllsearchpath: in 1594266e564dSmrg *":$testbindir:"*) ;; 1595266e564dSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 1596266e564dSmrg esac 1597266e564dSmrg ;; 1598266e564dSmrg esac 1599266e564dSmrg continue 1600266e564dSmrg ;; 1601266e564dSmrg 1602266e564dSmrg -l*) 1603266e564dSmrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 1604266e564dSmrg case $host in 1605266e564dSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) 1606266e564dSmrg # These systems don't actually have a C or math library (as such) 1607266e564dSmrg continue 1608266e564dSmrg ;; 1609266e564dSmrg *-*-os2*) 1610266e564dSmrg # These systems don't actually have a C library (as such) 1611266e564dSmrg test "X$arg" = "X-lc" && continue 1612266e564dSmrg ;; 1613266e564dSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1614266e564dSmrg # Do not include libc due to us having libc/libc_r. 1615266e564dSmrg test "X$arg" = "X-lc" && continue 1616266e564dSmrg ;; 1617266e564dSmrg *-*-rhapsody* | *-*-darwin1.[012]) 1618266e564dSmrg # Rhapsody C and math libraries are in the System framework 1619266e564dSmrg deplibs="$deplibs -framework System" 1620266e564dSmrg continue 1621266e564dSmrg ;; 1622266e564dSmrg *-*-sco3.2v5* | *-*-sco5v6*) 1623266e564dSmrg # Causes problems with __ctype 1624266e564dSmrg test "X$arg" = "X-lc" && continue 1625266e564dSmrg ;; 1626266e564dSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 1627266e564dSmrg # Compiler inserts libc in the correct place for threads to work 1628266e564dSmrg test "X$arg" = "X-lc" && continue 1629266e564dSmrg ;; 1630266e564dSmrg esac 1631266e564dSmrg elif test "X$arg" = "X-lc_r"; then 1632266e564dSmrg case $host in 1633266e564dSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 1634266e564dSmrg # Do not include libc_r directly, use -pthread flag. 1635266e564dSmrg continue 1636266e564dSmrg ;; 1637266e564dSmrg esac 1638266e564dSmrg fi 1639266e564dSmrg deplibs="$deplibs $arg" 1640266e564dSmrg continue 1641266e564dSmrg ;; 1642266e564dSmrg 1643266e564dSmrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 1644266e564dSmrg # classes, name mangling, and exception handling. 1645266e564dSmrg -model) 1646266e564dSmrg compile_command="$compile_command $arg" 1647266e564dSmrg compiler_flags="$compiler_flags $arg" 1648266e564dSmrg finalize_command="$finalize_command $arg" 1649266e564dSmrg prev=xcompiler 1650266e564dSmrg continue 1651266e564dSmrg ;; 1652266e564dSmrg 1653c5629e66Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 1654266e564dSmrg compiler_flags="$compiler_flags $arg" 1655266e564dSmrg compile_command="$compile_command $arg" 1656266e564dSmrg finalize_command="$finalize_command $arg" 1657266e564dSmrg continue 1658266e564dSmrg ;; 1659266e564dSmrg 1660c5629e66Smrg -multi_module) 1661c5629e66Smrg single_module="${wl}-multi_module" 1662c5629e66Smrg continue 1663c5629e66Smrg ;; 1664c5629e66Smrg 1665266e564dSmrg -module) 1666266e564dSmrg module=yes 1667266e564dSmrg continue 1668266e564dSmrg ;; 1669266e564dSmrg 1670266e564dSmrg # -64, -mips[0-9] enable 64-bit mode on the SGI compiler 1671266e564dSmrg # -r[0-9][0-9]* specifies the processor on the SGI compiler 1672266e564dSmrg # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler 1673266e564dSmrg # +DA*, +DD* enable 64-bit mode on the HP compiler 1674266e564dSmrg # -q* pass through compiler args for the IBM compiler 1675266e564dSmrg # -m* pass through architecture-specific compiler args for GCC 1676266e564dSmrg # -m*, -t[45]*, -txscale* pass through architecture-specific 1677266e564dSmrg # compiler args for GCC 1678c5629e66Smrg # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC 1679c5629e66Smrg # -F/path gives path to uninstalled frameworks, gcc on darwin 1680266e564dSmrg # @file GCC response files 1681c5629e66Smrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 1682c5629e66Smrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) 1683266e564dSmrg 1684266e564dSmrg # Unknown arguments in both finalize_command and compile_command need 1685266e564dSmrg # to be aesthetically quoted because they are evaled later. 1686266e564dSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1687266e564dSmrg case $arg in 1688266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1689266e564dSmrg arg="\"$arg\"" 1690266e564dSmrg ;; 1691266e564dSmrg esac 1692266e564dSmrg compile_command="$compile_command $arg" 1693266e564dSmrg finalize_command="$finalize_command $arg" 1694266e564dSmrg compiler_flags="$compiler_flags $arg" 1695266e564dSmrg continue 1696266e564dSmrg ;; 1697266e564dSmrg 1698266e564dSmrg -shrext) 1699266e564dSmrg prev=shrext 1700266e564dSmrg continue 1701266e564dSmrg ;; 1702266e564dSmrg 1703266e564dSmrg -no-fast-install) 1704266e564dSmrg fast_install=no 1705266e564dSmrg continue 1706266e564dSmrg ;; 1707266e564dSmrg 1708266e564dSmrg -no-install) 1709266e564dSmrg case $host in 1710c5629e66Smrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) 1711266e564dSmrg # The PATH hackery in wrapper scripts is required on Windows 1712c5629e66Smrg # and Darwin in order for the loader to find any dlls it needs. 1713266e564dSmrg $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 1714266e564dSmrg $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 1715266e564dSmrg fast_install=no 1716266e564dSmrg ;; 1717266e564dSmrg *) no_install=yes ;; 1718266e564dSmrg esac 1719266e564dSmrg continue 1720266e564dSmrg ;; 1721266e564dSmrg 1722266e564dSmrg -no-undefined) 1723266e564dSmrg allow_undefined=no 1724266e564dSmrg continue 1725266e564dSmrg ;; 1726266e564dSmrg 1727266e564dSmrg -objectlist) 1728266e564dSmrg prev=objectlist 1729266e564dSmrg continue 1730266e564dSmrg ;; 1731266e564dSmrg 1732266e564dSmrg -o) prev=output ;; 1733266e564dSmrg 1734266e564dSmrg -precious-files-regex) 1735266e564dSmrg prev=precious_regex 1736266e564dSmrg continue 1737266e564dSmrg ;; 1738266e564dSmrg 1739266e564dSmrg -release) 1740266e564dSmrg prev=release 1741266e564dSmrg continue 1742266e564dSmrg ;; 1743266e564dSmrg 1744266e564dSmrg -rpath) 1745266e564dSmrg prev=rpath 1746266e564dSmrg continue 1747266e564dSmrg ;; 1748266e564dSmrg 1749266e564dSmrg -R) 1750266e564dSmrg prev=xrpath 1751266e564dSmrg continue 1752266e564dSmrg ;; 1753266e564dSmrg 1754266e564dSmrg -R*) 1755266e564dSmrg dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` 1756266e564dSmrg # We need an absolute path. 1757266e564dSmrg case $dir in 1758266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 1759266e564dSmrg *) 1760266e564dSmrg $echo "$modename: only absolute run-paths are allowed" 1>&2 1761266e564dSmrg exit $EXIT_FAILURE 1762266e564dSmrg ;; 1763266e564dSmrg esac 1764266e564dSmrg case "$xrpath " in 1765266e564dSmrg *" $dir "*) ;; 1766266e564dSmrg *) xrpath="$xrpath $dir" ;; 1767266e564dSmrg esac 1768266e564dSmrg continue 1769266e564dSmrg ;; 1770266e564dSmrg 1771c5629e66Smrg -static | -static-libtool-libs) 1772266e564dSmrg # The effects of -static are defined in a previous loop. 1773266e564dSmrg # We used to do the same as -all-static on platforms that 1774266e564dSmrg # didn't have a PIC flag, but the assumption that the effects 1775266e564dSmrg # would be equivalent was wrong. It would break on at least 1776266e564dSmrg # Digital Unix and AIX. 1777266e564dSmrg continue 1778266e564dSmrg ;; 1779266e564dSmrg 1780266e564dSmrg -thread-safe) 1781266e564dSmrg thread_safe=yes 1782266e564dSmrg continue 1783266e564dSmrg ;; 1784266e564dSmrg 1785266e564dSmrg -version-info) 1786266e564dSmrg prev=vinfo 1787266e564dSmrg continue 1788266e564dSmrg ;; 1789266e564dSmrg -version-number) 1790266e564dSmrg prev=vinfo 1791266e564dSmrg vinfo_number=yes 1792266e564dSmrg continue 1793266e564dSmrg ;; 1794266e564dSmrg 1795266e564dSmrg -Wc,*) 1796266e564dSmrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` 1797266e564dSmrg arg= 1798266e564dSmrg save_ifs="$IFS"; IFS=',' 1799266e564dSmrg for flag in $args; do 1800266e564dSmrg IFS="$save_ifs" 1801266e564dSmrg case $flag in 1802266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1803266e564dSmrg flag="\"$flag\"" 1804266e564dSmrg ;; 1805266e564dSmrg esac 1806266e564dSmrg arg="$arg $wl$flag" 1807266e564dSmrg compiler_flags="$compiler_flags $flag" 1808266e564dSmrg done 1809266e564dSmrg IFS="$save_ifs" 1810266e564dSmrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1811266e564dSmrg ;; 1812266e564dSmrg 1813266e564dSmrg -Wl,*) 1814266e564dSmrg args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` 1815266e564dSmrg arg= 1816266e564dSmrg save_ifs="$IFS"; IFS=',' 1817266e564dSmrg for flag in $args; do 1818266e564dSmrg IFS="$save_ifs" 1819266e564dSmrg case $flag in 1820266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1821266e564dSmrg flag="\"$flag\"" 1822266e564dSmrg ;; 1823266e564dSmrg esac 1824266e564dSmrg arg="$arg $wl$flag" 1825266e564dSmrg compiler_flags="$compiler_flags $wl$flag" 1826266e564dSmrg linker_flags="$linker_flags $flag" 1827266e564dSmrg done 1828266e564dSmrg IFS="$save_ifs" 1829266e564dSmrg arg=`$echo "X$arg" | $Xsed -e "s/^ //"` 1830266e564dSmrg ;; 1831266e564dSmrg 1832266e564dSmrg -Xcompiler) 1833266e564dSmrg prev=xcompiler 1834266e564dSmrg continue 1835266e564dSmrg ;; 1836266e564dSmrg 1837266e564dSmrg -Xlinker) 1838266e564dSmrg prev=xlinker 1839266e564dSmrg continue 1840266e564dSmrg ;; 1841266e564dSmrg 1842266e564dSmrg -XCClinker) 1843266e564dSmrg prev=xcclinker 1844266e564dSmrg continue 1845266e564dSmrg ;; 1846266e564dSmrg 1847266e564dSmrg # Some other compiler flag. 1848266e564dSmrg -* | +*) 1849266e564dSmrg # Unknown arguments in both finalize_command and compile_command need 1850266e564dSmrg # to be aesthetically quoted because they are evaled later. 1851266e564dSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1852266e564dSmrg case $arg in 1853266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1854266e564dSmrg arg="\"$arg\"" 1855266e564dSmrg ;; 1856266e564dSmrg esac 1857266e564dSmrg ;; 1858266e564dSmrg 1859266e564dSmrg *.$objext) 1860266e564dSmrg # A standard object. 1861266e564dSmrg objs="$objs $arg" 1862266e564dSmrg ;; 1863266e564dSmrg 1864266e564dSmrg *.lo) 1865266e564dSmrg # A libtool-controlled object. 1866266e564dSmrg 1867266e564dSmrg # Check to see that this really is a libtool object. 1868266e564dSmrg if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 1869266e564dSmrg pic_object= 1870266e564dSmrg non_pic_object= 1871266e564dSmrg 1872266e564dSmrg # Read the .lo file 1873266e564dSmrg # If there is no directory component, then add one. 1874266e564dSmrg case $arg in 1875266e564dSmrg */* | *\\*) . $arg ;; 1876266e564dSmrg *) . ./$arg ;; 1877266e564dSmrg esac 1878266e564dSmrg 1879266e564dSmrg if test -z "$pic_object" || \ 1880266e564dSmrg test -z "$non_pic_object" || 1881266e564dSmrg test "$pic_object" = none && \ 1882266e564dSmrg test "$non_pic_object" = none; then 1883266e564dSmrg $echo "$modename: cannot find name of object for \`$arg'" 1>&2 1884266e564dSmrg exit $EXIT_FAILURE 1885266e564dSmrg fi 1886266e564dSmrg 1887266e564dSmrg # Extract subdirectory from the argument. 1888266e564dSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1889266e564dSmrg if test "X$xdir" = "X$arg"; then 1890266e564dSmrg xdir= 1891266e564dSmrg else 1892266e564dSmrg xdir="$xdir/" 1893266e564dSmrg fi 1894266e564dSmrg 1895266e564dSmrg if test "$pic_object" != none; then 1896266e564dSmrg # Prepend the subdirectory the object is found in. 1897266e564dSmrg pic_object="$xdir$pic_object" 1898266e564dSmrg 1899266e564dSmrg if test "$prev" = dlfiles; then 1900266e564dSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 1901266e564dSmrg dlfiles="$dlfiles $pic_object" 1902266e564dSmrg prev= 1903266e564dSmrg continue 1904266e564dSmrg else 1905266e564dSmrg # If libtool objects are unsupported, then we need to preload. 1906266e564dSmrg prev=dlprefiles 1907266e564dSmrg fi 1908266e564dSmrg fi 1909266e564dSmrg 1910266e564dSmrg # CHECK ME: I think I busted this. -Ossama 1911266e564dSmrg if test "$prev" = dlprefiles; then 1912266e564dSmrg # Preload the old-style object. 1913266e564dSmrg dlprefiles="$dlprefiles $pic_object" 1914266e564dSmrg prev= 1915266e564dSmrg fi 1916266e564dSmrg 1917266e564dSmrg # A PIC object. 1918266e564dSmrg libobjs="$libobjs $pic_object" 1919266e564dSmrg arg="$pic_object" 1920266e564dSmrg fi 1921266e564dSmrg 1922266e564dSmrg # Non-PIC object. 1923266e564dSmrg if test "$non_pic_object" != none; then 1924266e564dSmrg # Prepend the subdirectory the object is found in. 1925266e564dSmrg non_pic_object="$xdir$non_pic_object" 1926266e564dSmrg 1927266e564dSmrg # A standard non-PIC object 1928266e564dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1929266e564dSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 1930266e564dSmrg arg="$non_pic_object" 1931266e564dSmrg fi 1932266e564dSmrg else 1933266e564dSmrg # If the PIC object exists, use it instead. 1934266e564dSmrg # $xdir was prepended to $pic_object above. 1935266e564dSmrg non_pic_object="$pic_object" 1936266e564dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1937266e564dSmrg fi 1938266e564dSmrg else 1939266e564dSmrg # Only an error if not doing a dry-run. 1940266e564dSmrg if test -z "$run"; then 1941266e564dSmrg $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 1942266e564dSmrg exit $EXIT_FAILURE 1943266e564dSmrg else 1944266e564dSmrg # Dry-run case. 1945266e564dSmrg 1946266e564dSmrg # Extract subdirectory from the argument. 1947266e564dSmrg xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 1948266e564dSmrg if test "X$xdir" = "X$arg"; then 1949266e564dSmrg xdir= 1950266e564dSmrg else 1951266e564dSmrg xdir="$xdir/" 1952266e564dSmrg fi 1953266e564dSmrg 1954266e564dSmrg pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` 1955266e564dSmrg non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` 1956266e564dSmrg libobjs="$libobjs $pic_object" 1957266e564dSmrg non_pic_objects="$non_pic_objects $non_pic_object" 1958266e564dSmrg fi 1959266e564dSmrg fi 1960266e564dSmrg ;; 1961266e564dSmrg 1962266e564dSmrg *.$libext) 1963266e564dSmrg # An archive. 1964266e564dSmrg deplibs="$deplibs $arg" 1965266e564dSmrg old_deplibs="$old_deplibs $arg" 1966266e564dSmrg continue 1967266e564dSmrg ;; 1968266e564dSmrg 1969266e564dSmrg *.la) 1970266e564dSmrg # A libtool-controlled library. 1971266e564dSmrg 1972266e564dSmrg if test "$prev" = dlfiles; then 1973266e564dSmrg # This library was specified with -dlopen. 1974266e564dSmrg dlfiles="$dlfiles $arg" 1975266e564dSmrg prev= 1976266e564dSmrg elif test "$prev" = dlprefiles; then 1977266e564dSmrg # The library was specified with -dlpreopen. 1978266e564dSmrg dlprefiles="$dlprefiles $arg" 1979266e564dSmrg prev= 1980266e564dSmrg else 1981266e564dSmrg deplibs="$deplibs $arg" 1982266e564dSmrg fi 1983266e564dSmrg continue 1984266e564dSmrg ;; 1985266e564dSmrg 1986266e564dSmrg # Some other compiler argument. 1987266e564dSmrg *) 1988266e564dSmrg # Unknown arguments in both finalize_command and compile_command need 1989266e564dSmrg # to be aesthetically quoted because they are evaled later. 1990266e564dSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1991266e564dSmrg case $arg in 1992266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 1993266e564dSmrg arg="\"$arg\"" 1994266e564dSmrg ;; 1995266e564dSmrg esac 1996266e564dSmrg ;; 1997266e564dSmrg esac # arg 1998266e564dSmrg 1999266e564dSmrg # Now actually substitute the argument into the commands. 2000266e564dSmrg if test -n "$arg"; then 2001266e564dSmrg compile_command="$compile_command $arg" 2002266e564dSmrg finalize_command="$finalize_command $arg" 2003266e564dSmrg fi 2004266e564dSmrg done # argument parsing loop 2005266e564dSmrg 2006c5629e66Smrg if test "$module" = yes ; then 2007c5629e66Smrg # [Mandriva] dropping ld option "--no-undefined" which is wrong for plugins 2008c5629e66Smrg linker_flags=`$echo "X $linker_flags" | $Xsed -e 's/ --no-undefined//'` 2009c5629e66Smrg compiler_flags=`$echo "X $compiler_flags" | $Xsed -e 's/ -Wl,--no-undefined//'` 2010c5629e66Smrg fi 2011c5629e66Smrg 2012266e564dSmrg if test -n "$prev"; then 2013266e564dSmrg $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 2014266e564dSmrg $echo "$help" 1>&2 2015266e564dSmrg exit $EXIT_FAILURE 2016266e564dSmrg fi 2017266e564dSmrg 2018266e564dSmrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 2019266e564dSmrg eval arg=\"$export_dynamic_flag_spec\" 2020266e564dSmrg compile_command="$compile_command $arg" 2021266e564dSmrg finalize_command="$finalize_command $arg" 2022266e564dSmrg fi 2023266e564dSmrg 2024266e564dSmrg oldlibs= 2025266e564dSmrg # calculate the name of the file, without its directory 2026266e564dSmrg outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 2027266e564dSmrg libobjs_save="$libobjs" 2028266e564dSmrg 2029266e564dSmrg if test -n "$shlibpath_var"; then 2030266e564dSmrg # get the directories listed in $shlibpath_var 2031266e564dSmrg eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` 2032266e564dSmrg else 2033266e564dSmrg shlib_search_path= 2034266e564dSmrg fi 2035266e564dSmrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 2036266e564dSmrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 2037266e564dSmrg 2038266e564dSmrg output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 2039266e564dSmrg if test "X$output_objdir" = "X$output"; then 2040266e564dSmrg output_objdir="$objdir" 2041266e564dSmrg else 2042266e564dSmrg output_objdir="$output_objdir/$objdir" 2043266e564dSmrg fi 2044266e564dSmrg # Create the object directory. 2045266e564dSmrg if test ! -d "$output_objdir"; then 2046266e564dSmrg $show "$mkdir $output_objdir" 2047266e564dSmrg $run $mkdir $output_objdir 2048266e564dSmrg exit_status=$? 2049266e564dSmrg if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then 2050266e564dSmrg exit $exit_status 2051266e564dSmrg fi 2052266e564dSmrg fi 2053266e564dSmrg 2054266e564dSmrg # Determine the type of output 2055266e564dSmrg case $output in 2056266e564dSmrg "") 2057266e564dSmrg $echo "$modename: you must specify an output file" 1>&2 2058266e564dSmrg $echo "$help" 1>&2 2059266e564dSmrg exit $EXIT_FAILURE 2060266e564dSmrg ;; 2061266e564dSmrg *.$libext) linkmode=oldlib ;; 2062266e564dSmrg *.lo | *.$objext) linkmode=obj ;; 2063266e564dSmrg *.la) linkmode=lib ;; 2064266e564dSmrg *) linkmode=prog ;; # Anything else should be a program. 2065266e564dSmrg esac 2066266e564dSmrg 2067266e564dSmrg case $host in 2068266e564dSmrg *cygwin* | *mingw* | *pw32*) 2069266e564dSmrg # don't eliminate duplications in $postdeps and $predeps 2070266e564dSmrg duplicate_compiler_generated_deps=yes 2071266e564dSmrg ;; 2072266e564dSmrg *) 2073266e564dSmrg duplicate_compiler_generated_deps=$duplicate_deps 2074266e564dSmrg ;; 2075266e564dSmrg esac 2076266e564dSmrg specialdeplibs= 2077266e564dSmrg 2078266e564dSmrg libs= 2079266e564dSmrg # Find all interdependent deplibs by searching for libraries 2080266e564dSmrg # that are linked more than once (e.g. -la -lb -la) 2081266e564dSmrg for deplib in $deplibs; do 2082266e564dSmrg if test "X$duplicate_deps" = "Xyes" ; then 2083266e564dSmrg case "$libs " in 2084266e564dSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2085266e564dSmrg esac 2086266e564dSmrg fi 2087266e564dSmrg libs="$libs $deplib" 2088266e564dSmrg done 2089266e564dSmrg 2090266e564dSmrg if test "$linkmode" = lib; then 2091266e564dSmrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 2092266e564dSmrg 2093266e564dSmrg # Compute libraries that are listed more than once in $predeps 2094266e564dSmrg # $postdeps and mark them as special (i.e., whose duplicates are 2095266e564dSmrg # not to be eliminated). 2096266e564dSmrg pre_post_deps= 2097266e564dSmrg if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then 2098266e564dSmrg for pre_post_dep in $predeps $postdeps; do 2099266e564dSmrg case "$pre_post_deps " in 2100266e564dSmrg *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 2101266e564dSmrg esac 2102266e564dSmrg pre_post_deps="$pre_post_deps $pre_post_dep" 2103266e564dSmrg done 2104266e564dSmrg fi 2105266e564dSmrg pre_post_deps= 2106266e564dSmrg fi 2107266e564dSmrg 2108266e564dSmrg deplibs= 2109266e564dSmrg newdependency_libs= 2110266e564dSmrg newlib_search_path= 2111266e564dSmrg need_relink=no # whether we're linking any uninstalled libtool libraries 2112266e564dSmrg notinst_deplibs= # not-installed libtool libraries 2113266e564dSmrg case $linkmode in 2114266e564dSmrg lib) 2115266e564dSmrg passes="conv link" 2116266e564dSmrg for file in $dlfiles $dlprefiles; do 2117266e564dSmrg case $file in 2118266e564dSmrg *.la) ;; 2119266e564dSmrg *) 2120266e564dSmrg $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 2121266e564dSmrg exit $EXIT_FAILURE 2122266e564dSmrg ;; 2123266e564dSmrg esac 2124266e564dSmrg done 2125266e564dSmrg ;; 2126266e564dSmrg prog) 2127266e564dSmrg compile_deplibs= 2128266e564dSmrg finalize_deplibs= 2129266e564dSmrg alldeplibs=no 2130266e564dSmrg newdlfiles= 2131266e564dSmrg newdlprefiles= 2132266e564dSmrg passes="conv scan dlopen dlpreopen link" 2133266e564dSmrg ;; 2134266e564dSmrg *) passes="conv" 2135266e564dSmrg ;; 2136266e564dSmrg esac 2137266e564dSmrg for pass in $passes; do 2138266e564dSmrg if test "$linkmode,$pass" = "lib,link" || 2139266e564dSmrg test "$linkmode,$pass" = "prog,scan"; then 2140266e564dSmrg libs="$deplibs" 2141266e564dSmrg deplibs= 2142266e564dSmrg fi 2143266e564dSmrg if test "$linkmode" = prog; then 2144266e564dSmrg case $pass in 2145266e564dSmrg dlopen) libs="$dlfiles" ;; 2146266e564dSmrg dlpreopen) libs="$dlprefiles" ;; 2147c5629e66Smrg link) 2148c5629e66Smrg libs="$deplibs %DEPLIBS%" 2149c5629e66Smrg test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 2150c5629e66Smrg ;; 2151266e564dSmrg esac 2152266e564dSmrg fi 2153266e564dSmrg if test "$pass" = dlopen; then 2154266e564dSmrg # Collect dlpreopened libraries 2155266e564dSmrg save_deplibs="$deplibs" 2156266e564dSmrg deplibs= 2157266e564dSmrg fi 2158266e564dSmrg for deplib in $libs; do 2159266e564dSmrg lib= 2160266e564dSmrg found=no 2161266e564dSmrg case $deplib in 2162c5629e66Smrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 2163266e564dSmrg if test "$linkmode,$pass" = "prog,link"; then 2164266e564dSmrg compile_deplibs="$deplib $compile_deplibs" 2165266e564dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2166266e564dSmrg else 2167266e564dSmrg compiler_flags="$compiler_flags $deplib" 2168266e564dSmrg fi 2169266e564dSmrg continue 2170266e564dSmrg ;; 2171266e564dSmrg -l*) 2172266e564dSmrg if test "$linkmode" != lib && test "$linkmode" != prog; then 2173266e564dSmrg $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 2174266e564dSmrg continue 2175266e564dSmrg fi 2176266e564dSmrg name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` 2177c5629e66Smrg if test "$linkmode" = lib; then 2178c5629e66Smrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 2179c5629e66Smrg else 2180c5629e66Smrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 2181c5629e66Smrg fi 2182c5629e66Smrg for searchdir in $searchdirs; do 2183266e564dSmrg for search_ext in .la $std_shrext .so .a; do 2184266e564dSmrg # Search the libtool library 2185266e564dSmrg lib="$searchdir/lib${name}${search_ext}" 2186266e564dSmrg if test -f "$lib"; then 2187266e564dSmrg if test "$search_ext" = ".la"; then 2188266e564dSmrg found=yes 2189266e564dSmrg else 2190266e564dSmrg found=no 2191266e564dSmrg fi 2192266e564dSmrg break 2 2193266e564dSmrg fi 2194266e564dSmrg done 2195266e564dSmrg done 2196266e564dSmrg if test "$found" != yes; then 2197266e564dSmrg # deplib doesn't seem to be a libtool library 2198266e564dSmrg if test "$linkmode,$pass" = "prog,link"; then 2199266e564dSmrg compile_deplibs="$deplib $compile_deplibs" 2200266e564dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2201266e564dSmrg else 2202266e564dSmrg deplibs="$deplib $deplibs" 2203266e564dSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2204266e564dSmrg fi 2205266e564dSmrg continue 2206266e564dSmrg else # deplib is a libtool library 2207266e564dSmrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 2208266e564dSmrg # We need to do some special things here, and not later. 2209266e564dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 2210266e564dSmrg case " $predeps $postdeps " in 2211266e564dSmrg *" $deplib "*) 2212266e564dSmrg if (${SED} -e '2q' $lib | 2213266e564dSmrg grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2214266e564dSmrg library_names= 2215266e564dSmrg old_library= 2216266e564dSmrg case $lib in 2217266e564dSmrg */* | *\\*) . $lib ;; 2218266e564dSmrg *) . ./$lib ;; 2219266e564dSmrg esac 2220266e564dSmrg for l in $old_library $library_names; do 2221266e564dSmrg ll="$l" 2222266e564dSmrg done 2223266e564dSmrg if test "X$ll" = "X$old_library" ; then # only static version available 2224266e564dSmrg found=no 2225266e564dSmrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2226266e564dSmrg test "X$ladir" = "X$lib" && ladir="." 2227266e564dSmrg lib=$ladir/$old_library 2228266e564dSmrg if test "$linkmode,$pass" = "prog,link"; then 2229266e564dSmrg compile_deplibs="$deplib $compile_deplibs" 2230266e564dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2231266e564dSmrg else 2232266e564dSmrg deplibs="$deplib $deplibs" 2233266e564dSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 2234266e564dSmrg fi 2235266e564dSmrg continue 2236266e564dSmrg fi 2237266e564dSmrg fi 2238266e564dSmrg ;; 2239266e564dSmrg *) ;; 2240266e564dSmrg esac 2241266e564dSmrg fi 2242266e564dSmrg fi 2243266e564dSmrg ;; # -l 2244266e564dSmrg -L*) 2245266e564dSmrg case $linkmode in 2246266e564dSmrg lib) 2247266e564dSmrg deplibs="$deplib $deplibs" 2248266e564dSmrg test "$pass" = conv && continue 2249266e564dSmrg newdependency_libs="$deplib $newdependency_libs" 2250266e564dSmrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2251266e564dSmrg ;; 2252266e564dSmrg prog) 2253266e564dSmrg if test "$pass" = conv; then 2254266e564dSmrg deplibs="$deplib $deplibs" 2255266e564dSmrg continue 2256266e564dSmrg fi 2257266e564dSmrg if test "$pass" = scan; then 2258266e564dSmrg deplibs="$deplib $deplibs" 2259266e564dSmrg else 2260266e564dSmrg compile_deplibs="$deplib $compile_deplibs" 2261266e564dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2262266e564dSmrg fi 2263266e564dSmrg newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` 2264266e564dSmrg ;; 2265266e564dSmrg *) 2266266e564dSmrg $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 2267266e564dSmrg ;; 2268266e564dSmrg esac # linkmode 2269266e564dSmrg continue 2270266e564dSmrg ;; # -L 2271266e564dSmrg -R*) 2272266e564dSmrg if test "$pass" = link; then 2273266e564dSmrg dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 2274266e564dSmrg # Make sure the xrpath contains only unique directories. 2275266e564dSmrg case "$xrpath " in 2276266e564dSmrg *" $dir "*) ;; 2277266e564dSmrg *) xrpath="$xrpath $dir" ;; 2278266e564dSmrg esac 2279266e564dSmrg fi 2280266e564dSmrg deplibs="$deplib $deplibs" 2281266e564dSmrg continue 2282266e564dSmrg ;; 2283266e564dSmrg *.la) lib="$deplib" ;; 2284266e564dSmrg *.$libext) 2285266e564dSmrg if test "$pass" = conv; then 2286266e564dSmrg deplibs="$deplib $deplibs" 2287266e564dSmrg continue 2288266e564dSmrg fi 2289266e564dSmrg case $linkmode in 2290266e564dSmrg lib) 2291266e564dSmrg valid_a_lib=no 2292266e564dSmrg case $deplibs_check_method in 2293266e564dSmrg match_pattern*) 2294266e564dSmrg set dummy $deplibs_check_method 2295266e564dSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 2296266e564dSmrg if eval $echo \"$deplib\" 2>/dev/null \ 2297266e564dSmrg | $SED 10q \ 2298266e564dSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 2299266e564dSmrg valid_a_lib=yes 2300266e564dSmrg fi 2301266e564dSmrg ;; 2302266e564dSmrg pass_all) 2303266e564dSmrg valid_a_lib=yes 2304266e564dSmrg ;; 2305266e564dSmrg esac 2306266e564dSmrg if test "$valid_a_lib" != yes; then 2307266e564dSmrg $echo 2308266e564dSmrg $echo "*** Warning: Trying to link with static lib archive $deplib." 2309266e564dSmrg $echo "*** I have the capability to make that library automatically link in when" 2310266e564dSmrg $echo "*** you link to this library. But I can only do this if you have a" 2311266e564dSmrg $echo "*** shared version of the library, which you do not appear to have" 2312266e564dSmrg $echo "*** because the file extensions .$libext of this argument makes me believe" 2313266e564dSmrg $echo "*** that it is just a static archive that I should not used here." 2314266e564dSmrg else 2315266e564dSmrg $echo 2316266e564dSmrg $echo "*** Warning: Linking the shared library $output against the" 2317266e564dSmrg $echo "*** static library $deplib is not portable!" 2318266e564dSmrg deplibs="$deplib $deplibs" 2319266e564dSmrg fi 2320266e564dSmrg continue 2321266e564dSmrg ;; 2322266e564dSmrg prog) 2323266e564dSmrg if test "$pass" != link; then 2324266e564dSmrg deplibs="$deplib $deplibs" 2325266e564dSmrg else 2326266e564dSmrg compile_deplibs="$deplib $compile_deplibs" 2327266e564dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2328266e564dSmrg fi 2329266e564dSmrg continue 2330266e564dSmrg ;; 2331266e564dSmrg esac # linkmode 2332266e564dSmrg ;; # *.$libext 2333266e564dSmrg *.lo | *.$objext) 2334266e564dSmrg if test "$pass" = conv; then 2335266e564dSmrg deplibs="$deplib $deplibs" 2336266e564dSmrg elif test "$linkmode" = prog; then 2337266e564dSmrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 2338266e564dSmrg # If there is no dlopen support or we're linking statically, 2339266e564dSmrg # we need to preload. 2340266e564dSmrg newdlprefiles="$newdlprefiles $deplib" 2341266e564dSmrg compile_deplibs="$deplib $compile_deplibs" 2342266e564dSmrg finalize_deplibs="$deplib $finalize_deplibs" 2343266e564dSmrg else 2344266e564dSmrg newdlfiles="$newdlfiles $deplib" 2345266e564dSmrg fi 2346266e564dSmrg fi 2347266e564dSmrg continue 2348266e564dSmrg ;; 2349266e564dSmrg %DEPLIBS%) 2350266e564dSmrg alldeplibs=yes 2351266e564dSmrg continue 2352266e564dSmrg ;; 2353266e564dSmrg esac # case $deplib 2354266e564dSmrg if test "$found" = yes || test -f "$lib"; then : 2355266e564dSmrg else 2356266e564dSmrg $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 2357266e564dSmrg exit $EXIT_FAILURE 2358266e564dSmrg fi 2359266e564dSmrg 2360266e564dSmrg # Check to see that this really is a libtool archive. 2361266e564dSmrg if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2362266e564dSmrg else 2363266e564dSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2364266e564dSmrg exit $EXIT_FAILURE 2365266e564dSmrg fi 2366266e564dSmrg 2367266e564dSmrg ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` 2368266e564dSmrg test "X$ladir" = "X$lib" && ladir="." 2369266e564dSmrg 2370266e564dSmrg dlname= 2371266e564dSmrg dlopen= 2372266e564dSmrg dlpreopen= 2373266e564dSmrg libdir= 2374266e564dSmrg library_names= 2375266e564dSmrg old_library= 2376266e564dSmrg # If the library was installed with an old release of libtool, 2377266e564dSmrg # it will not redefine variables installed, or shouldnotlink 2378266e564dSmrg installed=yes 2379266e564dSmrg shouldnotlink=no 2380266e564dSmrg avoidtemprpath= 2381266e564dSmrg 2382266e564dSmrg 2383266e564dSmrg # Read the .la file 2384266e564dSmrg case $lib in 2385266e564dSmrg */* | *\\*) . $lib ;; 2386266e564dSmrg *) . ./$lib ;; 2387266e564dSmrg esac 2388266e564dSmrg 2389266e564dSmrg if test "$linkmode,$pass" = "lib,link" || 2390266e564dSmrg test "$linkmode,$pass" = "prog,scan" || 2391266e564dSmrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 2392266e564dSmrg test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 2393266e564dSmrg test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 2394266e564dSmrg fi 2395266e564dSmrg 2396266e564dSmrg if test "$pass" = conv; then 2397266e564dSmrg # Only check for convenience libraries 2398266e564dSmrg deplibs="$lib $deplibs" 2399266e564dSmrg if test -z "$libdir"; then 2400266e564dSmrg if test -z "$old_library"; then 2401266e564dSmrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2402266e564dSmrg exit $EXIT_FAILURE 2403266e564dSmrg fi 2404266e564dSmrg # It is a libtool convenience library, so add in its objects. 2405266e564dSmrg convenience="$convenience $ladir/$objdir/$old_library" 2406266e564dSmrg old_convenience="$old_convenience $ladir/$objdir/$old_library" 2407266e564dSmrg tmp_libs= 2408266e564dSmrg for deplib in $dependency_libs; do 2409266e564dSmrg deplibs="$deplib $deplibs" 2410266e564dSmrg if test "X$duplicate_deps" = "Xyes" ; then 2411266e564dSmrg case "$tmp_libs " in 2412266e564dSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2413266e564dSmrg esac 2414266e564dSmrg fi 2415266e564dSmrg tmp_libs="$tmp_libs $deplib" 2416266e564dSmrg done 2417266e564dSmrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 2418266e564dSmrg $echo "$modename: \`$lib' is not a convenience library" 1>&2 2419266e564dSmrg exit $EXIT_FAILURE 2420266e564dSmrg fi 2421266e564dSmrg continue 2422266e564dSmrg fi # $pass = conv 2423266e564dSmrg 2424266e564dSmrg 2425266e564dSmrg # Get the name of the library we link against. 2426266e564dSmrg linklib= 2427266e564dSmrg for l in $old_library $library_names; do 2428266e564dSmrg linklib="$l" 2429266e564dSmrg done 2430266e564dSmrg if test -z "$linklib"; then 2431266e564dSmrg $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 2432266e564dSmrg exit $EXIT_FAILURE 2433266e564dSmrg fi 2434266e564dSmrg 2435266e564dSmrg # This library was specified with -dlopen. 2436266e564dSmrg if test "$pass" = dlopen; then 2437266e564dSmrg if test -z "$libdir"; then 2438266e564dSmrg $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 2439266e564dSmrg exit $EXIT_FAILURE 2440266e564dSmrg fi 2441266e564dSmrg if test -z "$dlname" || 2442266e564dSmrg test "$dlopen_support" != yes || 2443266e564dSmrg test "$build_libtool_libs" = no; then 2444266e564dSmrg # If there is no dlname, no dlopen support or we're linking 2445266e564dSmrg # statically, we need to preload. We also need to preload any 2446266e564dSmrg # dependent libraries so libltdl's deplib preloader doesn't 2447266e564dSmrg # bomb out in the load deplibs phase. 2448266e564dSmrg dlprefiles="$dlprefiles $lib $dependency_libs" 2449266e564dSmrg else 2450266e564dSmrg newdlfiles="$newdlfiles $lib" 2451266e564dSmrg fi 2452266e564dSmrg continue 2453266e564dSmrg fi # $pass = dlopen 2454266e564dSmrg 2455266e564dSmrg # We need an absolute path. 2456266e564dSmrg case $ladir in 2457266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 2458266e564dSmrg *) 2459266e564dSmrg abs_ladir=`cd "$ladir" && pwd` 2460266e564dSmrg if test -z "$abs_ladir"; then 2461266e564dSmrg $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 2462266e564dSmrg $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 2463266e564dSmrg abs_ladir="$ladir" 2464266e564dSmrg fi 2465266e564dSmrg ;; 2466266e564dSmrg esac 2467266e564dSmrg laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 2468266e564dSmrg 2469266e564dSmrg # Find the relevant object directory and library name. 2470266e564dSmrg if test "X$installed" = Xyes; then 2471266e564dSmrg if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2472266e564dSmrg $echo "$modename: warning: library \`$lib' was moved." 1>&2 2473266e564dSmrg dir="$ladir" 2474266e564dSmrg absdir="$abs_ladir" 2475266e564dSmrg libdir="$abs_ladir" 2476266e564dSmrg else 2477266e564dSmrg dir="$libdir" 2478266e564dSmrg absdir="$libdir" 2479266e564dSmrg fi 2480266e564dSmrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 2481266e564dSmrg else 2482266e564dSmrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 2483266e564dSmrg dir="$ladir" 2484266e564dSmrg absdir="$abs_ladir" 2485266e564dSmrg # Remove this search path later 2486266e564dSmrg notinst_path="$notinst_path $abs_ladir" 2487266e564dSmrg else 2488266e564dSmrg dir="$ladir/$objdir" 2489266e564dSmrg absdir="$abs_ladir/$objdir" 2490266e564dSmrg # Remove this search path later 2491266e564dSmrg notinst_path="$notinst_path $abs_ladir" 2492266e564dSmrg fi 2493266e564dSmrg fi # $installed = yes 2494266e564dSmrg name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 2495266e564dSmrg 2496266e564dSmrg # This library was specified with -dlpreopen. 2497266e564dSmrg if test "$pass" = dlpreopen; then 2498266e564dSmrg if test -z "$libdir"; then 2499266e564dSmrg $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 2500266e564dSmrg exit $EXIT_FAILURE 2501266e564dSmrg fi 2502266e564dSmrg # Prefer using a static library (so that no silly _DYNAMIC symbols 2503266e564dSmrg # are required to link). 2504266e564dSmrg if test -n "$old_library"; then 2505266e564dSmrg newdlprefiles="$newdlprefiles $dir/$old_library" 2506266e564dSmrg # Otherwise, use the dlname, so that lt_dlopen finds it. 2507266e564dSmrg elif test -n "$dlname"; then 2508266e564dSmrg newdlprefiles="$newdlprefiles $dir/$dlname" 2509266e564dSmrg else 2510266e564dSmrg newdlprefiles="$newdlprefiles $dir/$linklib" 2511266e564dSmrg fi 2512266e564dSmrg fi # $pass = dlpreopen 2513266e564dSmrg 2514266e564dSmrg if test -z "$libdir"; then 2515266e564dSmrg # Link the convenience library 2516266e564dSmrg if test "$linkmode" = lib; then 2517266e564dSmrg deplibs="$dir/$old_library $deplibs" 2518266e564dSmrg elif test "$linkmode,$pass" = "prog,link"; then 2519266e564dSmrg compile_deplibs="$dir/$old_library $compile_deplibs" 2520266e564dSmrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 2521266e564dSmrg else 2522266e564dSmrg deplibs="$lib $deplibs" # used for prog,scan pass 2523266e564dSmrg fi 2524266e564dSmrg continue 2525266e564dSmrg fi 2526266e564dSmrg 2527266e564dSmrg 2528266e564dSmrg if test "$linkmode" = prog && test "$pass" != link; then 2529266e564dSmrg newlib_search_path="$newlib_search_path $ladir" 2530266e564dSmrg deplibs="$lib $deplibs" 2531266e564dSmrg 2532266e564dSmrg linkalldeplibs=no 2533266e564dSmrg if test "$link_all_deplibs" != no || test -z "$library_names" || 2534266e564dSmrg test "$build_libtool_libs" = no; then 2535266e564dSmrg linkalldeplibs=yes 2536266e564dSmrg fi 2537266e564dSmrg 2538266e564dSmrg tmp_libs= 2539266e564dSmrg for deplib in $dependency_libs; do 2540266e564dSmrg case $deplib in 2541266e564dSmrg -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test 2542266e564dSmrg esac 2543266e564dSmrg # Need to link against all dependency_libs? 2544266e564dSmrg if test "$linkalldeplibs" = yes; then 2545266e564dSmrg deplibs="$deplib $deplibs" 2546266e564dSmrg else 2547266e564dSmrg # Need to hardcode shared library paths 2548266e564dSmrg # or/and link against static libraries 2549266e564dSmrg newdependency_libs="$deplib $newdependency_libs" 2550266e564dSmrg fi 2551266e564dSmrg if test "X$duplicate_deps" = "Xyes" ; then 2552266e564dSmrg case "$tmp_libs " in 2553266e564dSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2554266e564dSmrg esac 2555266e564dSmrg fi 2556266e564dSmrg tmp_libs="$tmp_libs $deplib" 2557266e564dSmrg done # for deplib 2558266e564dSmrg continue 2559266e564dSmrg fi # $linkmode = prog... 2560266e564dSmrg 2561266e564dSmrg if test "$linkmode,$pass" = "prog,link"; then 2562266e564dSmrg if test -n "$library_names" && 2563c5629e66Smrg { { test "$prefer_static_libs" = no || 2564c5629e66Smrg test "$prefer_static_libs,$installed" = "built,yes"; } || 2565c5629e66Smrg test -z "$old_library"; }; then 2566266e564dSmrg # We need to hardcode the library path 2567266e564dSmrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 2568266e564dSmrg # Make sure the rpath contains only unique directories. 2569266e564dSmrg case "$temp_rpath " in 2570266e564dSmrg *" $dir "*) ;; 2571266e564dSmrg *" $absdir "*) ;; 2572266e564dSmrg *) temp_rpath="$temp_rpath $absdir" ;; 2573266e564dSmrg esac 2574266e564dSmrg fi 2575266e564dSmrg 2576266e564dSmrg # Hardcode the library path. 2577266e564dSmrg # Skip directories that are in the system default run-time 2578266e564dSmrg # search path. 2579266e564dSmrg case " $sys_lib_dlsearch_path " in 2580266e564dSmrg *" $absdir "*) ;; 2581266e564dSmrg *) 2582266e564dSmrg case "$compile_rpath " in 2583266e564dSmrg *" $absdir "*) ;; 2584266e564dSmrg *) compile_rpath="$compile_rpath $absdir" 2585266e564dSmrg esac 2586266e564dSmrg ;; 2587266e564dSmrg esac 2588266e564dSmrg case " $sys_lib_dlsearch_path " in 2589266e564dSmrg *" $libdir "*) ;; 2590266e564dSmrg *) 2591266e564dSmrg case "$finalize_rpath " in 2592266e564dSmrg *" $libdir "*) ;; 2593266e564dSmrg *) finalize_rpath="$finalize_rpath $libdir" 2594266e564dSmrg esac 2595266e564dSmrg ;; 2596266e564dSmrg esac 2597266e564dSmrg fi # $linkmode,$pass = prog,link... 2598266e564dSmrg 2599266e564dSmrg if test "$alldeplibs" = yes && 2600266e564dSmrg { test "$deplibs_check_method" = pass_all || 2601266e564dSmrg { test "$build_libtool_libs" = yes && 2602266e564dSmrg test -n "$library_names"; }; }; then 2603266e564dSmrg # We only need to search for static libraries 2604266e564dSmrg continue 2605266e564dSmrg fi 2606266e564dSmrg fi 2607266e564dSmrg 2608266e564dSmrg link_static=no # Whether the deplib will be linked statically 2609266e564dSmrg use_static_libs=$prefer_static_libs 2610266e564dSmrg if test "$use_static_libs" = built && test "$installed" = yes ; then 2611266e564dSmrg use_static_libs=no 2612266e564dSmrg fi 2613266e564dSmrg if test -n "$library_names" && 2614266e564dSmrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 2615266e564dSmrg if test "$installed" = no; then 2616266e564dSmrg notinst_deplibs="$notinst_deplibs $lib" 2617266e564dSmrg need_relink=yes 2618266e564dSmrg fi 2619266e564dSmrg # This is a shared library 2620266e564dSmrg 2621266e564dSmrg # Warn about portability, can't link against -module's on 2622266e564dSmrg # some systems (darwin) 2623266e564dSmrg if test "$shouldnotlink" = yes && test "$pass" = link ; then 2624266e564dSmrg $echo 2625266e564dSmrg if test "$linkmode" = prog; then 2626266e564dSmrg $echo "*** Warning: Linking the executable $output against the loadable module" 2627266e564dSmrg else 2628266e564dSmrg $echo "*** Warning: Linking the shared library $output against the loadable module" 2629266e564dSmrg fi 2630266e564dSmrg $echo "*** $linklib is not portable!" 2631266e564dSmrg fi 2632266e564dSmrg if test "$linkmode" = lib && 2633266e564dSmrg test "$hardcode_into_libs" = yes; then 2634266e564dSmrg # Hardcode the library path. 2635266e564dSmrg # Skip directories that are in the system default run-time 2636266e564dSmrg # search path. 2637266e564dSmrg case " $sys_lib_dlsearch_path " in 2638266e564dSmrg *" $absdir "*) ;; 2639266e564dSmrg *) 2640266e564dSmrg case "$compile_rpath " in 2641266e564dSmrg *" $absdir "*) ;; 2642266e564dSmrg *) compile_rpath="$compile_rpath $absdir" 2643266e564dSmrg esac 2644266e564dSmrg ;; 2645266e564dSmrg esac 2646266e564dSmrg case " $sys_lib_dlsearch_path " in 2647266e564dSmrg *" $libdir "*) ;; 2648266e564dSmrg *) 2649266e564dSmrg case "$finalize_rpath " in 2650266e564dSmrg *" $libdir "*) ;; 2651266e564dSmrg *) finalize_rpath="$finalize_rpath $libdir" 2652266e564dSmrg esac 2653266e564dSmrg ;; 2654266e564dSmrg esac 2655266e564dSmrg fi 2656266e564dSmrg 2657266e564dSmrg if test -n "$old_archive_from_expsyms_cmds"; then 2658266e564dSmrg # figure out the soname 2659266e564dSmrg set dummy $library_names 2660266e564dSmrg realname="$2" 2661266e564dSmrg shift; shift 2662266e564dSmrg libname=`eval \\$echo \"$libname_spec\"` 2663266e564dSmrg # use dlname if we got it. it's perfectly good, no? 2664266e564dSmrg if test -n "$dlname"; then 2665266e564dSmrg soname="$dlname" 2666266e564dSmrg elif test -n "$soname_spec"; then 2667266e564dSmrg # bleh windows 2668266e564dSmrg case $host in 2669266e564dSmrg *cygwin* | mingw*) 2670266e564dSmrg major=`expr $current - $age` 2671266e564dSmrg versuffix="-$major" 2672266e564dSmrg ;; 2673266e564dSmrg esac 2674266e564dSmrg eval soname=\"$soname_spec\" 2675266e564dSmrg else 2676266e564dSmrg soname="$realname" 2677266e564dSmrg fi 2678266e564dSmrg 2679266e564dSmrg # Make a new name for the extract_expsyms_cmds to use 2680266e564dSmrg soroot="$soname" 2681266e564dSmrg soname=`$echo $soroot | ${SED} -e 's/^.*\///'` 2682266e564dSmrg newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" 2683266e564dSmrg 2684266e564dSmrg # If the library has no export list, then create one now 2685266e564dSmrg if test -f "$output_objdir/$soname-def"; then : 2686266e564dSmrg else 2687266e564dSmrg $show "extracting exported symbol list from \`$soname'" 2688266e564dSmrg save_ifs="$IFS"; IFS='~' 2689266e564dSmrg cmds=$extract_expsyms_cmds 2690266e564dSmrg for cmd in $cmds; do 2691266e564dSmrg IFS="$save_ifs" 2692266e564dSmrg eval cmd=\"$cmd\" 2693266e564dSmrg $show "$cmd" 2694266e564dSmrg $run eval "$cmd" || exit $? 2695266e564dSmrg done 2696266e564dSmrg IFS="$save_ifs" 2697266e564dSmrg fi 2698266e564dSmrg 2699266e564dSmrg # Create $newlib 2700266e564dSmrg if test -f "$output_objdir/$newlib"; then :; else 2701266e564dSmrg $show "generating import library for \`$soname'" 2702266e564dSmrg save_ifs="$IFS"; IFS='~' 2703266e564dSmrg cmds=$old_archive_from_expsyms_cmds 2704266e564dSmrg for cmd in $cmds; do 2705266e564dSmrg IFS="$save_ifs" 2706266e564dSmrg eval cmd=\"$cmd\" 2707266e564dSmrg $show "$cmd" 2708266e564dSmrg $run eval "$cmd" || exit $? 2709266e564dSmrg done 2710266e564dSmrg IFS="$save_ifs" 2711266e564dSmrg fi 2712266e564dSmrg # make sure the library variables are pointing to the new library 2713266e564dSmrg dir=$output_objdir 2714266e564dSmrg linklib=$newlib 2715266e564dSmrg fi # test -n "$old_archive_from_expsyms_cmds" 2716266e564dSmrg 2717266e564dSmrg if test "$linkmode" = prog || test "$mode" != relink; then 2718266e564dSmrg add_shlibpath= 2719266e564dSmrg add_dir= 2720266e564dSmrg add= 2721266e564dSmrg lib_linked=yes 2722266e564dSmrg case $hardcode_action in 2723266e564dSmrg immediate | unsupported) 2724266e564dSmrg if test "$hardcode_direct" = no; then 2725266e564dSmrg add="$dir/$linklib" 2726266e564dSmrg case $host in 2727266e564dSmrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 2728266e564dSmrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 2729266e564dSmrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 2730266e564dSmrg *-*-unixware7*) add_dir="-L$dir" ;; 2731266e564dSmrg *-*-darwin* ) 2732266e564dSmrg # if the lib is a module then we can not link against 2733266e564dSmrg # it, someone is ignoring the new warnings I added 2734266e564dSmrg if /usr/bin/file -L $add 2> /dev/null | 2735266e564dSmrg $EGREP ": [^:]* bundle" >/dev/null ; then 2736266e564dSmrg $echo "** Warning, lib $linklib is a module, not a shared library" 2737266e564dSmrg if test -z "$old_library" ; then 2738266e564dSmrg $echo 2739266e564dSmrg $echo "** And there doesn't seem to be a static archive available" 2740266e564dSmrg $echo "** The link will probably fail, sorry" 2741266e564dSmrg else 2742266e564dSmrg add="$dir/$old_library" 2743266e564dSmrg fi 2744266e564dSmrg fi 2745266e564dSmrg esac 2746266e564dSmrg elif test "$hardcode_minus_L" = no; then 2747266e564dSmrg case $host in 2748266e564dSmrg *-*-sunos*) add_shlibpath="$dir" ;; 2749266e564dSmrg esac 2750266e564dSmrg add_dir="-L$dir" 2751266e564dSmrg add="-l$name" 2752266e564dSmrg elif test "$hardcode_shlibpath_var" = no; then 2753266e564dSmrg add_shlibpath="$dir" 2754266e564dSmrg add="-l$name" 2755266e564dSmrg else 2756266e564dSmrg lib_linked=no 2757266e564dSmrg fi 2758266e564dSmrg ;; 2759266e564dSmrg relink) 2760266e564dSmrg if test "$hardcode_direct" = yes; then 2761266e564dSmrg add="$dir/$linklib" 2762266e564dSmrg elif test "$hardcode_minus_L" = yes; then 2763266e564dSmrg add_dir="-L$dir" 2764266e564dSmrg # Try looking first in the location we're being installed to. 2765266e564dSmrg if test -n "$inst_prefix_dir"; then 2766266e564dSmrg case $libdir in 2767266e564dSmrg [\\/]*) 2768266e564dSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2769266e564dSmrg ;; 2770266e564dSmrg esac 2771266e564dSmrg fi 2772266e564dSmrg add="-l$name" 2773266e564dSmrg elif test "$hardcode_shlibpath_var" = yes; then 2774266e564dSmrg add_shlibpath="$dir" 2775266e564dSmrg add="-l$name" 2776266e564dSmrg else 2777266e564dSmrg lib_linked=no 2778266e564dSmrg fi 2779266e564dSmrg ;; 2780266e564dSmrg *) lib_linked=no ;; 2781266e564dSmrg esac 2782266e564dSmrg 2783266e564dSmrg if test "$lib_linked" != yes; then 2784266e564dSmrg $echo "$modename: configuration error: unsupported hardcode properties" 2785266e564dSmrg exit $EXIT_FAILURE 2786266e564dSmrg fi 2787266e564dSmrg 2788266e564dSmrg if test -n "$add_shlibpath"; then 2789266e564dSmrg case :$compile_shlibpath: in 2790266e564dSmrg *":$add_shlibpath:"*) ;; 2791266e564dSmrg *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 2792266e564dSmrg esac 2793266e564dSmrg fi 2794266e564dSmrg if test "$linkmode" = prog; then 2795266e564dSmrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 2796266e564dSmrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 2797266e564dSmrg else 2798266e564dSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2799266e564dSmrg test -n "$add" && deplibs="$add $deplibs" 2800266e564dSmrg if test "$hardcode_direct" != yes && \ 2801266e564dSmrg test "$hardcode_minus_L" != yes && \ 2802266e564dSmrg test "$hardcode_shlibpath_var" = yes; then 2803266e564dSmrg case :$finalize_shlibpath: in 2804266e564dSmrg *":$libdir:"*) ;; 2805266e564dSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2806266e564dSmrg esac 2807266e564dSmrg fi 2808266e564dSmrg fi 2809266e564dSmrg fi 2810266e564dSmrg 2811266e564dSmrg if test "$linkmode" = prog || test "$mode" = relink; then 2812266e564dSmrg add_shlibpath= 2813266e564dSmrg add_dir= 2814266e564dSmrg add= 2815266e564dSmrg # Finalize command for both is simple: just hardcode it. 2816266e564dSmrg if test "$hardcode_direct" = yes; then 2817266e564dSmrg add="$libdir/$linklib" 2818266e564dSmrg elif test "$hardcode_minus_L" = yes; then 2819266e564dSmrg add_dir="-L$libdir" 2820266e564dSmrg add="-l$name" 2821266e564dSmrg elif test "$hardcode_shlibpath_var" = yes; then 2822266e564dSmrg case :$finalize_shlibpath: in 2823266e564dSmrg *":$libdir:"*) ;; 2824266e564dSmrg *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 2825266e564dSmrg esac 2826266e564dSmrg add="-l$name" 2827266e564dSmrg elif test "$hardcode_automatic" = yes; then 2828266e564dSmrg if test -n "$inst_prefix_dir" && 2829266e564dSmrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 2830266e564dSmrg add="$inst_prefix_dir$libdir/$linklib" 2831266e564dSmrg else 2832266e564dSmrg add="$libdir/$linklib" 2833266e564dSmrg fi 2834266e564dSmrg else 2835266e564dSmrg # We cannot seem to hardcode it, guess we'll fake it. 2836266e564dSmrg add_dir="-L$libdir" 2837266e564dSmrg # Try looking first in the location we're being installed to. 2838266e564dSmrg if test -n "$inst_prefix_dir"; then 2839266e564dSmrg case $libdir in 2840266e564dSmrg [\\/]*) 2841266e564dSmrg add_dir="$add_dir -L$inst_prefix_dir$libdir" 2842266e564dSmrg ;; 2843266e564dSmrg esac 2844266e564dSmrg fi 2845266e564dSmrg add="-l$name" 2846266e564dSmrg fi 2847266e564dSmrg 2848266e564dSmrg if test "$linkmode" = prog; then 2849266e564dSmrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 2850266e564dSmrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 2851266e564dSmrg else 2852266e564dSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 2853266e564dSmrg test -n "$add" && deplibs="$add $deplibs" 2854266e564dSmrg fi 2855266e564dSmrg fi 2856266e564dSmrg elif test "$linkmode" = prog; then 2857266e564dSmrg # Here we assume that one of hardcode_direct or hardcode_minus_L 2858266e564dSmrg # is not unsupported. This is valid on all known static and 2859266e564dSmrg # shared platforms. 2860266e564dSmrg if test "$hardcode_direct" != unsupported; then 2861266e564dSmrg test -n "$old_library" && linklib="$old_library" 2862266e564dSmrg compile_deplibs="$dir/$linklib $compile_deplibs" 2863266e564dSmrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 2864266e564dSmrg else 2865266e564dSmrg compile_deplibs="-l$name -L$dir $compile_deplibs" 2866266e564dSmrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 2867266e564dSmrg fi 2868266e564dSmrg elif test "$build_libtool_libs" = yes; then 2869266e564dSmrg # Not a shared library 2870266e564dSmrg if test "$deplibs_check_method" != pass_all; then 2871266e564dSmrg # We're trying link a shared library against a static one 2872266e564dSmrg # but the system doesn't support it. 2873266e564dSmrg 2874266e564dSmrg # Just print a warning and add the library to dependency_libs so 2875266e564dSmrg # that the program can be linked against the static library. 2876266e564dSmrg $echo 2877266e564dSmrg $echo "*** Warning: This system can not link to static lib archive $lib." 2878266e564dSmrg $echo "*** I have the capability to make that library automatically link in when" 2879266e564dSmrg $echo "*** you link to this library. But I can only do this if you have a" 2880266e564dSmrg $echo "*** shared version of the library, which you do not appear to have." 2881266e564dSmrg if test "$module" = yes; then 2882266e564dSmrg $echo "*** But as you try to build a module library, libtool will still create " 2883266e564dSmrg $echo "*** a static module, that should work as long as the dlopening application" 2884266e564dSmrg $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 2885266e564dSmrg if test -z "$global_symbol_pipe"; then 2886266e564dSmrg $echo 2887266e564dSmrg $echo "*** However, this would only work if libtool was able to extract symbol" 2888266e564dSmrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 2889266e564dSmrg $echo "*** not find such a program. So, this module is probably useless." 2890266e564dSmrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 2891266e564dSmrg fi 2892266e564dSmrg if test "$build_old_libs" = no; then 2893266e564dSmrg build_libtool_libs=module 2894266e564dSmrg build_old_libs=yes 2895266e564dSmrg else 2896266e564dSmrg build_libtool_libs=no 2897266e564dSmrg fi 2898266e564dSmrg fi 2899266e564dSmrg else 2900266e564dSmrg deplibs="$dir/$old_library $deplibs" 2901266e564dSmrg link_static=yes 2902266e564dSmrg fi 2903266e564dSmrg fi # link shared/static library? 2904266e564dSmrg 2905266e564dSmrg if test "$linkmode" = lib; then 2906266e564dSmrg if test -n "$dependency_libs" && 2907266e564dSmrg { test "$hardcode_into_libs" != yes || 2908266e564dSmrg test "$build_old_libs" = yes || 2909266e564dSmrg test "$link_static" = yes; }; then 2910266e564dSmrg # Extract -R from dependency_libs 2911266e564dSmrg temp_deplibs= 2912266e564dSmrg for libdir in $dependency_libs; do 2913266e564dSmrg case $libdir in 2914266e564dSmrg -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` 2915266e564dSmrg case " $xrpath " in 2916266e564dSmrg *" $temp_xrpath "*) ;; 2917266e564dSmrg *) xrpath="$xrpath $temp_xrpath";; 2918266e564dSmrg esac;; 2919266e564dSmrg *) temp_deplibs="$temp_deplibs $libdir";; 2920266e564dSmrg esac 2921266e564dSmrg done 2922266e564dSmrg dependency_libs="$temp_deplibs" 2923266e564dSmrg fi 2924266e564dSmrg 2925266e564dSmrg newlib_search_path="$newlib_search_path $absdir" 2926266e564dSmrg # Link against this library 2927266e564dSmrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 2928266e564dSmrg # ... and its dependency_libs 2929266e564dSmrg tmp_libs= 2930266e564dSmrg for deplib in $dependency_libs; do 2931266e564dSmrg newdependency_libs="$deplib $newdependency_libs" 2932266e564dSmrg if test "X$duplicate_deps" = "Xyes" ; then 2933266e564dSmrg case "$tmp_libs " in 2934266e564dSmrg *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 2935266e564dSmrg esac 2936266e564dSmrg fi 2937266e564dSmrg tmp_libs="$tmp_libs $deplib" 2938266e564dSmrg done 2939266e564dSmrg 2940266e564dSmrg if test "$link_all_deplibs" != no; then 2941266e564dSmrg # Add the search paths of all dependency libraries 2942266e564dSmrg for deplib in $dependency_libs; do 2943266e564dSmrg case $deplib in 2944266e564dSmrg -L*) path="$deplib" ;; 2945266e564dSmrg *.la) 2946266e564dSmrg dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` 2947266e564dSmrg test "X$dir" = "X$deplib" && dir="." 2948266e564dSmrg # We need an absolute path. 2949266e564dSmrg case $dir in 2950266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 2951266e564dSmrg *) 2952266e564dSmrg absdir=`cd "$dir" && pwd` 2953266e564dSmrg if test -z "$absdir"; then 2954266e564dSmrg $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 2955266e564dSmrg absdir="$dir" 2956266e564dSmrg fi 2957266e564dSmrg ;; 2958266e564dSmrg esac 2959266e564dSmrg if grep "^installed=no" $deplib > /dev/null; then 2960266e564dSmrg path="$absdir/$objdir" 2961266e564dSmrg else 2962266e564dSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2963266e564dSmrg if test -z "$libdir"; then 2964266e564dSmrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 2965266e564dSmrg exit $EXIT_FAILURE 2966266e564dSmrg fi 2967266e564dSmrg if test "$absdir" != "$libdir"; then 2968266e564dSmrg $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 2969266e564dSmrg fi 2970266e564dSmrg path="$absdir" 2971266e564dSmrg fi 2972266e564dSmrg depdepl= 2973266e564dSmrg case $host in 2974266e564dSmrg *-*-darwin*) 2975266e564dSmrg # we do not want to link against static libs, 2976266e564dSmrg # but need to link against shared 2977266e564dSmrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 2978c5629e66Smrg eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 2979266e564dSmrg if test -n "$deplibrary_names" ; then 2980266e564dSmrg for tmp in $deplibrary_names ; do 2981266e564dSmrg depdepl=$tmp 2982266e564dSmrg done 2983c5629e66Smrg if test -f "$deplibdir/$depdepl" ; then 2984c5629e66Smrg depdepl="$deplibdir/$depdepl" 2985c5629e66Smrg elif test -f "$path/$depdepl" ; then 2986266e564dSmrg depdepl="$path/$depdepl" 2987c5629e66Smrg else 2988c5629e66Smrg # Can't find it, oh well... 2989c5629e66Smrg depdepl= 2990266e564dSmrg fi 2991266e564dSmrg # do not add paths which are already there 2992266e564dSmrg case " $newlib_search_path " in 2993266e564dSmrg *" $path "*) ;; 2994266e564dSmrg *) newlib_search_path="$newlib_search_path $path";; 2995266e564dSmrg esac 2996266e564dSmrg fi 2997266e564dSmrg path="" 2998266e564dSmrg ;; 2999266e564dSmrg *) 3000266e564dSmrg path="-L$path" 3001266e564dSmrg ;; 3002266e564dSmrg esac 3003266e564dSmrg ;; 3004266e564dSmrg -l*) 3005266e564dSmrg case $host in 3006266e564dSmrg *-*-darwin*) 3007266e564dSmrg # Again, we only want to link against shared libraries 3008266e564dSmrg eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` 3009266e564dSmrg for tmp in $newlib_search_path ; do 3010266e564dSmrg if test -f "$tmp/lib$tmp_libs.dylib" ; then 3011266e564dSmrg eval depdepl="$tmp/lib$tmp_libs.dylib" 3012266e564dSmrg break 3013266e564dSmrg fi 3014266e564dSmrg done 3015266e564dSmrg path="" 3016266e564dSmrg ;; 3017266e564dSmrg *) continue ;; 3018266e564dSmrg esac 3019266e564dSmrg ;; 3020266e564dSmrg *) continue ;; 3021266e564dSmrg esac 3022266e564dSmrg case " $deplibs " in 3023266e564dSmrg *" $path "*) ;; 3024266e564dSmrg *) deplibs="$path $deplibs" ;; 3025266e564dSmrg esac 3026266e564dSmrg case " $deplibs " in 3027266e564dSmrg *" $depdepl "*) ;; 3028266e564dSmrg *) deplibs="$depdepl $deplibs" ;; 3029266e564dSmrg esac 3030266e564dSmrg done 3031266e564dSmrg fi # link_all_deplibs != no 3032266e564dSmrg fi # linkmode = lib 3033266e564dSmrg done # for deplib in $libs 3034266e564dSmrg dependency_libs="$newdependency_libs" 3035266e564dSmrg if test "$pass" = dlpreopen; then 3036266e564dSmrg # Link the dlpreopened libraries before other libraries 3037266e564dSmrg for deplib in $save_deplibs; do 3038266e564dSmrg deplibs="$deplib $deplibs" 3039266e564dSmrg done 3040266e564dSmrg fi 3041266e564dSmrg if test "$pass" != dlopen; then 3042266e564dSmrg if test "$pass" != conv; then 3043266e564dSmrg # Make sure lib_search_path contains only unique directories. 3044266e564dSmrg lib_search_path= 3045266e564dSmrg for dir in $newlib_search_path; do 3046266e564dSmrg case "$lib_search_path " in 3047266e564dSmrg *" $dir "*) ;; 3048266e564dSmrg *) lib_search_path="$lib_search_path $dir" ;; 3049266e564dSmrg esac 3050266e564dSmrg done 3051266e564dSmrg newlib_search_path= 3052266e564dSmrg fi 3053266e564dSmrg 3054266e564dSmrg if test "$linkmode,$pass" != "prog,link"; then 3055266e564dSmrg vars="deplibs" 3056266e564dSmrg else 3057266e564dSmrg vars="compile_deplibs finalize_deplibs" 3058266e564dSmrg fi 3059266e564dSmrg for var in $vars dependency_libs; do 3060266e564dSmrg # Add libraries to $var in reverse order 3061266e564dSmrg eval tmp_libs=\"\$$var\" 3062266e564dSmrg new_libs= 3063266e564dSmrg for deplib in $tmp_libs; do 3064266e564dSmrg # FIXME: Pedantically, this is the right thing to do, so 3065266e564dSmrg # that some nasty dependency loop isn't accidentally 3066266e564dSmrg # broken: 3067266e564dSmrg #new_libs="$deplib $new_libs" 3068266e564dSmrg # Pragmatically, this seems to cause very few problems in 3069266e564dSmrg # practice: 3070266e564dSmrg case $deplib in 3071266e564dSmrg -L*) new_libs="$deplib $new_libs" ;; 3072266e564dSmrg -R*) ;; 3073266e564dSmrg *) 3074266e564dSmrg # And here is the reason: when a library appears more 3075266e564dSmrg # than once as an explicit dependence of a library, or 3076266e564dSmrg # is implicitly linked in more than once by the 3077266e564dSmrg # compiler, it is considered special, and multiple 3078266e564dSmrg # occurrences thereof are not removed. Compare this 3079266e564dSmrg # with having the same library being listed as a 3080266e564dSmrg # dependency of multiple other libraries: in this case, 3081266e564dSmrg # we know (pedantically, we assume) the library does not 3082266e564dSmrg # need to be listed more than once, so we keep only the 3083266e564dSmrg # last copy. This is not always right, but it is rare 3084266e564dSmrg # enough that we require users that really mean to play 3085266e564dSmrg # such unportable linking tricks to link the library 3086266e564dSmrg # using -Wl,-lname, so that libtool does not consider it 3087266e564dSmrg # for duplicate removal. 3088266e564dSmrg case " $specialdeplibs " in 3089266e564dSmrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 3090266e564dSmrg *) 3091266e564dSmrg case " $new_libs " in 3092266e564dSmrg *" $deplib "*) ;; 3093266e564dSmrg *) new_libs="$deplib $new_libs" ;; 3094266e564dSmrg esac 3095266e564dSmrg ;; 3096266e564dSmrg esac 3097266e564dSmrg ;; 3098266e564dSmrg esac 3099266e564dSmrg done 3100266e564dSmrg tmp_libs= 3101266e564dSmrg for deplib in $new_libs; do 3102266e564dSmrg case $deplib in 3103266e564dSmrg -L*) 3104266e564dSmrg case " $tmp_libs " in 3105266e564dSmrg *" $deplib "*) ;; 3106266e564dSmrg *) tmp_libs="$tmp_libs $deplib" ;; 3107266e564dSmrg esac 3108266e564dSmrg ;; 3109266e564dSmrg *) tmp_libs="$tmp_libs $deplib" ;; 3110266e564dSmrg esac 3111266e564dSmrg done 3112266e564dSmrg eval $var=\"$tmp_libs\" 3113266e564dSmrg done # for var 3114266e564dSmrg fi 3115266e564dSmrg # Last step: remove runtime libs from dependency_libs 3116266e564dSmrg # (they stay in deplibs) 3117266e564dSmrg tmp_libs= 3118266e564dSmrg for i in $dependency_libs ; do 3119266e564dSmrg case " $predeps $postdeps $compiler_lib_search_path " in 3120266e564dSmrg *" $i "*) 3121266e564dSmrg i="" 3122266e564dSmrg ;; 3123266e564dSmrg esac 3124266e564dSmrg if test -n "$i" ; then 3125266e564dSmrg tmp_libs="$tmp_libs $i" 3126266e564dSmrg fi 3127266e564dSmrg done 3128266e564dSmrg dependency_libs=$tmp_libs 3129266e564dSmrg done # for pass 3130266e564dSmrg if test "$linkmode" = prog; then 3131266e564dSmrg dlfiles="$newdlfiles" 3132266e564dSmrg dlprefiles="$newdlprefiles" 3133266e564dSmrg fi 3134266e564dSmrg 3135266e564dSmrg case $linkmode in 3136266e564dSmrg oldlib) 3137c5629e66Smrg case " $deplibs" in 3138c5629e66Smrg *\ -l* | *\ -L*) 3139c5629e66Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;; 3140c5629e66Smrg esac 3141266e564dSmrg 3142266e564dSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3143266e564dSmrg $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 3144266e564dSmrg fi 3145266e564dSmrg 3146266e564dSmrg if test -n "$rpath"; then 3147266e564dSmrg $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 3148266e564dSmrg fi 3149266e564dSmrg 3150266e564dSmrg if test -n "$xrpath"; then 3151266e564dSmrg $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 3152266e564dSmrg fi 3153266e564dSmrg 3154266e564dSmrg if test -n "$vinfo"; then 3155266e564dSmrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 3156266e564dSmrg fi 3157266e564dSmrg 3158266e564dSmrg if test -n "$release"; then 3159266e564dSmrg $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 3160266e564dSmrg fi 3161266e564dSmrg 3162266e564dSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 3163266e564dSmrg $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 3164266e564dSmrg fi 3165266e564dSmrg 3166266e564dSmrg # Now set the variables for building old libraries. 3167266e564dSmrg build_libtool_libs=no 3168266e564dSmrg oldlibs="$output" 3169266e564dSmrg objs="$objs$old_deplibs" 3170266e564dSmrg ;; 3171266e564dSmrg 3172266e564dSmrg lib) 3173266e564dSmrg # Make sure we only generate libraries of the form `libNAME.la'. 3174266e564dSmrg case $outputname in 3175266e564dSmrg lib*) 3176266e564dSmrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 3177266e564dSmrg eval shared_ext=\"$shrext_cmds\" 3178266e564dSmrg eval libname=\"$libname_spec\" 3179266e564dSmrg ;; 3180266e564dSmrg *) 3181266e564dSmrg if test "$module" = no; then 3182266e564dSmrg $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 3183266e564dSmrg $echo "$help" 1>&2 3184266e564dSmrg exit $EXIT_FAILURE 3185266e564dSmrg fi 3186266e564dSmrg if test "$need_lib_prefix" != no; then 3187266e564dSmrg # Add the "lib" prefix for modules if required 3188266e564dSmrg name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3189266e564dSmrg eval shared_ext=\"$shrext_cmds\" 3190266e564dSmrg eval libname=\"$libname_spec\" 3191266e564dSmrg else 3192266e564dSmrg libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` 3193266e564dSmrg fi 3194266e564dSmrg ;; 3195266e564dSmrg esac 3196266e564dSmrg 3197266e564dSmrg if test -n "$objs"; then 3198266e564dSmrg if test "$deplibs_check_method" != pass_all; then 3199266e564dSmrg $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 3200266e564dSmrg exit $EXIT_FAILURE 3201266e564dSmrg else 3202266e564dSmrg $echo 3203266e564dSmrg $echo "*** Warning: Linking the shared library $output against the non-libtool" 3204266e564dSmrg $echo "*** objects $objs is not portable!" 3205266e564dSmrg libobjs="$libobjs $objs" 3206266e564dSmrg fi 3207266e564dSmrg fi 3208266e564dSmrg 3209266e564dSmrg if test "$dlself" != no; then 3210266e564dSmrg $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 3211266e564dSmrg fi 3212266e564dSmrg 3213266e564dSmrg set dummy $rpath 3214266e564dSmrg if test "$#" -gt 2; then 3215266e564dSmrg $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 3216266e564dSmrg fi 3217266e564dSmrg install_libdir="$2" 3218266e564dSmrg 3219266e564dSmrg oldlibs= 3220266e564dSmrg if test -z "$rpath"; then 3221266e564dSmrg if test "$build_libtool_libs" = yes; then 3222266e564dSmrg # Building a libtool convenience library. 3223266e564dSmrg # Some compilers have problems with a `.al' extension so 3224266e564dSmrg # convenience libraries should have the same extension an 3225266e564dSmrg # archive normally would. 3226266e564dSmrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 3227266e564dSmrg build_libtool_libs=convenience 3228266e564dSmrg build_old_libs=yes 3229266e564dSmrg fi 3230266e564dSmrg 3231266e564dSmrg if test -n "$vinfo"; then 3232266e564dSmrg $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 3233266e564dSmrg fi 3234266e564dSmrg 3235266e564dSmrg if test -n "$release"; then 3236266e564dSmrg $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 3237266e564dSmrg fi 3238266e564dSmrg else 3239266e564dSmrg 3240266e564dSmrg # Parse the version information argument. 3241266e564dSmrg save_ifs="$IFS"; IFS=':' 3242266e564dSmrg set dummy $vinfo 0 0 0 3243266e564dSmrg IFS="$save_ifs" 3244266e564dSmrg 3245266e564dSmrg if test -n "$8"; then 3246266e564dSmrg $echo "$modename: too many parameters to \`-version-info'" 1>&2 3247266e564dSmrg $echo "$help" 1>&2 3248266e564dSmrg exit $EXIT_FAILURE 3249266e564dSmrg fi 3250266e564dSmrg 3251266e564dSmrg # convert absolute version numbers to libtool ages 3252266e564dSmrg # this retains compatibility with .la files and attempts 3253266e564dSmrg # to make the code below a bit more comprehensible 3254266e564dSmrg 3255266e564dSmrg case $vinfo_number in 3256266e564dSmrg yes) 3257266e564dSmrg number_major="$2" 3258266e564dSmrg number_minor="$3" 3259266e564dSmrg number_revision="$4" 3260266e564dSmrg # 3261266e564dSmrg # There are really only two kinds -- those that 3262266e564dSmrg # use the current revision as the major version 3263266e564dSmrg # and those that subtract age and use age as 3264266e564dSmrg # a minor version. But, then there is irix 3265266e564dSmrg # which has an extra 1 added just for fun 3266266e564dSmrg # 3267266e564dSmrg case $version_type in 3268c5629e66Smrg darwin|linux|osf|windows|none) 3269266e564dSmrg current=`expr $number_major + $number_minor` 3270266e564dSmrg age="$number_minor" 3271266e564dSmrg revision="$number_revision" 3272266e564dSmrg ;; 3273266e564dSmrg freebsd-aout|freebsd-elf|sunos) 3274266e564dSmrg current="$number_major" 3275266e564dSmrg revision="$number_minor" 3276266e564dSmrg age="0" 3277266e564dSmrg ;; 3278266e564dSmrg irix|nonstopux) 3279c5629e66Smrg current=`expr $number_major + $number_minor` 3280266e564dSmrg age="$number_minor" 3281266e564dSmrg revision="$number_minor" 3282c5629e66Smrg lt_irix_increment=no 3283266e564dSmrg ;; 3284266e564dSmrg esac 3285266e564dSmrg ;; 3286266e564dSmrg no) 3287266e564dSmrg current="$2" 3288266e564dSmrg revision="$3" 3289266e564dSmrg age="$4" 3290266e564dSmrg ;; 3291266e564dSmrg esac 3292266e564dSmrg 3293266e564dSmrg # Check that each of the things are valid numbers. 3294266e564dSmrg case $current in 3295266e564dSmrg 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]) ;; 3296266e564dSmrg *) 3297266e564dSmrg $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 3298266e564dSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3299266e564dSmrg exit $EXIT_FAILURE 3300266e564dSmrg ;; 3301266e564dSmrg esac 3302266e564dSmrg 3303266e564dSmrg case $revision in 3304266e564dSmrg 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]) ;; 3305266e564dSmrg *) 3306266e564dSmrg $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 3307266e564dSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3308266e564dSmrg exit $EXIT_FAILURE 3309266e564dSmrg ;; 3310266e564dSmrg esac 3311266e564dSmrg 3312266e564dSmrg case $age in 3313266e564dSmrg 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]) ;; 3314266e564dSmrg *) 3315266e564dSmrg $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 3316266e564dSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3317266e564dSmrg exit $EXIT_FAILURE 3318266e564dSmrg ;; 3319266e564dSmrg esac 3320266e564dSmrg 3321266e564dSmrg if test "$age" -gt "$current"; then 3322266e564dSmrg $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 3323266e564dSmrg $echo "$modename: \`$vinfo' is not valid version information" 1>&2 3324266e564dSmrg exit $EXIT_FAILURE 3325266e564dSmrg fi 3326266e564dSmrg 3327266e564dSmrg # Calculate the version variables. 3328266e564dSmrg major= 3329266e564dSmrg versuffix= 3330266e564dSmrg verstring= 3331266e564dSmrg case $version_type in 3332266e564dSmrg none) ;; 3333266e564dSmrg 3334266e564dSmrg darwin) 3335266e564dSmrg # Like Linux, but with the current version available in 3336266e564dSmrg # verstring for coding it into the library header 3337266e564dSmrg major=.`expr $current - $age` 3338266e564dSmrg versuffix="$major.$age.$revision" 3339266e564dSmrg # Darwin ld doesn't like 0 for these options... 3340266e564dSmrg minor_current=`expr $current + 1` 3341c5629e66Smrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 3342c5629e66Smrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 3343266e564dSmrg ;; 3344266e564dSmrg 3345266e564dSmrg freebsd-aout) 3346266e564dSmrg major=".$current" 3347266e564dSmrg versuffix=".$current.$revision"; 3348266e564dSmrg ;; 3349266e564dSmrg 3350266e564dSmrg freebsd-elf) 3351266e564dSmrg major=".$current" 3352266e564dSmrg versuffix=".$current"; 3353266e564dSmrg ;; 3354266e564dSmrg 3355266e564dSmrg irix | nonstopux) 3356c5629e66Smrg if test "X$lt_irix_increment" = "Xno"; then 3357c5629e66Smrg major=`expr $current - $age` 3358c5629e66Smrg else 3359c5629e66Smrg major=`expr $current - $age + 1` 3360c5629e66Smrg fi 3361266e564dSmrg case $version_type in 3362266e564dSmrg nonstopux) verstring_prefix=nonstopux ;; 3363266e564dSmrg *) verstring_prefix=sgi ;; 3364266e564dSmrg esac 3365266e564dSmrg verstring="$verstring_prefix$major.$revision" 3366266e564dSmrg 3367266e564dSmrg # Add in all the interfaces that we are compatible with. 3368266e564dSmrg loop=$revision 3369266e564dSmrg while test "$loop" -ne 0; do 3370266e564dSmrg iface=`expr $revision - $loop` 3371266e564dSmrg loop=`expr $loop - 1` 3372266e564dSmrg verstring="$verstring_prefix$major.$iface:$verstring" 3373266e564dSmrg done 3374266e564dSmrg 3375266e564dSmrg # Before this point, $major must not contain `.'. 3376266e564dSmrg major=.$major 3377266e564dSmrg versuffix="$major.$revision" 3378266e564dSmrg ;; 3379266e564dSmrg 3380266e564dSmrg linux) 3381266e564dSmrg major=.`expr $current - $age` 3382266e564dSmrg versuffix="$major.$age.$revision" 3383266e564dSmrg ;; 3384266e564dSmrg 3385266e564dSmrg osf) 3386266e564dSmrg major=.`expr $current - $age` 3387266e564dSmrg versuffix=".$current.$age.$revision" 3388266e564dSmrg verstring="$current.$age.$revision" 3389266e564dSmrg 3390266e564dSmrg # Add in all the interfaces that we are compatible with. 3391266e564dSmrg loop=$age 3392266e564dSmrg while test "$loop" -ne 0; do 3393266e564dSmrg iface=`expr $current - $loop` 3394266e564dSmrg loop=`expr $loop - 1` 3395266e564dSmrg verstring="$verstring:${iface}.0" 3396266e564dSmrg done 3397266e564dSmrg 3398266e564dSmrg # Make executables depend on our current version. 3399266e564dSmrg verstring="$verstring:${current}.0" 3400266e564dSmrg ;; 3401266e564dSmrg 3402266e564dSmrg sunos) 3403266e564dSmrg major=".$current" 3404266e564dSmrg versuffix=".$current.$revision" 3405266e564dSmrg ;; 3406266e564dSmrg 3407266e564dSmrg windows) 3408266e564dSmrg # Use '-' rather than '.', since we only want one 3409266e564dSmrg # extension on DOS 8.3 filesystems. 3410266e564dSmrg major=`expr $current - $age` 3411266e564dSmrg versuffix="-$major" 3412266e564dSmrg ;; 3413266e564dSmrg 3414266e564dSmrg *) 3415266e564dSmrg $echo "$modename: unknown library version type \`$version_type'" 1>&2 3416266e564dSmrg $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 3417266e564dSmrg exit $EXIT_FAILURE 3418266e564dSmrg ;; 3419266e564dSmrg esac 3420266e564dSmrg 3421266e564dSmrg # Clear the version info if we defaulted, and they specified a release. 3422266e564dSmrg if test -z "$vinfo" && test -n "$release"; then 3423266e564dSmrg major= 3424266e564dSmrg case $version_type in 3425266e564dSmrg darwin) 3426266e564dSmrg # we can't check for "0.0" in archive_cmds due to quoting 3427266e564dSmrg # problems, so we reset it completely 3428266e564dSmrg verstring= 3429266e564dSmrg ;; 3430266e564dSmrg *) 3431266e564dSmrg verstring="0.0" 3432266e564dSmrg ;; 3433266e564dSmrg esac 3434266e564dSmrg if test "$need_version" = no; then 3435266e564dSmrg versuffix= 3436266e564dSmrg else 3437266e564dSmrg versuffix=".0.0" 3438266e564dSmrg fi 3439266e564dSmrg fi 3440266e564dSmrg 3441266e564dSmrg # Remove version info from name if versioning should be avoided 3442266e564dSmrg if test "$avoid_version" = yes && test "$need_version" = no; then 3443266e564dSmrg major= 3444266e564dSmrg versuffix= 3445266e564dSmrg verstring="" 3446266e564dSmrg fi 3447266e564dSmrg 3448266e564dSmrg # Check to see if the archive will have undefined symbols. 3449266e564dSmrg if test "$allow_undefined" = yes; then 3450266e564dSmrg if test "$allow_undefined_flag" = unsupported; then 3451266e564dSmrg $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 3452266e564dSmrg build_libtool_libs=no 3453266e564dSmrg build_old_libs=yes 3454266e564dSmrg fi 3455266e564dSmrg else 3456266e564dSmrg # Don't allow undefined symbols. 3457266e564dSmrg allow_undefined_flag="$no_undefined_flag" 3458266e564dSmrg fi 3459266e564dSmrg fi 3460266e564dSmrg 3461266e564dSmrg if test "$mode" != relink; then 3462266e564dSmrg # Remove our outputs, but don't remove object files since they 3463266e564dSmrg # may have been created when compiling PIC objects. 3464266e564dSmrg removelist= 3465266e564dSmrg tempremovelist=`$echo "$output_objdir/*"` 3466266e564dSmrg for p in $tempremovelist; do 3467266e564dSmrg case $p in 3468266e564dSmrg *.$objext) 3469266e564dSmrg ;; 3470266e564dSmrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 3471266e564dSmrg if test "X$precious_files_regex" != "X"; then 3472266e564dSmrg if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 3473266e564dSmrg then 3474266e564dSmrg continue 3475266e564dSmrg fi 3476266e564dSmrg fi 3477266e564dSmrg removelist="$removelist $p" 3478266e564dSmrg ;; 3479266e564dSmrg *) ;; 3480266e564dSmrg esac 3481266e564dSmrg done 3482266e564dSmrg if test -n "$removelist"; then 3483266e564dSmrg $show "${rm}r $removelist" 3484266e564dSmrg $run ${rm}r $removelist 3485266e564dSmrg fi 3486266e564dSmrg fi 3487266e564dSmrg 3488266e564dSmrg # Now set the variables for building old libraries. 3489266e564dSmrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 3490266e564dSmrg oldlibs="$oldlibs $output_objdir/$libname.$libext" 3491266e564dSmrg 3492266e564dSmrg # Transform .lo files to .o files. 3493266e564dSmrg oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` 3494266e564dSmrg fi 3495266e564dSmrg 3496266e564dSmrg # Eliminate all temporary directories. 3497c5629e66Smrg #for path in $notinst_path; do 3498c5629e66Smrg # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` 3499c5629e66Smrg # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` 3500c5629e66Smrg # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` 3501c5629e66Smrg #done 3502266e564dSmrg 3503266e564dSmrg if test -n "$xrpath"; then 3504266e564dSmrg # If the user specified any rpath flags, then add them. 3505266e564dSmrg temp_xrpath= 3506266e564dSmrg for libdir in $xrpath; do 3507266e564dSmrg temp_xrpath="$temp_xrpath -R$libdir" 3508266e564dSmrg case "$finalize_rpath " in 3509266e564dSmrg *" $libdir "*) ;; 3510266e564dSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 3511266e564dSmrg esac 3512266e564dSmrg done 3513266e564dSmrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 3514266e564dSmrg dependency_libs="$temp_xrpath $dependency_libs" 3515266e564dSmrg fi 3516266e564dSmrg fi 3517266e564dSmrg 3518266e564dSmrg # Make sure dlfiles contains only unique files that won't be dlpreopened 3519266e564dSmrg old_dlfiles="$dlfiles" 3520266e564dSmrg dlfiles= 3521266e564dSmrg for lib in $old_dlfiles; do 3522266e564dSmrg case " $dlprefiles $dlfiles " in 3523266e564dSmrg *" $lib "*) ;; 3524266e564dSmrg *) dlfiles="$dlfiles $lib" ;; 3525266e564dSmrg esac 3526266e564dSmrg done 3527266e564dSmrg 3528266e564dSmrg # Make sure dlprefiles contains only unique files 3529266e564dSmrg old_dlprefiles="$dlprefiles" 3530266e564dSmrg dlprefiles= 3531266e564dSmrg for lib in $old_dlprefiles; do 3532266e564dSmrg case "$dlprefiles " in 3533266e564dSmrg *" $lib "*) ;; 3534266e564dSmrg *) dlprefiles="$dlprefiles $lib" ;; 3535266e564dSmrg esac 3536266e564dSmrg done 3537266e564dSmrg 3538266e564dSmrg if test "$build_libtool_libs" = yes; then 3539266e564dSmrg if test -n "$rpath"; then 3540266e564dSmrg case $host in 3541266e564dSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) 3542266e564dSmrg # these systems don't actually have a c library (as such)! 3543266e564dSmrg ;; 3544266e564dSmrg *-*-rhapsody* | *-*-darwin1.[012]) 3545266e564dSmrg # Rhapsody C library is in the System framework 3546266e564dSmrg deplibs="$deplibs -framework System" 3547266e564dSmrg ;; 3548266e564dSmrg *-*-netbsd*) 3549266e564dSmrg # Don't link with libc until the a.out ld.so is fixed. 3550266e564dSmrg ;; 3551266e564dSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 3552266e564dSmrg # Do not include libc due to us having libc/libc_r. 3553266e564dSmrg ;; 3554266e564dSmrg *-*-sco3.2v5* | *-*-sco5v6*) 3555266e564dSmrg # Causes problems with __ctype 3556266e564dSmrg ;; 3557266e564dSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 3558266e564dSmrg # Compiler inserts libc in the correct place for threads to work 3559266e564dSmrg ;; 3560266e564dSmrg *) 3561266e564dSmrg # Add libc to deplibs on all other systems if necessary. 3562266e564dSmrg if test "$build_libtool_need_lc" = "yes"; then 3563266e564dSmrg deplibs="$deplibs -lc" 3564266e564dSmrg fi 3565266e564dSmrg ;; 3566266e564dSmrg esac 3567266e564dSmrg fi 3568266e564dSmrg 3569266e564dSmrg # Transform deplibs into only deplibs that can be linked in shared. 3570266e564dSmrg name_save=$name 3571266e564dSmrg libname_save=$libname 3572266e564dSmrg release_save=$release 3573266e564dSmrg versuffix_save=$versuffix 3574266e564dSmrg major_save=$major 3575266e564dSmrg # I'm not sure if I'm treating the release correctly. I think 3576266e564dSmrg # release should show up in the -l (ie -lgmp5) so we don't want to 3577266e564dSmrg # add it in twice. Is that correct? 3578266e564dSmrg release="" 3579266e564dSmrg versuffix="" 3580266e564dSmrg major="" 3581266e564dSmrg newdeplibs= 3582266e564dSmrg droppeddeps=no 3583266e564dSmrg case $deplibs_check_method in 3584266e564dSmrg pass_all) 3585266e564dSmrg # Don't check for shared/static. Everything works. 3586266e564dSmrg # This might be a little naive. We might want to check 3587266e564dSmrg # whether the library exists or not. But this is on 3588266e564dSmrg # osf3 & osf4 and I'm not really sure... Just 3589266e564dSmrg # implementing what was already the behavior. 3590266e564dSmrg newdeplibs=$deplibs 3591266e564dSmrg ;; 3592266e564dSmrg test_compile) 3593266e564dSmrg # This code stresses the "libraries are programs" paradigm to its 3594266e564dSmrg # limits. Maybe even breaks it. We compile a program, linking it 3595266e564dSmrg # against the deplibs as a proxy for the library. Then we can check 3596266e564dSmrg # whether they linked in statically or dynamically with ldd. 3597266e564dSmrg $rm conftest.c 3598266e564dSmrg cat > conftest.c <<EOF 3599266e564dSmrg int main() { return 0; } 3600266e564dSmrgEOF 3601266e564dSmrg $rm conftest 3602c5629e66Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 3603266e564dSmrg ldd_output=`ldd conftest` 3604266e564dSmrg for i in $deplibs; do 3605266e564dSmrg name=`expr $i : '-l\(.*\)'` 3606266e564dSmrg # If $name is empty we are operating on a -L argument. 3607c5629e66Smrg if test "$name" != "" && test "$name" != "0"; then 3608266e564dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3609266e564dSmrg case " $predeps $postdeps " in 3610266e564dSmrg *" $i "*) 3611266e564dSmrg newdeplibs="$newdeplibs $i" 3612266e564dSmrg i="" 3613266e564dSmrg ;; 3614266e564dSmrg esac 3615266e564dSmrg fi 3616266e564dSmrg if test -n "$i" ; then 3617266e564dSmrg libname=`eval \\$echo \"$libname_spec\"` 3618266e564dSmrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3619266e564dSmrg set dummy $deplib_matches 3620266e564dSmrg deplib_match=$2 3621266e564dSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3622266e564dSmrg newdeplibs="$newdeplibs $i" 3623266e564dSmrg else 3624266e564dSmrg droppeddeps=yes 3625266e564dSmrg $echo 3626266e564dSmrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3627266e564dSmrg $echo "*** I have the capability to make that library automatically link in when" 3628266e564dSmrg $echo "*** you link to this library. But I can only do this if you have a" 3629266e564dSmrg $echo "*** shared version of the library, which I believe you do not have" 3630266e564dSmrg $echo "*** because a test_compile did reveal that the linker did not use it for" 3631266e564dSmrg $echo "*** its dynamic dependency list that programs get resolved with at runtime." 3632266e564dSmrg fi 3633266e564dSmrg fi 3634266e564dSmrg else 3635266e564dSmrg newdeplibs="$newdeplibs $i" 3636266e564dSmrg fi 3637266e564dSmrg done 3638266e564dSmrg else 3639266e564dSmrg # Error occurred in the first compile. Let's try to salvage 3640266e564dSmrg # the situation: Compile a separate program for each library. 3641266e564dSmrg for i in $deplibs; do 3642266e564dSmrg name=`expr $i : '-l\(.*\)'` 3643266e564dSmrg # If $name is empty we are operating on a -L argument. 3644266e564dSmrg if test "$name" != "" && test "$name" != "0"; then 3645266e564dSmrg $rm conftest 3646c5629e66Smrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 3647266e564dSmrg ldd_output=`ldd conftest` 3648266e564dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3649266e564dSmrg case " $predeps $postdeps " in 3650266e564dSmrg *" $i "*) 3651266e564dSmrg newdeplibs="$newdeplibs $i" 3652266e564dSmrg i="" 3653266e564dSmrg ;; 3654266e564dSmrg esac 3655266e564dSmrg fi 3656266e564dSmrg if test -n "$i" ; then 3657266e564dSmrg libname=`eval \\$echo \"$libname_spec\"` 3658266e564dSmrg deplib_matches=`eval \\$echo \"$library_names_spec\"` 3659266e564dSmrg set dummy $deplib_matches 3660266e564dSmrg deplib_match=$2 3661266e564dSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 3662266e564dSmrg newdeplibs="$newdeplibs $i" 3663266e564dSmrg else 3664266e564dSmrg droppeddeps=yes 3665266e564dSmrg $echo 3666266e564dSmrg $echo "*** Warning: dynamic linker does not accept needed library $i." 3667266e564dSmrg $echo "*** I have the capability to make that library automatically link in when" 3668266e564dSmrg $echo "*** you link to this library. But I can only do this if you have a" 3669266e564dSmrg $echo "*** shared version of the library, which you do not appear to have" 3670266e564dSmrg $echo "*** because a test_compile did reveal that the linker did not use this one" 3671266e564dSmrg $echo "*** as a dynamic dependency that programs can get resolved with at runtime." 3672266e564dSmrg fi 3673266e564dSmrg fi 3674266e564dSmrg else 3675266e564dSmrg droppeddeps=yes 3676266e564dSmrg $echo 3677266e564dSmrg $echo "*** Warning! Library $i is needed by this library but I was not able to" 3678c5629e66Smrg $echo "*** make it link in! You will probably need to install it or some" 3679266e564dSmrg $echo "*** library that it depends on before this library will be fully" 3680266e564dSmrg $echo "*** functional. Installing it before continuing would be even better." 3681266e564dSmrg fi 3682266e564dSmrg else 3683266e564dSmrg newdeplibs="$newdeplibs $i" 3684266e564dSmrg fi 3685266e564dSmrg done 3686266e564dSmrg fi 3687266e564dSmrg ;; 3688266e564dSmrg file_magic*) 3689266e564dSmrg set dummy $deplibs_check_method 3690266e564dSmrg file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3691266e564dSmrg for a_deplib in $deplibs; do 3692266e564dSmrg name=`expr $a_deplib : '-l\(.*\)'` 3693266e564dSmrg # If $name is empty we are operating on a -L argument. 3694266e564dSmrg if test "$name" != "" && test "$name" != "0"; then 3695266e564dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3696266e564dSmrg case " $predeps $postdeps " in 3697266e564dSmrg *" $a_deplib "*) 3698266e564dSmrg newdeplibs="$newdeplibs $a_deplib" 3699266e564dSmrg a_deplib="" 3700266e564dSmrg ;; 3701266e564dSmrg esac 3702266e564dSmrg fi 3703266e564dSmrg if test -n "$a_deplib" ; then 3704266e564dSmrg libname=`eval \\$echo \"$libname_spec\"` 3705266e564dSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3706266e564dSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3707266e564dSmrg for potent_lib in $potential_libs; do 3708266e564dSmrg # Follow soft links. 3709266e564dSmrg if ls -lLd "$potent_lib" 2>/dev/null \ 3710266e564dSmrg | grep " -> " >/dev/null; then 3711266e564dSmrg continue 3712266e564dSmrg fi 3713266e564dSmrg # The statement above tries to avoid entering an 3714266e564dSmrg # endless loop below, in case of cyclic links. 3715266e564dSmrg # We might still enter an endless loop, since a link 3716266e564dSmrg # loop can be closed while we follow links, 3717266e564dSmrg # but so what? 3718266e564dSmrg potlib="$potent_lib" 3719266e564dSmrg while test -h "$potlib" 2>/dev/null; do 3720266e564dSmrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 3721266e564dSmrg case $potliblink in 3722266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 3723266e564dSmrg *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; 3724266e564dSmrg esac 3725266e564dSmrg done 3726266e564dSmrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ 3727266e564dSmrg | ${SED} 10q \ 3728266e564dSmrg | $EGREP "$file_magic_regex" > /dev/null; then 3729266e564dSmrg newdeplibs="$newdeplibs $a_deplib" 3730266e564dSmrg a_deplib="" 3731266e564dSmrg break 2 3732266e564dSmrg fi 3733266e564dSmrg done 3734266e564dSmrg done 3735266e564dSmrg fi 3736266e564dSmrg if test -n "$a_deplib" ; then 3737266e564dSmrg droppeddeps=yes 3738266e564dSmrg $echo 3739266e564dSmrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3740266e564dSmrg $echo "*** I have the capability to make that library automatically link in when" 3741266e564dSmrg $echo "*** you link to this library. But I can only do this if you have a" 3742266e564dSmrg $echo "*** shared version of the library, which you do not appear to have" 3743266e564dSmrg $echo "*** because I did check the linker path looking for a file starting" 3744266e564dSmrg if test -z "$potlib" ; then 3745266e564dSmrg $echo "*** with $libname but no candidates were found. (...for file magic test)" 3746266e564dSmrg else 3747266e564dSmrg $echo "*** with $libname and none of the candidates passed a file format test" 3748266e564dSmrg $echo "*** using a file magic. Last file checked: $potlib" 3749266e564dSmrg fi 3750266e564dSmrg fi 3751266e564dSmrg else 3752266e564dSmrg # Add a -L argument. 3753266e564dSmrg newdeplibs="$newdeplibs $a_deplib" 3754266e564dSmrg fi 3755266e564dSmrg done # Gone through all deplibs. 3756266e564dSmrg ;; 3757266e564dSmrg match_pattern*) 3758266e564dSmrg set dummy $deplibs_check_method 3759266e564dSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` 3760266e564dSmrg for a_deplib in $deplibs; do 3761266e564dSmrg name=`expr $a_deplib : '-l\(.*\)'` 3762266e564dSmrg # If $name is empty we are operating on a -L argument. 3763266e564dSmrg if test -n "$name" && test "$name" != "0"; then 3764266e564dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3765266e564dSmrg case " $predeps $postdeps " in 3766266e564dSmrg *" $a_deplib "*) 3767266e564dSmrg newdeplibs="$newdeplibs $a_deplib" 3768266e564dSmrg a_deplib="" 3769266e564dSmrg ;; 3770266e564dSmrg esac 3771266e564dSmrg fi 3772266e564dSmrg if test -n "$a_deplib" ; then 3773266e564dSmrg libname=`eval \\$echo \"$libname_spec\"` 3774266e564dSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 3775266e564dSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 3776266e564dSmrg for potent_lib in $potential_libs; do 3777266e564dSmrg potlib="$potent_lib" # see symlink-check above in file_magic test 3778266e564dSmrg if eval $echo \"$potent_lib\" 2>/dev/null \ 3779266e564dSmrg | ${SED} 10q \ 3780266e564dSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 3781266e564dSmrg newdeplibs="$newdeplibs $a_deplib" 3782266e564dSmrg a_deplib="" 3783266e564dSmrg break 2 3784266e564dSmrg fi 3785266e564dSmrg done 3786266e564dSmrg done 3787266e564dSmrg fi 3788266e564dSmrg if test -n "$a_deplib" ; then 3789266e564dSmrg droppeddeps=yes 3790266e564dSmrg $echo 3791266e564dSmrg $echo "*** Warning: linker path does not have real file for library $a_deplib." 3792266e564dSmrg $echo "*** I have the capability to make that library automatically link in when" 3793266e564dSmrg $echo "*** you link to this library. But I can only do this if you have a" 3794266e564dSmrg $echo "*** shared version of the library, which you do not appear to have" 3795266e564dSmrg $echo "*** because I did check the linker path looking for a file starting" 3796266e564dSmrg if test -z "$potlib" ; then 3797266e564dSmrg $echo "*** with $libname but no candidates were found. (...for regex pattern test)" 3798266e564dSmrg else 3799266e564dSmrg $echo "*** with $libname and none of the candidates passed a file format test" 3800266e564dSmrg $echo "*** using a regex pattern. Last file checked: $potlib" 3801266e564dSmrg fi 3802266e564dSmrg fi 3803266e564dSmrg else 3804266e564dSmrg # Add a -L argument. 3805266e564dSmrg newdeplibs="$newdeplibs $a_deplib" 3806266e564dSmrg fi 3807266e564dSmrg done # Gone through all deplibs. 3808266e564dSmrg ;; 3809266e564dSmrg none | unknown | *) 3810266e564dSmrg newdeplibs="" 3811266e564dSmrg tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ 3812266e564dSmrg -e 's/ -[LR][^ ]*//g'` 3813266e564dSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 3814266e564dSmrg for i in $predeps $postdeps ; do 3815266e564dSmrg # can't use Xsed below, because $i might contain '/' 3816266e564dSmrg tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` 3817266e564dSmrg done 3818266e564dSmrg fi 3819266e564dSmrg if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ 3820266e564dSmrg | grep . >/dev/null; then 3821266e564dSmrg $echo 3822266e564dSmrg if test "X$deplibs_check_method" = "Xnone"; then 3823266e564dSmrg $echo "*** Warning: inter-library dependencies are not supported in this platform." 3824266e564dSmrg else 3825266e564dSmrg $echo "*** Warning: inter-library dependencies are not known to be supported." 3826266e564dSmrg fi 3827266e564dSmrg $echo "*** All declared inter-library dependencies are being dropped." 3828266e564dSmrg droppeddeps=yes 3829266e564dSmrg fi 3830266e564dSmrg ;; 3831266e564dSmrg esac 3832266e564dSmrg versuffix=$versuffix_save 3833266e564dSmrg major=$major_save 3834266e564dSmrg release=$release_save 3835266e564dSmrg libname=$libname_save 3836266e564dSmrg name=$name_save 3837266e564dSmrg 3838266e564dSmrg case $host in 3839266e564dSmrg *-*-rhapsody* | *-*-darwin1.[012]) 3840266e564dSmrg # On Rhapsody replace the C library is the System framework 3841266e564dSmrg newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` 3842266e564dSmrg ;; 3843266e564dSmrg esac 3844266e564dSmrg 3845266e564dSmrg if test "$droppeddeps" = yes; then 3846266e564dSmrg if test "$module" = yes; then 3847266e564dSmrg $echo 3848266e564dSmrg $echo "*** Warning: libtool could not satisfy all declared inter-library" 3849266e564dSmrg $echo "*** dependencies of module $libname. Therefore, libtool will create" 3850266e564dSmrg $echo "*** a static module, that should work as long as the dlopening" 3851266e564dSmrg $echo "*** application is linked with the -dlopen flag." 3852266e564dSmrg if test -z "$global_symbol_pipe"; then 3853266e564dSmrg $echo 3854266e564dSmrg $echo "*** However, this would only work if libtool was able to extract symbol" 3855266e564dSmrg $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 3856266e564dSmrg $echo "*** not find such a program. So, this module is probably useless." 3857266e564dSmrg $echo "*** \`nm' from GNU binutils and a full rebuild may help." 3858266e564dSmrg fi 3859266e564dSmrg if test "$build_old_libs" = no; then 3860266e564dSmrg oldlibs="$output_objdir/$libname.$libext" 3861266e564dSmrg build_libtool_libs=module 3862266e564dSmrg build_old_libs=yes 3863266e564dSmrg else 3864266e564dSmrg build_libtool_libs=no 3865266e564dSmrg fi 3866266e564dSmrg else 3867266e564dSmrg $echo "*** The inter-library dependencies that have been dropped here will be" 3868266e564dSmrg $echo "*** automatically added whenever a program is linked with this library" 3869266e564dSmrg $echo "*** or is declared to -dlopen it." 3870266e564dSmrg 3871266e564dSmrg if test "$allow_undefined" = no; then 3872266e564dSmrg $echo 3873266e564dSmrg $echo "*** Since this library must not contain undefined symbols," 3874266e564dSmrg $echo "*** because either the platform does not support them or" 3875266e564dSmrg $echo "*** it was explicitly requested with -no-undefined," 3876266e564dSmrg $echo "*** libtool will only create a static version of it." 3877266e564dSmrg if test "$build_old_libs" = no; then 3878266e564dSmrg oldlibs="$output_objdir/$libname.$libext" 3879266e564dSmrg build_libtool_libs=module 3880266e564dSmrg build_old_libs=yes 3881266e564dSmrg else 3882266e564dSmrg build_libtool_libs=no 3883266e564dSmrg fi 3884266e564dSmrg fi 3885266e564dSmrg fi 3886266e564dSmrg fi 3887266e564dSmrg # Done checking deplibs! 3888266e564dSmrg deplibs=$newdeplibs 3889266e564dSmrg fi 3890266e564dSmrg 3891266e564dSmrg 3892266e564dSmrg # move library search paths that coincide with paths to not yet 3893266e564dSmrg # installed libraries to the beginning of the library search list 3894266e564dSmrg new_libs= 3895266e564dSmrg for path in $notinst_path; do 3896266e564dSmrg case " $new_libs " in 3897266e564dSmrg *" -L$path/$objdir "*) ;; 3898266e564dSmrg *) 3899266e564dSmrg case " $deplibs " in 3900266e564dSmrg *" -L$path/$objdir "*) 3901266e564dSmrg new_libs="$new_libs -L$path/$objdir" ;; 3902266e564dSmrg esac 3903266e564dSmrg ;; 3904266e564dSmrg esac 3905266e564dSmrg done 3906266e564dSmrg for deplib in $deplibs; do 3907266e564dSmrg case $deplib in 3908266e564dSmrg -L*) 3909266e564dSmrg case " $new_libs " in 3910266e564dSmrg *" $deplib "*) ;; 3911266e564dSmrg *) new_libs="$new_libs $deplib" ;; 3912266e564dSmrg esac 3913266e564dSmrg ;; 3914266e564dSmrg *) new_libs="$new_libs $deplib" ;; 3915266e564dSmrg esac 3916266e564dSmrg done 3917266e564dSmrg deplibs="$new_libs" 3918266e564dSmrg 3919266e564dSmrg 3920266e564dSmrg # All the library-specific variables (install_libdir is set above). 3921266e564dSmrg library_names= 3922266e564dSmrg old_library= 3923266e564dSmrg dlname= 3924266e564dSmrg 3925266e564dSmrg # Test again, we may have decided not to build it any more 3926266e564dSmrg if test "$build_libtool_libs" = yes; then 3927266e564dSmrg if test "$hardcode_into_libs" = yes; then 3928266e564dSmrg # Hardcode the library paths 3929266e564dSmrg hardcode_libdirs= 3930266e564dSmrg dep_rpath= 3931266e564dSmrg rpath="$finalize_rpath" 3932266e564dSmrg test "$mode" != relink && rpath="$compile_rpath$rpath" 3933266e564dSmrg for libdir in $rpath; do 3934266e564dSmrg if test -n "$hardcode_libdir_flag_spec"; then 3935266e564dSmrg if test -n "$hardcode_libdir_separator"; then 3936266e564dSmrg if test -z "$hardcode_libdirs"; then 3937266e564dSmrg hardcode_libdirs="$libdir" 3938266e564dSmrg else 3939266e564dSmrg # Just accumulate the unique libdirs. 3940266e564dSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 3941266e564dSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 3942266e564dSmrg ;; 3943266e564dSmrg *) 3944266e564dSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 3945266e564dSmrg ;; 3946266e564dSmrg esac 3947266e564dSmrg fi 3948266e564dSmrg else 3949266e564dSmrg eval flag=\"$hardcode_libdir_flag_spec\" 3950266e564dSmrg dep_rpath="$dep_rpath $flag" 3951266e564dSmrg fi 3952266e564dSmrg elif test -n "$runpath_var"; then 3953266e564dSmrg case "$perm_rpath " in 3954266e564dSmrg *" $libdir "*) ;; 3955266e564dSmrg *) perm_rpath="$perm_rpath $libdir" ;; 3956266e564dSmrg esac 3957266e564dSmrg fi 3958266e564dSmrg done 3959266e564dSmrg # Substitute the hardcoded libdirs into the rpath. 3960266e564dSmrg if test -n "$hardcode_libdir_separator" && 3961266e564dSmrg test -n "$hardcode_libdirs"; then 3962266e564dSmrg libdir="$hardcode_libdirs" 3963266e564dSmrg if test -n "$hardcode_libdir_flag_spec_ld"; then 3964c5629e66Smrg case $archive_cmds in 3965c5629e66Smrg *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; 3966c5629e66Smrg *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; 3967c5629e66Smrg esac 3968266e564dSmrg else 3969266e564dSmrg eval dep_rpath=\"$hardcode_libdir_flag_spec\" 3970266e564dSmrg fi 3971266e564dSmrg fi 3972266e564dSmrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 3973266e564dSmrg # We should set the runpath_var. 3974266e564dSmrg rpath= 3975266e564dSmrg for dir in $perm_rpath; do 3976266e564dSmrg rpath="$rpath$dir:" 3977266e564dSmrg done 3978266e564dSmrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 3979266e564dSmrg fi 3980266e564dSmrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 3981266e564dSmrg fi 3982266e564dSmrg 3983266e564dSmrg shlibpath="$finalize_shlibpath" 3984266e564dSmrg test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 3985266e564dSmrg if test -n "$shlibpath"; then 3986266e564dSmrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 3987266e564dSmrg fi 3988266e564dSmrg 3989266e564dSmrg # Get the real and link names of the library. 3990266e564dSmrg eval shared_ext=\"$shrext_cmds\" 3991266e564dSmrg eval library_names=\"$library_names_spec\" 3992266e564dSmrg set dummy $library_names 3993266e564dSmrg realname="$2" 3994266e564dSmrg shift; shift 3995266e564dSmrg 3996266e564dSmrg if test -n "$soname_spec"; then 3997266e564dSmrg eval soname=\"$soname_spec\" 3998266e564dSmrg else 3999266e564dSmrg soname="$realname" 4000266e564dSmrg fi 4001266e564dSmrg if test -z "$dlname"; then 4002266e564dSmrg dlname=$soname 4003266e564dSmrg fi 4004266e564dSmrg 4005266e564dSmrg lib="$output_objdir/$realname" 4006266e564dSmrg linknames= 4007266e564dSmrg for link 4008266e564dSmrg do 4009266e564dSmrg linknames="$linknames $link" 4010266e564dSmrg done 4011266e564dSmrg 4012266e564dSmrg # Use standard objects if they are pic 4013266e564dSmrg test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4014266e564dSmrg 4015266e564dSmrg # Prepare the list of exported symbols 4016266e564dSmrg if test -z "$export_symbols"; then 4017266e564dSmrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 4018266e564dSmrg $show "generating symbol list for \`$libname.la'" 4019266e564dSmrg export_symbols="$output_objdir/$libname.exp" 4020266e564dSmrg $run $rm $export_symbols 4021266e564dSmrg cmds=$export_symbols_cmds 4022266e564dSmrg save_ifs="$IFS"; IFS='~' 4023266e564dSmrg for cmd in $cmds; do 4024266e564dSmrg IFS="$save_ifs" 4025266e564dSmrg eval cmd=\"$cmd\" 4026266e564dSmrg if len=`expr "X$cmd" : ".*"` && 4027266e564dSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4028266e564dSmrg $show "$cmd" 4029266e564dSmrg $run eval "$cmd" || exit $? 4030266e564dSmrg skipped_export=false 4031266e564dSmrg else 4032266e564dSmrg # The command line is too long to execute in one step. 4033266e564dSmrg $show "using reloadable object file for export list..." 4034266e564dSmrg skipped_export=: 4035266e564dSmrg # Break out early, otherwise skipped_export may be 4036266e564dSmrg # set to false by a later but shorter cmd. 4037266e564dSmrg break 4038266e564dSmrg fi 4039266e564dSmrg done 4040266e564dSmrg IFS="$save_ifs" 4041266e564dSmrg if test -n "$export_symbols_regex"; then 4042266e564dSmrg $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" 4043266e564dSmrg $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 4044266e564dSmrg $show "$mv \"${export_symbols}T\" \"$export_symbols\"" 4045266e564dSmrg $run eval '$mv "${export_symbols}T" "$export_symbols"' 4046266e564dSmrg fi 4047266e564dSmrg fi 4048266e564dSmrg fi 4049266e564dSmrg 4050266e564dSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 4051266e564dSmrg $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' 4052266e564dSmrg fi 4053266e564dSmrg 4054266e564dSmrg tmp_deplibs= 4055c5629e66Smrg inst_prefix_arg= 4056266e564dSmrg for test_deplib in $deplibs; do 4057266e564dSmrg case " $convenience " in 4058266e564dSmrg *" $test_deplib "*) ;; 4059266e564dSmrg *) 4060c5629e66Smrg if test -n "$inst_prefix_dir" && (echo "$test_deplib" | grep -- "$inst_prefix_dir" >/dev/null); then 4061c5629e66Smrg inst_prefix_arg="$inst_prefix_arg $test_deplib" 4062c5629e66Smrg else 4063c5629e66Smrg tmp_deplibs="$tmp_deplibs $test_deplib" 4064c5629e66Smrg fi 4065266e564dSmrg ;; 4066266e564dSmrg esac 4067266e564dSmrg done 4068266e564dSmrg deplibs="$tmp_deplibs" 4069c5629e66Smrg if test -n "$inst_prefix_arg"; then 4070c5629e66Smrg deplibs="$inst_prefix_arg $deplibs" 4071c5629e66Smrg fi 4072266e564dSmrg 4073266e564dSmrg if test -n "$convenience"; then 4074266e564dSmrg if test -n "$whole_archive_flag_spec"; then 4075266e564dSmrg save_libobjs=$libobjs 4076266e564dSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4077266e564dSmrg else 4078266e564dSmrg gentop="$output_objdir/${outputname}x" 4079266e564dSmrg generated="$generated $gentop" 4080266e564dSmrg 4081266e564dSmrg func_extract_archives $gentop $convenience 4082266e564dSmrg libobjs="$libobjs $func_extract_archives_result" 4083266e564dSmrg fi 4084266e564dSmrg fi 4085266e564dSmrg 4086266e564dSmrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 4087266e564dSmrg eval flag=\"$thread_safe_flag_spec\" 4088266e564dSmrg linker_flags="$linker_flags $flag" 4089266e564dSmrg fi 4090266e564dSmrg 4091266e564dSmrg # Make a backup of the uninstalled library when relinking 4092266e564dSmrg if test "$mode" = relink; then 4093266e564dSmrg $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? 4094266e564dSmrg fi 4095266e564dSmrg 4096266e564dSmrg # Do each of the archive commands. 4097266e564dSmrg if test "$module" = yes && test -n "$module_cmds" ; then 4098266e564dSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4099266e564dSmrg eval test_cmds=\"$module_expsym_cmds\" 4100266e564dSmrg cmds=$module_expsym_cmds 4101266e564dSmrg else 4102266e564dSmrg eval test_cmds=\"$module_cmds\" 4103266e564dSmrg cmds=$module_cmds 4104266e564dSmrg fi 4105266e564dSmrg else 4106266e564dSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4107266e564dSmrg eval test_cmds=\"$archive_expsym_cmds\" 4108266e564dSmrg cmds=$archive_expsym_cmds 4109266e564dSmrg else 4110266e564dSmrg eval test_cmds=\"$archive_cmds\" 4111266e564dSmrg cmds=$archive_cmds 4112266e564dSmrg fi 4113266e564dSmrg fi 4114266e564dSmrg 4115266e564dSmrg if test "X$skipped_export" != "X:" && 4116266e564dSmrg len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4117266e564dSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 4118266e564dSmrg : 4119266e564dSmrg else 4120266e564dSmrg # The command line is too long to link in one step, link piecewise. 4121266e564dSmrg $echo "creating reloadable object files..." 4122266e564dSmrg 4123266e564dSmrg # Save the value of $output and $libobjs because we want to 4124266e564dSmrg # use them later. If we have whole_archive_flag_spec, we 4125266e564dSmrg # want to use save_libobjs as it was before 4126266e564dSmrg # whole_archive_flag_spec was expanded, because we can't 4127266e564dSmrg # assume the linker understands whole_archive_flag_spec. 4128266e564dSmrg # This may have to be revisited, in case too many 4129266e564dSmrg # convenience libraries get linked in and end up exceeding 4130266e564dSmrg # the spec. 4131266e564dSmrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 4132266e564dSmrg save_libobjs=$libobjs 4133266e564dSmrg fi 4134266e564dSmrg save_output=$output 4135266e564dSmrg output_la=`$echo "X$output" | $Xsed -e "$basename"` 4136266e564dSmrg 4137266e564dSmrg # Clear the reloadable object creation command queue and 4138266e564dSmrg # initialize k to one. 4139266e564dSmrg test_cmds= 4140266e564dSmrg concat_cmds= 4141266e564dSmrg objlist= 4142266e564dSmrg delfiles= 4143266e564dSmrg last_robj= 4144266e564dSmrg k=1 4145266e564dSmrg output=$output_objdir/$output_la-${k}.$objext 4146266e564dSmrg # Loop over the list of objects to be linked. 4147266e564dSmrg for obj in $save_libobjs 4148266e564dSmrg do 4149266e564dSmrg eval test_cmds=\"$reload_cmds $objlist $last_robj\" 4150266e564dSmrg if test "X$objlist" = X || 4151266e564dSmrg { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 4152266e564dSmrg test "$len" -le "$max_cmd_len"; }; then 4153266e564dSmrg objlist="$objlist $obj" 4154266e564dSmrg else 4155266e564dSmrg # The command $test_cmds is almost too long, add a 4156266e564dSmrg # command to the queue. 4157266e564dSmrg if test "$k" -eq 1 ; then 4158266e564dSmrg # The first file doesn't have a previous command to add. 4159266e564dSmrg eval concat_cmds=\"$reload_cmds $objlist $last_robj\" 4160266e564dSmrg else 4161266e564dSmrg # All subsequent reloadable object files will link in 4162266e564dSmrg # the last one created. 4163266e564dSmrg eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" 4164266e564dSmrg fi 4165266e564dSmrg last_robj=$output_objdir/$output_la-${k}.$objext 4166266e564dSmrg k=`expr $k + 1` 4167266e564dSmrg output=$output_objdir/$output_la-${k}.$objext 4168266e564dSmrg objlist=$obj 4169266e564dSmrg len=1 4170266e564dSmrg fi 4171266e564dSmrg done 4172266e564dSmrg # Handle the remaining objects by creating one last 4173266e564dSmrg # reloadable object file. All subsequent reloadable object 4174266e564dSmrg # files will link in the last one created. 4175266e564dSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 4176266e564dSmrg eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" 4177266e564dSmrg 4178266e564dSmrg if ${skipped_export-false}; then 4179266e564dSmrg $show "generating symbol list for \`$libname.la'" 4180266e564dSmrg export_symbols="$output_objdir/$libname.exp" 4181266e564dSmrg $run $rm $export_symbols 4182266e564dSmrg libobjs=$output 4183266e564dSmrg # Append the command to create the export file. 4184266e564dSmrg eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" 4185266e564dSmrg fi 4186266e564dSmrg 4187266e564dSmrg # Set up a command to remove the reloadable object files 4188266e564dSmrg # after they are used. 4189266e564dSmrg i=0 4190266e564dSmrg while test "$i" -lt "$k" 4191266e564dSmrg do 4192266e564dSmrg i=`expr $i + 1` 4193266e564dSmrg delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" 4194266e564dSmrg done 4195266e564dSmrg 4196266e564dSmrg $echo "creating a temporary reloadable object file: $output" 4197266e564dSmrg 4198266e564dSmrg # Loop through the commands generated above and execute them. 4199266e564dSmrg save_ifs="$IFS"; IFS='~' 4200266e564dSmrg for cmd in $concat_cmds; do 4201266e564dSmrg IFS="$save_ifs" 4202266e564dSmrg $show "$cmd" 4203266e564dSmrg $run eval "$cmd" || exit $? 4204266e564dSmrg done 4205266e564dSmrg IFS="$save_ifs" 4206266e564dSmrg 4207266e564dSmrg libobjs=$output 4208266e564dSmrg # Restore the value of output. 4209266e564dSmrg output=$save_output 4210266e564dSmrg 4211266e564dSmrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 4212266e564dSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 4213266e564dSmrg fi 4214266e564dSmrg # Expand the library linking commands again to reset the 4215266e564dSmrg # value of $libobjs for piecewise linking. 4216266e564dSmrg 4217266e564dSmrg # Do each of the archive commands. 4218266e564dSmrg if test "$module" = yes && test -n "$module_cmds" ; then 4219266e564dSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 4220266e564dSmrg cmds=$module_expsym_cmds 4221266e564dSmrg else 4222266e564dSmrg cmds=$module_cmds 4223266e564dSmrg fi 4224266e564dSmrg else 4225266e564dSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 4226266e564dSmrg cmds=$archive_expsym_cmds 4227266e564dSmrg else 4228266e564dSmrg cmds=$archive_cmds 4229266e564dSmrg fi 4230266e564dSmrg fi 4231266e564dSmrg 4232266e564dSmrg # Append the command to remove the reloadable object files 4233266e564dSmrg # to the just-reset $cmds. 4234266e564dSmrg eval cmds=\"\$cmds~\$rm $delfiles\" 4235266e564dSmrg fi 4236266e564dSmrg save_ifs="$IFS"; IFS='~' 4237266e564dSmrg for cmd in $cmds; do 4238266e564dSmrg IFS="$save_ifs" 4239266e564dSmrg eval cmd=\"$cmd\" 4240266e564dSmrg $show "$cmd" 4241266e564dSmrg $run eval "$cmd" || { 4242266e564dSmrg lt_exit=$? 4243266e564dSmrg 4244266e564dSmrg # Restore the uninstalled library and exit 4245266e564dSmrg if test "$mode" = relink; then 4246266e564dSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 4247266e564dSmrg fi 4248266e564dSmrg 4249266e564dSmrg exit $lt_exit 4250266e564dSmrg } 4251266e564dSmrg done 4252266e564dSmrg IFS="$save_ifs" 4253266e564dSmrg 4254266e564dSmrg # Restore the uninstalled library and exit 4255266e564dSmrg if test "$mode" = relink; then 4256266e564dSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? 4257266e564dSmrg 4258266e564dSmrg if test -n "$convenience"; then 4259266e564dSmrg if test -z "$whole_archive_flag_spec"; then 4260266e564dSmrg $show "${rm}r $gentop" 4261266e564dSmrg $run ${rm}r "$gentop" 4262266e564dSmrg fi 4263266e564dSmrg fi 4264266e564dSmrg 4265266e564dSmrg exit $EXIT_SUCCESS 4266266e564dSmrg fi 4267266e564dSmrg 4268266e564dSmrg # Create links to the real library. 4269266e564dSmrg for linkname in $linknames; do 4270266e564dSmrg if test "$realname" != "$linkname"; then 4271266e564dSmrg $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" 4272266e564dSmrg $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? 4273266e564dSmrg fi 4274266e564dSmrg done 4275266e564dSmrg 4276266e564dSmrg # If -module or -export-dynamic was specified, set the dlname. 4277266e564dSmrg if test "$module" = yes || test "$export_dynamic" = yes; then 4278266e564dSmrg # On all known operating systems, these are identical. 4279266e564dSmrg dlname="$soname" 4280266e564dSmrg fi 4281266e564dSmrg fi 4282266e564dSmrg ;; 4283266e564dSmrg 4284266e564dSmrg obj) 4285c5629e66Smrg case " $deplibs" in 4286c5629e66Smrg *\ -l* | *\ -L*) 4287c5629e66Smrg $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;; 4288c5629e66Smrg esac 4289266e564dSmrg 4290266e564dSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4291266e564dSmrg $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 4292266e564dSmrg fi 4293266e564dSmrg 4294266e564dSmrg if test -n "$rpath"; then 4295266e564dSmrg $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 4296266e564dSmrg fi 4297266e564dSmrg 4298266e564dSmrg if test -n "$xrpath"; then 4299266e564dSmrg $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 4300266e564dSmrg fi 4301266e564dSmrg 4302266e564dSmrg if test -n "$vinfo"; then 4303266e564dSmrg $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 4304266e564dSmrg fi 4305266e564dSmrg 4306266e564dSmrg if test -n "$release"; then 4307266e564dSmrg $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 4308266e564dSmrg fi 4309266e564dSmrg 4310266e564dSmrg case $output in 4311266e564dSmrg *.lo) 4312266e564dSmrg if test -n "$objs$old_deplibs"; then 4313266e564dSmrg $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 4314266e564dSmrg exit $EXIT_FAILURE 4315266e564dSmrg fi 4316266e564dSmrg libobj="$output" 4317266e564dSmrg obj=`$echo "X$output" | $Xsed -e "$lo2o"` 4318266e564dSmrg ;; 4319266e564dSmrg *) 4320266e564dSmrg libobj= 4321266e564dSmrg obj="$output" 4322266e564dSmrg ;; 4323266e564dSmrg esac 4324266e564dSmrg 4325266e564dSmrg # Delete the old objects. 4326266e564dSmrg $run $rm $obj $libobj 4327266e564dSmrg 4328266e564dSmrg # Objects from convenience libraries. This assumes 4329266e564dSmrg # single-version convenience libraries. Whenever we create 4330266e564dSmrg # different ones for PIC/non-PIC, this we'll have to duplicate 4331266e564dSmrg # the extraction. 4332266e564dSmrg reload_conv_objs= 4333266e564dSmrg gentop= 4334266e564dSmrg # reload_cmds runs $LD directly, so let us get rid of 4335c5629e66Smrg # -Wl from whole_archive_flag_spec and hope we can get by with 4336c5629e66Smrg # turning comma into space.. 4337266e564dSmrg wl= 4338266e564dSmrg 4339266e564dSmrg if test -n "$convenience"; then 4340266e564dSmrg if test -n "$whole_archive_flag_spec"; then 4341c5629e66Smrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 4342c5629e66Smrg reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` 4343266e564dSmrg else 4344266e564dSmrg gentop="$output_objdir/${obj}x" 4345266e564dSmrg generated="$generated $gentop" 4346266e564dSmrg 4347266e564dSmrg func_extract_archives $gentop $convenience 4348266e564dSmrg reload_conv_objs="$reload_objs $func_extract_archives_result" 4349266e564dSmrg fi 4350266e564dSmrg fi 4351266e564dSmrg 4352266e564dSmrg # Create the old-style object. 4353266e564dSmrg 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 4354266e564dSmrg 4355266e564dSmrg output="$obj" 4356266e564dSmrg cmds=$reload_cmds 4357266e564dSmrg save_ifs="$IFS"; IFS='~' 4358266e564dSmrg for cmd in $cmds; do 4359266e564dSmrg IFS="$save_ifs" 4360266e564dSmrg eval cmd=\"$cmd\" 4361266e564dSmrg $show "$cmd" 4362266e564dSmrg $run eval "$cmd" || exit $? 4363266e564dSmrg done 4364266e564dSmrg IFS="$save_ifs" 4365266e564dSmrg 4366266e564dSmrg # Exit if we aren't doing a library object file. 4367266e564dSmrg if test -z "$libobj"; then 4368266e564dSmrg if test -n "$gentop"; then 4369266e564dSmrg $show "${rm}r $gentop" 4370266e564dSmrg $run ${rm}r $gentop 4371266e564dSmrg fi 4372266e564dSmrg 4373266e564dSmrg exit $EXIT_SUCCESS 4374266e564dSmrg fi 4375266e564dSmrg 4376266e564dSmrg if test "$build_libtool_libs" != yes; then 4377266e564dSmrg if test -n "$gentop"; then 4378266e564dSmrg $show "${rm}r $gentop" 4379266e564dSmrg $run ${rm}r $gentop 4380266e564dSmrg fi 4381266e564dSmrg 4382266e564dSmrg # Create an invalid libtool object if no PIC, so that we don't 4383266e564dSmrg # accidentally link it into a program. 4384266e564dSmrg # $show "echo timestamp > $libobj" 4385266e564dSmrg # $run eval "echo timestamp > $libobj" || exit $? 4386266e564dSmrg exit $EXIT_SUCCESS 4387266e564dSmrg fi 4388266e564dSmrg 4389266e564dSmrg if test -n "$pic_flag" || test "$pic_mode" != default; then 4390266e564dSmrg # Only do commands if we really have different PIC objects. 4391266e564dSmrg reload_objs="$libobjs $reload_conv_objs" 4392266e564dSmrg output="$libobj" 4393266e564dSmrg cmds=$reload_cmds 4394266e564dSmrg save_ifs="$IFS"; IFS='~' 4395266e564dSmrg for cmd in $cmds; do 4396266e564dSmrg IFS="$save_ifs" 4397266e564dSmrg eval cmd=\"$cmd\" 4398266e564dSmrg $show "$cmd" 4399266e564dSmrg $run eval "$cmd" || exit $? 4400266e564dSmrg done 4401266e564dSmrg IFS="$save_ifs" 4402266e564dSmrg fi 4403266e564dSmrg 4404266e564dSmrg if test -n "$gentop"; then 4405266e564dSmrg $show "${rm}r $gentop" 4406266e564dSmrg $run ${rm}r $gentop 4407266e564dSmrg fi 4408266e564dSmrg 4409266e564dSmrg exit $EXIT_SUCCESS 4410266e564dSmrg ;; 4411266e564dSmrg 4412266e564dSmrg prog) 4413266e564dSmrg case $host in 4414266e564dSmrg *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; 4415266e564dSmrg esac 4416266e564dSmrg if test -n "$vinfo"; then 4417266e564dSmrg $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 4418266e564dSmrg fi 4419266e564dSmrg 4420266e564dSmrg if test -n "$release"; then 4421266e564dSmrg $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 4422266e564dSmrg fi 4423266e564dSmrg 4424266e564dSmrg if test "$preload" = yes; then 4425266e564dSmrg if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && 4426266e564dSmrg test "$dlopen_self_static" = unknown; then 4427266e564dSmrg $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." 4428266e564dSmrg fi 4429266e564dSmrg fi 4430266e564dSmrg 4431266e564dSmrg case $host in 4432266e564dSmrg *-*-rhapsody* | *-*-darwin1.[012]) 4433266e564dSmrg # On Rhapsody replace the C library is the System framework 4434266e564dSmrg compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4435266e564dSmrg finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` 4436266e564dSmrg ;; 4437266e564dSmrg esac 4438266e564dSmrg 4439266e564dSmrg case $host in 4440266e564dSmrg *darwin*) 4441266e564dSmrg # Don't allow lazy linking, it breaks C++ global constructors 4442266e564dSmrg if test "$tagname" = CXX ; then 4443266e564dSmrg compile_command="$compile_command ${wl}-bind_at_load" 4444266e564dSmrg finalize_command="$finalize_command ${wl}-bind_at_load" 4445266e564dSmrg fi 4446266e564dSmrg ;; 4447266e564dSmrg esac 4448266e564dSmrg 4449266e564dSmrg 4450266e564dSmrg # move library search paths that coincide with paths to not yet 4451266e564dSmrg # installed libraries to the beginning of the library search list 4452266e564dSmrg new_libs= 4453266e564dSmrg for path in $notinst_path; do 4454266e564dSmrg case " $new_libs " in 4455266e564dSmrg *" -L$path/$objdir "*) ;; 4456266e564dSmrg *) 4457266e564dSmrg case " $compile_deplibs " in 4458266e564dSmrg *" -L$path/$objdir "*) 4459266e564dSmrg new_libs="$new_libs -L$path/$objdir" ;; 4460266e564dSmrg esac 4461266e564dSmrg ;; 4462266e564dSmrg esac 4463266e564dSmrg done 4464266e564dSmrg for deplib in $compile_deplibs; do 4465266e564dSmrg case $deplib in 4466266e564dSmrg -L*) 4467266e564dSmrg case " $new_libs " in 4468266e564dSmrg *" $deplib "*) ;; 4469266e564dSmrg *) new_libs="$new_libs $deplib" ;; 4470266e564dSmrg esac 4471266e564dSmrg ;; 4472266e564dSmrg *) new_libs="$new_libs $deplib" ;; 4473266e564dSmrg esac 4474266e564dSmrg done 4475266e564dSmrg compile_deplibs="$new_libs" 4476266e564dSmrg 4477266e564dSmrg 4478266e564dSmrg compile_command="$compile_command $compile_deplibs" 4479266e564dSmrg finalize_command="$finalize_command $finalize_deplibs" 4480266e564dSmrg 4481266e564dSmrg if test -n "$rpath$xrpath"; then 4482266e564dSmrg # If the user specified any rpath flags, then add them. 4483266e564dSmrg for libdir in $rpath $xrpath; do 4484266e564dSmrg # This is the magic to use -rpath. 4485266e564dSmrg case "$finalize_rpath " in 4486266e564dSmrg *" $libdir "*) ;; 4487266e564dSmrg *) finalize_rpath="$finalize_rpath $libdir" ;; 4488266e564dSmrg esac 4489266e564dSmrg done 4490266e564dSmrg fi 4491266e564dSmrg 4492266e564dSmrg # Now hardcode the library paths 4493266e564dSmrg rpath= 4494266e564dSmrg hardcode_libdirs= 4495266e564dSmrg for libdir in $compile_rpath $finalize_rpath; do 4496266e564dSmrg if test -n "$hardcode_libdir_flag_spec"; then 4497266e564dSmrg if test -n "$hardcode_libdir_separator"; then 4498266e564dSmrg if test -z "$hardcode_libdirs"; then 4499266e564dSmrg hardcode_libdirs="$libdir" 4500266e564dSmrg else 4501266e564dSmrg # Just accumulate the unique libdirs. 4502266e564dSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4503266e564dSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4504266e564dSmrg ;; 4505266e564dSmrg *) 4506266e564dSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4507266e564dSmrg ;; 4508266e564dSmrg esac 4509266e564dSmrg fi 4510266e564dSmrg else 4511266e564dSmrg eval flag=\"$hardcode_libdir_flag_spec\" 4512266e564dSmrg rpath="$rpath $flag" 4513266e564dSmrg fi 4514266e564dSmrg elif test -n "$runpath_var"; then 4515266e564dSmrg case "$perm_rpath " in 4516266e564dSmrg *" $libdir "*) ;; 4517266e564dSmrg *) perm_rpath="$perm_rpath $libdir" ;; 4518266e564dSmrg esac 4519266e564dSmrg fi 4520266e564dSmrg case $host in 4521266e564dSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) 4522266e564dSmrg testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` 4523266e564dSmrg case :$dllsearchpath: in 4524266e564dSmrg *":$libdir:"*) ;; 4525266e564dSmrg *) dllsearchpath="$dllsearchpath:$libdir";; 4526266e564dSmrg esac 4527266e564dSmrg case :$dllsearchpath: in 4528266e564dSmrg *":$testbindir:"*) ;; 4529266e564dSmrg *) dllsearchpath="$dllsearchpath:$testbindir";; 4530266e564dSmrg esac 4531266e564dSmrg ;; 4532266e564dSmrg esac 4533266e564dSmrg done 4534266e564dSmrg # Substitute the hardcoded libdirs into the rpath. 4535266e564dSmrg if test -n "$hardcode_libdir_separator" && 4536266e564dSmrg test -n "$hardcode_libdirs"; then 4537266e564dSmrg libdir="$hardcode_libdirs" 4538266e564dSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 4539266e564dSmrg fi 4540266e564dSmrg compile_rpath="$rpath" 4541266e564dSmrg 4542266e564dSmrg rpath= 4543266e564dSmrg hardcode_libdirs= 4544266e564dSmrg for libdir in $finalize_rpath; do 4545266e564dSmrg if test -n "$hardcode_libdir_flag_spec"; then 4546266e564dSmrg if test -n "$hardcode_libdir_separator"; then 4547266e564dSmrg if test -z "$hardcode_libdirs"; then 4548266e564dSmrg hardcode_libdirs="$libdir" 4549266e564dSmrg else 4550266e564dSmrg # Just accumulate the unique libdirs. 4551266e564dSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 4552266e564dSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 4553266e564dSmrg ;; 4554266e564dSmrg *) 4555266e564dSmrg hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 4556266e564dSmrg ;; 4557266e564dSmrg esac 4558266e564dSmrg fi 4559266e564dSmrg else 4560266e564dSmrg eval flag=\"$hardcode_libdir_flag_spec\" 4561266e564dSmrg rpath="$rpath $flag" 4562266e564dSmrg fi 4563266e564dSmrg elif test -n "$runpath_var"; then 4564266e564dSmrg case "$finalize_perm_rpath " in 4565266e564dSmrg *" $libdir "*) ;; 4566266e564dSmrg *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 4567266e564dSmrg esac 4568266e564dSmrg fi 4569266e564dSmrg done 4570266e564dSmrg # Substitute the hardcoded libdirs into the rpath. 4571266e564dSmrg if test -n "$hardcode_libdir_separator" && 4572266e564dSmrg test -n "$hardcode_libdirs"; then 4573266e564dSmrg libdir="$hardcode_libdirs" 4574266e564dSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 4575266e564dSmrg fi 4576266e564dSmrg finalize_rpath="$rpath" 4577266e564dSmrg 4578266e564dSmrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 4579266e564dSmrg # Transform all the library objects into standard objects. 4580266e564dSmrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4581266e564dSmrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4582266e564dSmrg fi 4583266e564dSmrg 4584266e564dSmrg dlsyms= 4585266e564dSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 4586266e564dSmrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 4587266e564dSmrg dlsyms="${outputname}S.c" 4588266e564dSmrg else 4589266e564dSmrg $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 4590266e564dSmrg fi 4591266e564dSmrg fi 4592266e564dSmrg 4593266e564dSmrg if test -n "$dlsyms"; then 4594266e564dSmrg case $dlsyms in 4595266e564dSmrg "") ;; 4596266e564dSmrg *.c) 4597266e564dSmrg # Discover the nlist of each of the dlfiles. 4598266e564dSmrg nlist="$output_objdir/${outputname}.nm" 4599266e564dSmrg 4600266e564dSmrg $show "$rm $nlist ${nlist}S ${nlist}T" 4601266e564dSmrg $run $rm "$nlist" "${nlist}S" "${nlist}T" 4602266e564dSmrg 4603266e564dSmrg # Parse the name list into a source file. 4604266e564dSmrg $show "creating $output_objdir/$dlsyms" 4605266e564dSmrg 4606266e564dSmrg test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ 4607266e564dSmrg/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 4608266e564dSmrg/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ 4609266e564dSmrg 4610266e564dSmrg#ifdef __cplusplus 4611266e564dSmrgextern \"C\" { 4612266e564dSmrg#endif 4613266e564dSmrg 4614266e564dSmrg/* Prevent the only kind of declaration conflicts we can make. */ 4615266e564dSmrg#define lt_preloaded_symbols some_other_symbol 4616266e564dSmrg 4617266e564dSmrg/* External symbol declarations for the compiler. */\ 4618266e564dSmrg" 4619266e564dSmrg 4620266e564dSmrg if test "$dlself" = yes; then 4621266e564dSmrg $show "generating symbol list for \`$output'" 4622266e564dSmrg 4623266e564dSmrg test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" 4624266e564dSmrg 4625266e564dSmrg # Add our own program objects to the symbol list. 4626266e564dSmrg progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` 4627266e564dSmrg for arg in $progfiles; do 4628266e564dSmrg $show "extracting global C symbols from \`$arg'" 4629266e564dSmrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4630266e564dSmrg done 4631266e564dSmrg 4632266e564dSmrg if test -n "$exclude_expsyms"; then 4633266e564dSmrg $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 4634266e564dSmrg $run eval '$mv "$nlist"T "$nlist"' 4635266e564dSmrg fi 4636266e564dSmrg 4637266e564dSmrg if test -n "$export_symbols_regex"; then 4638266e564dSmrg $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 4639266e564dSmrg $run eval '$mv "$nlist"T "$nlist"' 4640266e564dSmrg fi 4641266e564dSmrg 4642266e564dSmrg # Prepare the list of exported symbols 4643266e564dSmrg if test -z "$export_symbols"; then 4644266e564dSmrg export_symbols="$output_objdir/$outputname.exp" 4645266e564dSmrg $run $rm $export_symbols 4646266e564dSmrg $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 4647266e564dSmrg case $host in 4648266e564dSmrg *cygwin* | *mingw* ) 4649266e564dSmrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4650266e564dSmrg $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 4651266e564dSmrg ;; 4652266e564dSmrg esac 4653266e564dSmrg else 4654266e564dSmrg $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 4655266e564dSmrg $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 4656266e564dSmrg $run eval 'mv "$nlist"T "$nlist"' 4657266e564dSmrg case $host in 4658266e564dSmrg *cygwin* | *mingw* ) 4659266e564dSmrg $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 4660266e564dSmrg $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 4661266e564dSmrg ;; 4662266e564dSmrg esac 4663266e564dSmrg fi 4664266e564dSmrg fi 4665266e564dSmrg 4666266e564dSmrg for arg in $dlprefiles; do 4667266e564dSmrg $show "extracting global C symbols from \`$arg'" 4668266e564dSmrg name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` 4669266e564dSmrg $run eval '$echo ": $name " >> "$nlist"' 4670266e564dSmrg $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 4671266e564dSmrg done 4672266e564dSmrg 4673266e564dSmrg if test -z "$run"; then 4674266e564dSmrg # Make sure we have at least an empty file. 4675266e564dSmrg test -f "$nlist" || : > "$nlist" 4676266e564dSmrg 4677266e564dSmrg if test -n "$exclude_expsyms"; then 4678266e564dSmrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 4679266e564dSmrg $mv "$nlist"T "$nlist" 4680266e564dSmrg fi 4681266e564dSmrg 4682266e564dSmrg # Try sorting and uniquifying the output. 4683266e564dSmrg if grep -v "^: " < "$nlist" | 4684266e564dSmrg if sort -k 3 </dev/null >/dev/null 2>&1; then 4685266e564dSmrg sort -k 3 4686266e564dSmrg else 4687266e564dSmrg sort +2 4688266e564dSmrg fi | 4689266e564dSmrg uniq > "$nlist"S; then 4690266e564dSmrg : 4691266e564dSmrg else 4692266e564dSmrg grep -v "^: " < "$nlist" > "$nlist"S 4693266e564dSmrg fi 4694266e564dSmrg 4695266e564dSmrg if test -f "$nlist"S; then 4696266e564dSmrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' 4697266e564dSmrg else 4698266e564dSmrg $echo '/* NONE */' >> "$output_objdir/$dlsyms" 4699266e564dSmrg fi 4700266e564dSmrg 4701266e564dSmrg $echo >> "$output_objdir/$dlsyms" "\ 4702266e564dSmrg 4703266e564dSmrg#undef lt_preloaded_symbols 4704266e564dSmrg 4705266e564dSmrg#if defined (__STDC__) && __STDC__ 4706266e564dSmrg# define lt_ptr void * 4707266e564dSmrg#else 4708266e564dSmrg# define lt_ptr char * 4709266e564dSmrg# define const 4710266e564dSmrg#endif 4711266e564dSmrg 4712266e564dSmrg/* The mapping between symbol names and symbols. */ 4713266e564dSmrg" 4714266e564dSmrg 4715266e564dSmrg case $host in 4716266e564dSmrg *cygwin* | *mingw* ) 4717266e564dSmrg $echo >> "$output_objdir/$dlsyms" "\ 4718266e564dSmrg/* DATA imports from DLLs on WIN32 can't be const, because 4719266e564dSmrg runtime relocations are performed -- see ld's documentation 4720266e564dSmrg on pseudo-relocs */ 4721266e564dSmrgstruct { 4722266e564dSmrg" 4723266e564dSmrg ;; 4724266e564dSmrg * ) 4725266e564dSmrg $echo >> "$output_objdir/$dlsyms" "\ 4726266e564dSmrgconst struct { 4727266e564dSmrg" 4728266e564dSmrg ;; 4729266e564dSmrg esac 4730266e564dSmrg 4731266e564dSmrg 4732266e564dSmrg $echo >> "$output_objdir/$dlsyms" "\ 4733266e564dSmrg const char *name; 4734266e564dSmrg lt_ptr address; 4735266e564dSmrg} 4736266e564dSmrglt_preloaded_symbols[] = 4737266e564dSmrg{\ 4738266e564dSmrg" 4739266e564dSmrg 4740266e564dSmrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" 4741266e564dSmrg 4742266e564dSmrg $echo >> "$output_objdir/$dlsyms" "\ 4743266e564dSmrg {0, (lt_ptr) 0} 4744266e564dSmrg}; 4745266e564dSmrg 4746266e564dSmrg/* This works around a problem in FreeBSD linker */ 4747266e564dSmrg#ifdef FREEBSD_WORKAROUND 4748266e564dSmrgstatic const void *lt_preloaded_setup() { 4749266e564dSmrg return lt_preloaded_symbols; 4750266e564dSmrg} 4751266e564dSmrg#endif 4752266e564dSmrg 4753266e564dSmrg#ifdef __cplusplus 4754266e564dSmrg} 4755266e564dSmrg#endif\ 4756266e564dSmrg" 4757266e564dSmrg fi 4758266e564dSmrg 4759266e564dSmrg pic_flag_for_symtable= 4760266e564dSmrg case $host in 4761266e564dSmrg # compiling the symbol table file with pic_flag works around 4762266e564dSmrg # a FreeBSD bug that causes programs to crash when -lm is 4763266e564dSmrg # linked before any other PIC object. But we must not use 4764266e564dSmrg # pic_flag when linking with -static. The problem exists in 4765266e564dSmrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 4766266e564dSmrg *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 4767266e564dSmrg case "$compile_command " in 4768266e564dSmrg *" -static "*) ;; 4769266e564dSmrg *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; 4770266e564dSmrg esac;; 4771266e564dSmrg *-*-hpux*) 4772266e564dSmrg case "$compile_command " in 4773266e564dSmrg *" -static "*) ;; 4774266e564dSmrg *) pic_flag_for_symtable=" $pic_flag";; 4775266e564dSmrg esac 4776266e564dSmrg esac 4777266e564dSmrg 4778266e564dSmrg # Now compile the dynamic symbol file. 4779266e564dSmrg $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" 4780266e564dSmrg $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? 4781266e564dSmrg 4782266e564dSmrg # Clean up the generated files. 4783266e564dSmrg $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" 4784266e564dSmrg $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" 4785266e564dSmrg 4786266e564dSmrg # Transform the symbol file into the correct name. 4787266e564dSmrg case $host in 4788266e564dSmrg *cygwin* | *mingw* ) 4789266e564dSmrg if test -f "$output_objdir/${outputname}.def" ; then 4790c5629e66Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4791c5629e66Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` 4792266e564dSmrg else 4793c5629e66Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4794c5629e66Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4795266e564dSmrg fi 4796266e564dSmrg ;; 4797266e564dSmrg * ) 4798c5629e66Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4799c5629e66Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` 4800266e564dSmrg ;; 4801266e564dSmrg esac 4802266e564dSmrg ;; 4803266e564dSmrg *) 4804266e564dSmrg $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 4805266e564dSmrg exit $EXIT_FAILURE 4806266e564dSmrg ;; 4807266e564dSmrg esac 4808266e564dSmrg else 4809266e564dSmrg # We keep going just in case the user didn't refer to 4810266e564dSmrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 4811266e564dSmrg # really was required. 4812266e564dSmrg 4813266e564dSmrg # Nullify the symbol file. 4814c5629e66Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4815c5629e66Smrg finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` 4816266e564dSmrg fi 4817266e564dSmrg 4818266e564dSmrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 4819266e564dSmrg # Replace the output file specification. 4820c5629e66Smrg compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` 4821266e564dSmrg link_command="$compile_command$compile_rpath" 4822266e564dSmrg 4823266e564dSmrg # We have no uninstalled library dependencies, so finalize right now. 4824266e564dSmrg $show "$link_command" 4825266e564dSmrg $run eval "$link_command" 4826266e564dSmrg exit_status=$? 4827266e564dSmrg 4828266e564dSmrg # Delete the generated files. 4829266e564dSmrg if test -n "$dlsyms"; then 4830266e564dSmrg $show "$rm $output_objdir/${outputname}S.${objext}" 4831266e564dSmrg $run $rm "$output_objdir/${outputname}S.${objext}" 4832266e564dSmrg fi 4833266e564dSmrg 4834266e564dSmrg exit $exit_status 4835266e564dSmrg fi 4836266e564dSmrg 4837266e564dSmrg if test -n "$shlibpath_var"; then 4838266e564dSmrg # We should set the shlibpath_var 4839266e564dSmrg rpath= 4840266e564dSmrg for dir in $temp_rpath; do 4841266e564dSmrg case $dir in 4842266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) 4843266e564dSmrg # Absolute path. 4844266e564dSmrg rpath="$rpath$dir:" 4845266e564dSmrg ;; 4846266e564dSmrg *) 4847266e564dSmrg # Relative path: add a thisdir entry. 4848266e564dSmrg rpath="$rpath\$thisdir/$dir:" 4849266e564dSmrg ;; 4850266e564dSmrg esac 4851266e564dSmrg done 4852266e564dSmrg temp_rpath="$rpath" 4853266e564dSmrg fi 4854266e564dSmrg 4855266e564dSmrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 4856266e564dSmrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 4857266e564dSmrg fi 4858266e564dSmrg if test -n "$finalize_shlibpath"; then 4859266e564dSmrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 4860266e564dSmrg fi 4861266e564dSmrg 4862266e564dSmrg compile_var= 4863266e564dSmrg finalize_var= 4864266e564dSmrg if test -n "$runpath_var"; then 4865266e564dSmrg if test -n "$perm_rpath"; then 4866266e564dSmrg # We should set the runpath_var. 4867266e564dSmrg rpath= 4868266e564dSmrg for dir in $perm_rpath; do 4869266e564dSmrg rpath="$rpath$dir:" 4870266e564dSmrg done 4871266e564dSmrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 4872266e564dSmrg fi 4873266e564dSmrg if test -n "$finalize_perm_rpath"; then 4874266e564dSmrg # We should set the runpath_var. 4875266e564dSmrg rpath= 4876266e564dSmrg for dir in $finalize_perm_rpath; do 4877266e564dSmrg rpath="$rpath$dir:" 4878266e564dSmrg done 4879266e564dSmrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 4880266e564dSmrg fi 4881266e564dSmrg fi 4882266e564dSmrg 4883266e564dSmrg if test "$no_install" = yes; then 4884266e564dSmrg # We don't need to create a wrapper script. 4885266e564dSmrg link_command="$compile_var$compile_command$compile_rpath" 4886266e564dSmrg # Replace the output file specification. 4887266e564dSmrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 4888266e564dSmrg # Delete the old output file. 4889266e564dSmrg $run $rm $output 4890266e564dSmrg # Link the executable and exit 4891266e564dSmrg $show "$link_command" 4892266e564dSmrg $run eval "$link_command" || exit $? 4893266e564dSmrg exit $EXIT_SUCCESS 4894266e564dSmrg fi 4895266e564dSmrg 4896266e564dSmrg if test "$hardcode_action" = relink; then 4897266e564dSmrg # Fast installation is not supported 4898266e564dSmrg link_command="$compile_var$compile_command$compile_rpath" 4899266e564dSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4900266e564dSmrg 4901266e564dSmrg $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 4902266e564dSmrg $echo "$modename: \`$output' will be relinked during installation" 1>&2 4903266e564dSmrg else 4904266e564dSmrg if test "$fast_install" != no; then 4905266e564dSmrg link_command="$finalize_var$compile_command$finalize_rpath" 4906266e564dSmrg if test "$fast_install" = yes; then 4907c5629e66Smrg relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` 4908266e564dSmrg else 4909266e564dSmrg # fast_install is set to needless 4910266e564dSmrg relink_command= 4911266e564dSmrg fi 4912266e564dSmrg else 4913266e564dSmrg link_command="$compile_var$compile_command$compile_rpath" 4914266e564dSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 4915266e564dSmrg fi 4916266e564dSmrg fi 4917266e564dSmrg 4918266e564dSmrg # Replace the output file specification. 4919266e564dSmrg link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 4920266e564dSmrg 4921266e564dSmrg # Delete the old output files. 4922266e564dSmrg $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname 4923266e564dSmrg 4924266e564dSmrg $show "$link_command" 4925266e564dSmrg $run eval "$link_command" || exit $? 4926266e564dSmrg 4927266e564dSmrg # Now create the wrapper script. 4928266e564dSmrg $show "creating $output" 4929266e564dSmrg 4930266e564dSmrg # Quote the relink command for shipping. 4931266e564dSmrg if test -n "$relink_command"; then 4932266e564dSmrg # Preserve any variables that may affect compiler behavior 4933266e564dSmrg for var in $variables_saved_for_relink; do 4934266e564dSmrg if eval test -z \"\${$var+set}\"; then 4935266e564dSmrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 4936266e564dSmrg elif eval var_value=\$$var; test -z "$var_value"; then 4937266e564dSmrg relink_command="$var=; export $var; $relink_command" 4938266e564dSmrg else 4939266e564dSmrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 4940266e564dSmrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 4941266e564dSmrg fi 4942266e564dSmrg done 4943266e564dSmrg relink_command="(cd `pwd`; $relink_command)" 4944c5629e66Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 4945266e564dSmrg fi 4946266e564dSmrg 4947266e564dSmrg # Quote $echo for shipping. 4948266e564dSmrg if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then 4949266e564dSmrg case $progpath in 4950266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; 4951266e564dSmrg *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; 4952266e564dSmrg esac 4953266e564dSmrg qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 4954266e564dSmrg else 4955266e564dSmrg qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 4956266e564dSmrg fi 4957266e564dSmrg 4958266e564dSmrg # Only actually do things if our run command is non-null. 4959266e564dSmrg if test -z "$run"; then 4960266e564dSmrg # win32 will think the script is a binary if it has 4961266e564dSmrg # a .exe suffix, so we strip it off here. 4962266e564dSmrg case $output in 4963266e564dSmrg *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; 4964266e564dSmrg esac 4965266e564dSmrg # test for cygwin because mv fails w/o .exe extensions 4966266e564dSmrg case $host in 4967266e564dSmrg *cygwin*) 4968266e564dSmrg exeext=.exe 4969266e564dSmrg outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; 4970266e564dSmrg *) exeext= ;; 4971266e564dSmrg esac 4972266e564dSmrg case $host in 4973266e564dSmrg *cygwin* | *mingw* ) 4974266e564dSmrg output_name=`basename $output` 4975266e564dSmrg output_path=`dirname $output` 4976266e564dSmrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 4977266e564dSmrg cwrapper="$output_path/$output_name.exe" 4978266e564dSmrg $rm $cwrappersource $cwrapper 4979266e564dSmrg trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 4980266e564dSmrg 4981266e564dSmrg cat > $cwrappersource <<EOF 4982266e564dSmrg 4983266e564dSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4984266e564dSmrg Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 4985266e564dSmrg 4986266e564dSmrg The $output program cannot be directly executed until all the libtool 4987266e564dSmrg libraries that it depends on are installed. 4988266e564dSmrg 4989266e564dSmrg This wrapper executable should never be moved out of the build directory. 4990266e564dSmrg If it is, it will not operate correctly. 4991266e564dSmrg 4992266e564dSmrg Currently, it simply execs the wrapper *script* "/bin/sh $output", 4993266e564dSmrg but could eventually absorb all of the scripts functionality and 4994266e564dSmrg exec $objdir/$outputname directly. 4995266e564dSmrg*/ 4996266e564dSmrgEOF 4997266e564dSmrg cat >> $cwrappersource<<"EOF" 4998266e564dSmrg#include <stdio.h> 4999266e564dSmrg#include <stdlib.h> 5000266e564dSmrg#include <unistd.h> 5001266e564dSmrg#include <malloc.h> 5002266e564dSmrg#include <stdarg.h> 5003266e564dSmrg#include <assert.h> 5004266e564dSmrg#include <string.h> 5005266e564dSmrg#include <ctype.h> 5006266e564dSmrg#include <sys/stat.h> 5007266e564dSmrg 5008266e564dSmrg#if defined(PATH_MAX) 5009266e564dSmrg# define LT_PATHMAX PATH_MAX 5010266e564dSmrg#elif defined(MAXPATHLEN) 5011266e564dSmrg# define LT_PATHMAX MAXPATHLEN 5012266e564dSmrg#else 5013266e564dSmrg# define LT_PATHMAX 1024 5014266e564dSmrg#endif 5015266e564dSmrg 5016266e564dSmrg#ifndef DIR_SEPARATOR 5017266e564dSmrg# define DIR_SEPARATOR '/' 5018266e564dSmrg# define PATH_SEPARATOR ':' 5019266e564dSmrg#endif 5020266e564dSmrg 5021266e564dSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 5022266e564dSmrg defined (__OS2__) 5023266e564dSmrg# define HAVE_DOS_BASED_FILE_SYSTEM 5024266e564dSmrg# ifndef DIR_SEPARATOR_2 5025266e564dSmrg# define DIR_SEPARATOR_2 '\\' 5026266e564dSmrg# endif 5027266e564dSmrg# ifndef PATH_SEPARATOR_2 5028266e564dSmrg# define PATH_SEPARATOR_2 ';' 5029266e564dSmrg# endif 5030266e564dSmrg#endif 5031266e564dSmrg 5032266e564dSmrg#ifndef DIR_SEPARATOR_2 5033266e564dSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 5034266e564dSmrg#else /* DIR_SEPARATOR_2 */ 5035266e564dSmrg# define IS_DIR_SEPARATOR(ch) \ 5036266e564dSmrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 5037266e564dSmrg#endif /* DIR_SEPARATOR_2 */ 5038266e564dSmrg 5039266e564dSmrg#ifndef PATH_SEPARATOR_2 5040266e564dSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 5041266e564dSmrg#else /* PATH_SEPARATOR_2 */ 5042266e564dSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 5043266e564dSmrg#endif /* PATH_SEPARATOR_2 */ 5044266e564dSmrg 5045266e564dSmrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 5046266e564dSmrg#define XFREE(stale) do { \ 5047266e564dSmrg if (stale) { free ((void *) stale); stale = 0; } \ 5048266e564dSmrg} while (0) 5049266e564dSmrg 5050266e564dSmrg/* -DDEBUG is fairly common in CFLAGS. */ 5051266e564dSmrg#undef DEBUG 5052266e564dSmrg#if defined DEBUGWRAPPER 5053266e564dSmrg# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) 5054266e564dSmrg#else 5055266e564dSmrg# define DEBUG(format, ...) 5056266e564dSmrg#endif 5057266e564dSmrg 5058266e564dSmrgconst char *program_name = NULL; 5059266e564dSmrg 5060266e564dSmrgvoid * xmalloc (size_t num); 5061266e564dSmrgchar * xstrdup (const char *string); 5062266e564dSmrgconst char * base_name (const char *name); 5063266e564dSmrgchar * find_executable(const char *wrapper); 5064266e564dSmrgint check_executable(const char *path); 5065266e564dSmrgchar * strendzap(char *str, const char *pat); 5066266e564dSmrgvoid lt_fatal (const char *message, ...); 5067266e564dSmrg 5068266e564dSmrgint 5069266e564dSmrgmain (int argc, char *argv[]) 5070266e564dSmrg{ 5071266e564dSmrg char **newargz; 5072266e564dSmrg int i; 5073266e564dSmrg 5074266e564dSmrg program_name = (char *) xstrdup (base_name (argv[0])); 5075266e564dSmrg DEBUG("(main) argv[0] : %s\n",argv[0]); 5076266e564dSmrg DEBUG("(main) program_name : %s\n",program_name); 5077266e564dSmrg newargz = XMALLOC(char *, argc+2); 5078266e564dSmrgEOF 5079266e564dSmrg 5080266e564dSmrg cat >> $cwrappersource <<EOF 5081266e564dSmrg newargz[0] = (char *) xstrdup("$SHELL"); 5082266e564dSmrgEOF 5083266e564dSmrg 5084266e564dSmrg cat >> $cwrappersource <<"EOF" 5085266e564dSmrg newargz[1] = find_executable(argv[0]); 5086266e564dSmrg if (newargz[1] == NULL) 5087266e564dSmrg lt_fatal("Couldn't find %s", argv[0]); 5088266e564dSmrg DEBUG("(main) found exe at : %s\n",newargz[1]); 5089266e564dSmrg /* we know the script has the same name, without the .exe */ 5090266e564dSmrg /* so make sure newargz[1] doesn't end in .exe */ 5091266e564dSmrg strendzap(newargz[1],".exe"); 5092266e564dSmrg for (i = 1; i < argc; i++) 5093266e564dSmrg newargz[i+1] = xstrdup(argv[i]); 5094266e564dSmrg newargz[argc+1] = NULL; 5095266e564dSmrg 5096266e564dSmrg for (i=0; i<argc+1; i++) 5097266e564dSmrg { 5098266e564dSmrg DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]); 5099266e564dSmrg ; 5100266e564dSmrg } 5101266e564dSmrg 5102266e564dSmrgEOF 5103266e564dSmrg 5104266e564dSmrg case $host_os in 5105266e564dSmrg mingw*) 5106266e564dSmrg cat >> $cwrappersource <<EOF 5107266e564dSmrg execv("$SHELL",(char const **)newargz); 5108266e564dSmrgEOF 5109266e564dSmrg ;; 5110266e564dSmrg *) 5111266e564dSmrg cat >> $cwrappersource <<EOF 5112266e564dSmrg execv("$SHELL",newargz); 5113266e564dSmrgEOF 5114266e564dSmrg ;; 5115266e564dSmrg esac 5116266e564dSmrg 5117266e564dSmrg cat >> $cwrappersource <<"EOF" 5118266e564dSmrg return 127; 5119266e564dSmrg} 5120266e564dSmrg 5121266e564dSmrgvoid * 5122266e564dSmrgxmalloc (size_t num) 5123266e564dSmrg{ 5124266e564dSmrg void * p = (void *) malloc (num); 5125266e564dSmrg if (!p) 5126266e564dSmrg lt_fatal ("Memory exhausted"); 5127266e564dSmrg 5128266e564dSmrg return p; 5129266e564dSmrg} 5130266e564dSmrg 5131266e564dSmrgchar * 5132266e564dSmrgxstrdup (const char *string) 5133266e564dSmrg{ 5134266e564dSmrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL 5135266e564dSmrg; 5136266e564dSmrg} 5137266e564dSmrg 5138266e564dSmrgconst char * 5139266e564dSmrgbase_name (const char *name) 5140266e564dSmrg{ 5141266e564dSmrg const char *base; 5142266e564dSmrg 5143266e564dSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5144266e564dSmrg /* Skip over the disk name in MSDOS pathnames. */ 5145266e564dSmrg if (isalpha ((unsigned char)name[0]) && name[1] == ':') 5146266e564dSmrg name += 2; 5147266e564dSmrg#endif 5148266e564dSmrg 5149266e564dSmrg for (base = name; *name; name++) 5150266e564dSmrg if (IS_DIR_SEPARATOR (*name)) 5151266e564dSmrg base = name + 1; 5152266e564dSmrg return base; 5153266e564dSmrg} 5154266e564dSmrg 5155266e564dSmrgint 5156266e564dSmrgcheck_executable(const char * path) 5157266e564dSmrg{ 5158266e564dSmrg struct stat st; 5159266e564dSmrg 5160266e564dSmrg DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); 5161266e564dSmrg if ((!path) || (!*path)) 5162266e564dSmrg return 0; 5163266e564dSmrg 5164266e564dSmrg if ((stat (path, &st) >= 0) && 5165266e564dSmrg ( 5166266e564dSmrg /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ 5167266e564dSmrg#if defined (S_IXOTH) 5168266e564dSmrg ((st.st_mode & S_IXOTH) == S_IXOTH) || 5169266e564dSmrg#endif 5170266e564dSmrg#if defined (S_IXGRP) 5171266e564dSmrg ((st.st_mode & S_IXGRP) == S_IXGRP) || 5172266e564dSmrg#endif 5173266e564dSmrg ((st.st_mode & S_IXUSR) == S_IXUSR)) 5174266e564dSmrg ) 5175266e564dSmrg return 1; 5176266e564dSmrg else 5177266e564dSmrg return 0; 5178266e564dSmrg} 5179266e564dSmrg 5180266e564dSmrg/* Searches for the full path of the wrapper. Returns 5181266e564dSmrg newly allocated full path name if found, NULL otherwise */ 5182266e564dSmrgchar * 5183266e564dSmrgfind_executable (const char* wrapper) 5184266e564dSmrg{ 5185266e564dSmrg int has_slash = 0; 5186266e564dSmrg const char* p; 5187266e564dSmrg const char* p_next; 5188266e564dSmrg /* static buffer for getcwd */ 5189266e564dSmrg char tmp[LT_PATHMAX + 1]; 5190266e564dSmrg int tmp_len; 5191266e564dSmrg char* concat_name; 5192266e564dSmrg 5193266e564dSmrg DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); 5194266e564dSmrg 5195266e564dSmrg if ((wrapper == NULL) || (*wrapper == '\0')) 5196266e564dSmrg return NULL; 5197266e564dSmrg 5198266e564dSmrg /* Absolute path? */ 5199266e564dSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5200266e564dSmrg if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') 5201266e564dSmrg { 5202266e564dSmrg concat_name = xstrdup (wrapper); 5203266e564dSmrg if (check_executable(concat_name)) 5204266e564dSmrg return concat_name; 5205266e564dSmrg XFREE(concat_name); 5206266e564dSmrg } 5207266e564dSmrg else 5208266e564dSmrg { 5209266e564dSmrg#endif 5210266e564dSmrg if (IS_DIR_SEPARATOR (wrapper[0])) 5211266e564dSmrg { 5212266e564dSmrg concat_name = xstrdup (wrapper); 5213266e564dSmrg if (check_executable(concat_name)) 5214266e564dSmrg return concat_name; 5215266e564dSmrg XFREE(concat_name); 5216266e564dSmrg } 5217266e564dSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 5218266e564dSmrg } 5219266e564dSmrg#endif 5220266e564dSmrg 5221266e564dSmrg for (p = wrapper; *p; p++) 5222266e564dSmrg if (*p == '/') 5223266e564dSmrg { 5224266e564dSmrg has_slash = 1; 5225266e564dSmrg break; 5226266e564dSmrg } 5227266e564dSmrg if (!has_slash) 5228266e564dSmrg { 5229266e564dSmrg /* no slashes; search PATH */ 5230266e564dSmrg const char* path = getenv ("PATH"); 5231266e564dSmrg if (path != NULL) 5232266e564dSmrg { 5233266e564dSmrg for (p = path; *p; p = p_next) 5234266e564dSmrg { 5235266e564dSmrg const char* q; 5236266e564dSmrg size_t p_len; 5237266e564dSmrg for (q = p; *q; q++) 5238266e564dSmrg if (IS_PATH_SEPARATOR(*q)) 5239266e564dSmrg break; 5240266e564dSmrg p_len = q - p; 5241266e564dSmrg p_next = (*q == '\0' ? q : q + 1); 5242266e564dSmrg if (p_len == 0) 5243266e564dSmrg { 5244266e564dSmrg /* empty path: current directory */ 5245266e564dSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5246266e564dSmrg lt_fatal ("getcwd failed"); 5247266e564dSmrg tmp_len = strlen(tmp); 5248266e564dSmrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5249266e564dSmrg memcpy (concat_name, tmp, tmp_len); 5250266e564dSmrg concat_name[tmp_len] = '/'; 5251266e564dSmrg strcpy (concat_name + tmp_len + 1, wrapper); 5252266e564dSmrg } 5253266e564dSmrg else 5254266e564dSmrg { 5255266e564dSmrg concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); 5256266e564dSmrg memcpy (concat_name, p, p_len); 5257266e564dSmrg concat_name[p_len] = '/'; 5258266e564dSmrg strcpy (concat_name + p_len + 1, wrapper); 5259266e564dSmrg } 5260266e564dSmrg if (check_executable(concat_name)) 5261266e564dSmrg return concat_name; 5262266e564dSmrg XFREE(concat_name); 5263266e564dSmrg } 5264266e564dSmrg } 5265266e564dSmrg /* not found in PATH; assume curdir */ 5266266e564dSmrg } 5267266e564dSmrg /* Relative path | not found in path: prepend cwd */ 5268266e564dSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 5269266e564dSmrg lt_fatal ("getcwd failed"); 5270266e564dSmrg tmp_len = strlen(tmp); 5271266e564dSmrg concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); 5272266e564dSmrg memcpy (concat_name, tmp, tmp_len); 5273266e564dSmrg concat_name[tmp_len] = '/'; 5274266e564dSmrg strcpy (concat_name + tmp_len + 1, wrapper); 5275266e564dSmrg 5276266e564dSmrg if (check_executable(concat_name)) 5277266e564dSmrg return concat_name; 5278266e564dSmrg XFREE(concat_name); 5279266e564dSmrg return NULL; 5280266e564dSmrg} 5281266e564dSmrg 5282266e564dSmrgchar * 5283266e564dSmrgstrendzap(char *str, const char *pat) 5284266e564dSmrg{ 5285266e564dSmrg size_t len, patlen; 5286266e564dSmrg 5287266e564dSmrg assert(str != NULL); 5288266e564dSmrg assert(pat != NULL); 5289266e564dSmrg 5290266e564dSmrg len = strlen(str); 5291266e564dSmrg patlen = strlen(pat); 5292266e564dSmrg 5293266e564dSmrg if (patlen <= len) 5294266e564dSmrg { 5295266e564dSmrg str += len - patlen; 5296266e564dSmrg if (strcmp(str, pat) == 0) 5297266e564dSmrg *str = '\0'; 5298266e564dSmrg } 5299266e564dSmrg return str; 5300266e564dSmrg} 5301266e564dSmrg 5302266e564dSmrgstatic void 5303266e564dSmrglt_error_core (int exit_status, const char * mode, 5304266e564dSmrg const char * message, va_list ap) 5305266e564dSmrg{ 5306266e564dSmrg fprintf (stderr, "%s: %s: ", program_name, mode); 5307266e564dSmrg vfprintf (stderr, message, ap); 5308266e564dSmrg fprintf (stderr, ".\n"); 5309266e564dSmrg 5310266e564dSmrg if (exit_status >= 0) 5311266e564dSmrg exit (exit_status); 5312266e564dSmrg} 5313266e564dSmrg 5314266e564dSmrgvoid 5315266e564dSmrglt_fatal (const char *message, ...) 5316266e564dSmrg{ 5317266e564dSmrg va_list ap; 5318266e564dSmrg va_start (ap, message); 5319266e564dSmrg lt_error_core (EXIT_FAILURE, "FATAL", message, ap); 5320266e564dSmrg va_end (ap); 5321266e564dSmrg} 5322266e564dSmrgEOF 5323266e564dSmrg # we should really use a build-platform specific compiler 5324266e564dSmrg # here, but OTOH, the wrappers (shell script and this C one) 5325266e564dSmrg # are only useful if you want to execute the "real" binary. 5326266e564dSmrg # Since the "real" binary is built for $host, then this 5327266e564dSmrg # wrapper might as well be built for $host, too. 5328266e564dSmrg $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource 5329266e564dSmrg ;; 5330266e564dSmrg esac 5331266e564dSmrg $rm $output 5332266e564dSmrg trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 5333266e564dSmrg 5334266e564dSmrg $echo > $output "\ 5335266e564dSmrg#! $SHELL 5336266e564dSmrg 5337266e564dSmrg# $output - temporary wrapper script for $objdir/$outputname 5338266e564dSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5339266e564dSmrg# 5340266e564dSmrg# The $output program cannot be directly executed until all the libtool 5341266e564dSmrg# libraries that it depends on are installed. 5342266e564dSmrg# 5343266e564dSmrg# This wrapper script should never be moved out of the build directory. 5344266e564dSmrg# If it is, it will not operate correctly. 5345266e564dSmrg 5346266e564dSmrg# Sed substitution that helps us do robust quoting. It backslashifies 5347266e564dSmrg# metacharacters that are still active within double-quoted strings. 5348266e564dSmrgXsed='${SED} -e 1s/^X//' 5349266e564dSmrgsed_quote_subst='$sed_quote_subst' 5350266e564dSmrg 5351c5629e66Smrg# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). 5352c5629e66Smrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 5353c5629e66Smrg emulate sh 5354c5629e66Smrg NULLCMD=: 5355c5629e66Smrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 5356c5629e66Smrg # is contrary to our usage. Disable this feature. 5357c5629e66Smrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 5358c5629e66Smrg setopt NO_GLOB_SUBST 5359c5629e66Smrgelse 5360c5629e66Smrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 5361c5629e66Smrgfi 5362c5629e66SmrgBIN_SH=xpg4; export BIN_SH # for Tru64 5363c5629e66SmrgDUALCASE=1; export DUALCASE # for MKS sh 5364c5629e66Smrg 5365266e564dSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout 5366266e564dSmrg# if CDPATH is set. 5367266e564dSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 5368266e564dSmrg 5369266e564dSmrgrelink_command=\"$relink_command\" 5370266e564dSmrg 5371266e564dSmrg# This environment variable determines our operation mode. 5372266e564dSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then 5373266e564dSmrg # install mode needs the following variable: 5374266e564dSmrg notinst_deplibs='$notinst_deplibs' 5375266e564dSmrgelse 5376266e564dSmrg # When we are sourced in execute mode, \$file and \$echo are already set. 5377266e564dSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5378266e564dSmrg echo=\"$qecho\" 5379266e564dSmrg file=\"\$0\" 5380266e564dSmrg # Make sure echo works. 5381266e564dSmrg if test \"X\$1\" = X--no-reexec; then 5382266e564dSmrg # Discard the --no-reexec flag, and continue. 5383266e564dSmrg shift 5384266e564dSmrg elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 5385266e564dSmrg # Yippee, \$echo works! 5386266e564dSmrg : 5387266e564dSmrg else 5388266e564dSmrg # Restart under the correct shell, and then maybe \$echo will work. 5389266e564dSmrg exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 5390266e564dSmrg fi 5391266e564dSmrg fi\ 5392266e564dSmrg" 5393266e564dSmrg $echo >> $output "\ 5394266e564dSmrg 5395266e564dSmrg # Find the directory that this script lives in. 5396266e564dSmrg thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 5397266e564dSmrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 5398266e564dSmrg 5399266e564dSmrg # Follow symbolic links until we get to the real thisdir. 5400266e564dSmrg file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` 5401266e564dSmrg while test -n \"\$file\"; do 5402266e564dSmrg destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 5403266e564dSmrg 5404266e564dSmrg # If there was a directory component, then change thisdir. 5405266e564dSmrg if test \"x\$destdir\" != \"x\$file\"; then 5406266e564dSmrg case \"\$destdir\" in 5407266e564dSmrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 5408266e564dSmrg *) thisdir=\"\$thisdir/\$destdir\" ;; 5409266e564dSmrg esac 5410266e564dSmrg fi 5411266e564dSmrg 5412266e564dSmrg file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 5413266e564dSmrg file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` 5414266e564dSmrg done 5415266e564dSmrg 5416266e564dSmrg # Try to get the absolute directory name. 5417266e564dSmrg absdir=\`cd \"\$thisdir\" && pwd\` 5418266e564dSmrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 5419266e564dSmrg" 5420266e564dSmrg 5421266e564dSmrg if test "$fast_install" = yes; then 5422266e564dSmrg $echo >> $output "\ 5423266e564dSmrg program=lt-'$outputname'$exeext 5424266e564dSmrg progdir=\"\$thisdir/$objdir\" 5425266e564dSmrg 5426266e564dSmrg if test ! -f \"\$progdir/\$program\" || \\ 5427266e564dSmrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 5428266e564dSmrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 5429266e564dSmrg 5430266e564dSmrg file=\"\$\$-\$program\" 5431266e564dSmrg 5432266e564dSmrg if test ! -d \"\$progdir\"; then 5433266e564dSmrg $mkdir \"\$progdir\" 5434266e564dSmrg else 5435266e564dSmrg $rm \"\$progdir/\$file\" 5436266e564dSmrg fi" 5437266e564dSmrg 5438266e564dSmrg $echo >> $output "\ 5439266e564dSmrg 5440266e564dSmrg # relink executable if necessary 5441266e564dSmrg if test -n \"\$relink_command\"; then 5442266e564dSmrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 5443266e564dSmrg else 5444266e564dSmrg $echo \"\$relink_command_output\" >&2 5445266e564dSmrg $rm \"\$progdir/\$file\" 5446266e564dSmrg exit $EXIT_FAILURE 5447266e564dSmrg fi 5448266e564dSmrg fi 5449266e564dSmrg 5450266e564dSmrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 5451266e564dSmrg { $rm \"\$progdir/\$program\"; 5452266e564dSmrg $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } 5453266e564dSmrg $rm \"\$progdir/\$file\" 5454266e564dSmrg fi" 5455266e564dSmrg else 5456266e564dSmrg $echo >> $output "\ 5457266e564dSmrg program='$outputname' 5458266e564dSmrg progdir=\"\$thisdir/$objdir\" 5459266e564dSmrg" 5460266e564dSmrg fi 5461266e564dSmrg 5462266e564dSmrg $echo >> $output "\ 5463266e564dSmrg 5464266e564dSmrg if test -f \"\$progdir/\$program\"; then" 5465266e564dSmrg 5466266e564dSmrg # Export our shlibpath_var if we have one. 5467266e564dSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 5468266e564dSmrg $echo >> $output "\ 5469266e564dSmrg # Add our own library path to $shlibpath_var 5470266e564dSmrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 5471266e564dSmrg 5472266e564dSmrg # Some systems cannot cope with colon-terminated $shlibpath_var 5473266e564dSmrg # The second colon is a workaround for a bug in BeOS R4 sed 5474266e564dSmrg $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` 5475266e564dSmrg 5476266e564dSmrg export $shlibpath_var 5477266e564dSmrg" 5478266e564dSmrg fi 5479266e564dSmrg 5480266e564dSmrg # fixup the dll searchpath if we need to. 5481266e564dSmrg if test -n "$dllsearchpath"; then 5482266e564dSmrg $echo >> $output "\ 5483266e564dSmrg # Add the dll search path components to the executable PATH 5484266e564dSmrg PATH=$dllsearchpath:\$PATH 5485266e564dSmrg" 5486266e564dSmrg fi 5487266e564dSmrg 5488266e564dSmrg $echo >> $output "\ 5489266e564dSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 5490266e564dSmrg # Run the actual program with our arguments. 5491266e564dSmrg" 5492266e564dSmrg case $host in 5493266e564dSmrg # Backslashes separate directories on plain windows 5494266e564dSmrg *-*-mingw | *-*-os2*) 5495266e564dSmrg $echo >> $output "\ 5496266e564dSmrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 5497266e564dSmrg" 5498266e564dSmrg ;; 5499266e564dSmrg 5500266e564dSmrg *) 5501266e564dSmrg $echo >> $output "\ 5502266e564dSmrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 5503266e564dSmrg" 5504266e564dSmrg ;; 5505266e564dSmrg esac 5506266e564dSmrg $echo >> $output "\ 5507c5629e66Smrg \$echo \"\$0: cannot exec \$program \$*\" 5508266e564dSmrg exit $EXIT_FAILURE 5509266e564dSmrg fi 5510266e564dSmrg else 5511266e564dSmrg # The program doesn't exist. 5512266e564dSmrg \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 5513266e564dSmrg \$echo \"This script is just a wrapper for \$program.\" 1>&2 5514266e564dSmrg $echo \"See the $PACKAGE documentation for more information.\" 1>&2 5515266e564dSmrg exit $EXIT_FAILURE 5516266e564dSmrg fi 5517266e564dSmrgfi\ 5518266e564dSmrg" 5519266e564dSmrg chmod +x $output 5520266e564dSmrg fi 5521266e564dSmrg exit $EXIT_SUCCESS 5522266e564dSmrg ;; 5523266e564dSmrg esac 5524266e564dSmrg 5525266e564dSmrg # See if we need to build an old-fashioned archive. 5526266e564dSmrg for oldlib in $oldlibs; do 5527266e564dSmrg 5528266e564dSmrg if test "$build_libtool_libs" = convenience; then 5529266e564dSmrg oldobjs="$libobjs_save" 5530266e564dSmrg addlibs="$convenience" 5531266e564dSmrg build_libtool_libs=no 5532266e564dSmrg else 5533266e564dSmrg if test "$build_libtool_libs" = module; then 5534266e564dSmrg oldobjs="$libobjs_save" 5535266e564dSmrg build_libtool_libs=no 5536266e564dSmrg else 5537266e564dSmrg oldobjs="$old_deplibs $non_pic_objects" 5538266e564dSmrg fi 5539266e564dSmrg addlibs="$old_convenience" 5540266e564dSmrg fi 5541266e564dSmrg 5542266e564dSmrg if test -n "$addlibs"; then 5543266e564dSmrg gentop="$output_objdir/${outputname}x" 5544266e564dSmrg generated="$generated $gentop" 5545266e564dSmrg 5546266e564dSmrg func_extract_archives $gentop $addlibs 5547266e564dSmrg oldobjs="$oldobjs $func_extract_archives_result" 5548266e564dSmrg fi 5549266e564dSmrg 5550266e564dSmrg # Do each command in the archive commands. 5551266e564dSmrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 5552266e564dSmrg cmds=$old_archive_from_new_cmds 5553266e564dSmrg else 5554266e564dSmrg # POSIX demands no paths to be encoded in archives. We have 5555266e564dSmrg # to avoid creating archives with duplicate basenames if we 5556266e564dSmrg # might have to extract them afterwards, e.g., when creating a 5557266e564dSmrg # static archive out of a convenience library, or when linking 5558266e564dSmrg # the entirety of a libtool archive into another (currently 5559266e564dSmrg # not supported by libtool). 5560266e564dSmrg if (for obj in $oldobjs 5561266e564dSmrg do 5562266e564dSmrg $echo "X$obj" | $Xsed -e 's%^.*/%%' 5563266e564dSmrg done | sort | sort -uc >/dev/null 2>&1); then 5564266e564dSmrg : 5565266e564dSmrg else 5566266e564dSmrg $echo "copying selected object files to avoid basename conflicts..." 5567266e564dSmrg 5568266e564dSmrg if test -z "$gentop"; then 5569266e564dSmrg gentop="$output_objdir/${outputname}x" 5570266e564dSmrg generated="$generated $gentop" 5571266e564dSmrg 5572266e564dSmrg $show "${rm}r $gentop" 5573266e564dSmrg $run ${rm}r "$gentop" 5574266e564dSmrg $show "$mkdir $gentop" 5575266e564dSmrg $run $mkdir "$gentop" 5576266e564dSmrg exit_status=$? 5577266e564dSmrg if test "$exit_status" -ne 0 && test ! -d "$gentop"; then 5578266e564dSmrg exit $exit_status 5579266e564dSmrg fi 5580266e564dSmrg fi 5581266e564dSmrg 5582266e564dSmrg save_oldobjs=$oldobjs 5583266e564dSmrg oldobjs= 5584266e564dSmrg counter=1 5585266e564dSmrg for obj in $save_oldobjs 5586266e564dSmrg do 5587266e564dSmrg objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` 5588266e564dSmrg case " $oldobjs " in 5589266e564dSmrg " ") oldobjs=$obj ;; 5590266e564dSmrg *[\ /]"$objbase "*) 5591266e564dSmrg while :; do 5592266e564dSmrg # Make sure we don't pick an alternate name that also 5593266e564dSmrg # overlaps. 5594266e564dSmrg newobj=lt$counter-$objbase 5595266e564dSmrg counter=`expr $counter + 1` 5596266e564dSmrg case " $oldobjs " in 5597266e564dSmrg *[\ /]"$newobj "*) ;; 5598266e564dSmrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 5599266e564dSmrg esac 5600266e564dSmrg done 5601266e564dSmrg $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 5602266e564dSmrg $run ln "$obj" "$gentop/$newobj" || 5603266e564dSmrg $run cp "$obj" "$gentop/$newobj" 5604266e564dSmrg oldobjs="$oldobjs $gentop/$newobj" 5605266e564dSmrg ;; 5606266e564dSmrg *) oldobjs="$oldobjs $obj" ;; 5607266e564dSmrg esac 5608266e564dSmrg done 5609266e564dSmrg fi 5610266e564dSmrg 5611266e564dSmrg eval cmds=\"$old_archive_cmds\" 5612266e564dSmrg 5613266e564dSmrg if len=`expr "X$cmds" : ".*"` && 5614266e564dSmrg test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then 5615266e564dSmrg cmds=$old_archive_cmds 5616266e564dSmrg else 5617266e564dSmrg # the command line is too long to link in one step, link in parts 5618266e564dSmrg $echo "using piecewise archive linking..." 5619266e564dSmrg save_RANLIB=$RANLIB 5620266e564dSmrg RANLIB=: 5621266e564dSmrg objlist= 5622266e564dSmrg concat_cmds= 5623266e564dSmrg save_oldobjs=$oldobjs 5624266e564dSmrg 5625266e564dSmrg # Is there a better way of finding the last object in the list? 5626266e564dSmrg for obj in $save_oldobjs 5627266e564dSmrg do 5628266e564dSmrg last_oldobj=$obj 5629266e564dSmrg done 5630266e564dSmrg for obj in $save_oldobjs 5631266e564dSmrg do 5632266e564dSmrg oldobjs="$objlist $obj" 5633266e564dSmrg objlist="$objlist $obj" 5634266e564dSmrg eval test_cmds=\"$old_archive_cmds\" 5635266e564dSmrg if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && 5636266e564dSmrg test "$len" -le "$max_cmd_len"; then 5637266e564dSmrg : 5638266e564dSmrg else 5639266e564dSmrg # the above command should be used before it gets too long 5640266e564dSmrg oldobjs=$objlist 5641266e564dSmrg if test "$obj" = "$last_oldobj" ; then 5642266e564dSmrg RANLIB=$save_RANLIB 5643266e564dSmrg fi 5644266e564dSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 5645266e564dSmrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 5646266e564dSmrg objlist= 5647266e564dSmrg fi 5648266e564dSmrg done 5649266e564dSmrg RANLIB=$save_RANLIB 5650266e564dSmrg oldobjs=$objlist 5651266e564dSmrg if test "X$oldobjs" = "X" ; then 5652266e564dSmrg eval cmds=\"\$concat_cmds\" 5653266e564dSmrg else 5654266e564dSmrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 5655266e564dSmrg fi 5656266e564dSmrg fi 5657266e564dSmrg fi 5658266e564dSmrg save_ifs="$IFS"; IFS='~' 5659266e564dSmrg for cmd in $cmds; do 5660266e564dSmrg eval cmd=\"$cmd\" 5661266e564dSmrg IFS="$save_ifs" 5662266e564dSmrg $show "$cmd" 5663266e564dSmrg $run eval "$cmd" || exit $? 5664266e564dSmrg done 5665266e564dSmrg IFS="$save_ifs" 5666266e564dSmrg done 5667266e564dSmrg 5668266e564dSmrg if test -n "$generated"; then 5669266e564dSmrg $show "${rm}r$generated" 5670266e564dSmrg $run ${rm}r$generated 5671266e564dSmrg fi 5672266e564dSmrg 5673266e564dSmrg # Now create the libtool archive. 5674266e564dSmrg case $output in 5675266e564dSmrg *.la) 5676266e564dSmrg old_library= 5677266e564dSmrg test "$build_old_libs" = yes && old_library="$libname.$libext" 5678266e564dSmrg $show "creating $output" 5679266e564dSmrg 5680266e564dSmrg # Preserve any variables that may affect compiler behavior 5681266e564dSmrg for var in $variables_saved_for_relink; do 5682266e564dSmrg if eval test -z \"\${$var+set}\"; then 5683266e564dSmrg relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" 5684266e564dSmrg elif eval var_value=\$$var; test -z "$var_value"; then 5685266e564dSmrg relink_command="$var=; export $var; $relink_command" 5686266e564dSmrg else 5687266e564dSmrg var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` 5688266e564dSmrg relink_command="$var=\"$var_value\"; export $var; $relink_command" 5689266e564dSmrg fi 5690266e564dSmrg done 5691266e564dSmrg # Quote the link command for shipping. 5692266e564dSmrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 5693c5629e66Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` 5694266e564dSmrg if test "$hardcode_automatic" = yes ; then 5695266e564dSmrg relink_command= 5696266e564dSmrg fi 5697266e564dSmrg 5698266e564dSmrg 5699266e564dSmrg # Only create the output if not a dry run. 5700266e564dSmrg if test -z "$run"; then 5701266e564dSmrg for installed in no yes; do 5702266e564dSmrg if test "$installed" = yes; then 5703266e564dSmrg if test -z "$install_libdir"; then 5704266e564dSmrg break 5705266e564dSmrg fi 5706266e564dSmrg output="$output_objdir/$outputname"i 5707266e564dSmrg # Replace all uninstalled libtool libraries with the installed ones 5708266e564dSmrg newdependency_libs= 5709266e564dSmrg for deplib in $dependency_libs; do 5710266e564dSmrg case $deplib in 5711266e564dSmrg *.la) 5712266e564dSmrg name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` 5713266e564dSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 5714266e564dSmrg if test -z "$libdir"; then 5715266e564dSmrg $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 5716266e564dSmrg exit $EXIT_FAILURE 5717266e564dSmrg fi 5718266e564dSmrg newdependency_libs="$newdependency_libs $libdir/$name" 5719266e564dSmrg ;; 5720266e564dSmrg *) newdependency_libs="$newdependency_libs $deplib" ;; 5721266e564dSmrg esac 5722266e564dSmrg done 5723266e564dSmrg dependency_libs="$newdependency_libs" 5724266e564dSmrg newdlfiles= 5725266e564dSmrg for lib in $dlfiles; do 5726266e564dSmrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5727266e564dSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5728266e564dSmrg if test -z "$libdir"; then 5729266e564dSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5730266e564dSmrg exit $EXIT_FAILURE 5731266e564dSmrg fi 5732266e564dSmrg newdlfiles="$newdlfiles $libdir/$name" 5733266e564dSmrg done 5734266e564dSmrg dlfiles="$newdlfiles" 5735266e564dSmrg newdlprefiles= 5736266e564dSmrg for lib in $dlprefiles; do 5737266e564dSmrg name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` 5738266e564dSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 5739266e564dSmrg if test -z "$libdir"; then 5740266e564dSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 5741266e564dSmrg exit $EXIT_FAILURE 5742266e564dSmrg fi 5743266e564dSmrg newdlprefiles="$newdlprefiles $libdir/$name" 5744266e564dSmrg done 5745266e564dSmrg dlprefiles="$newdlprefiles" 5746266e564dSmrg else 5747266e564dSmrg newdlfiles= 5748266e564dSmrg for lib in $dlfiles; do 5749266e564dSmrg case $lib in 5750266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5751266e564dSmrg *) abs=`pwd`"/$lib" ;; 5752266e564dSmrg esac 5753266e564dSmrg newdlfiles="$newdlfiles $abs" 5754266e564dSmrg done 5755266e564dSmrg dlfiles="$newdlfiles" 5756266e564dSmrg newdlprefiles= 5757266e564dSmrg for lib in $dlprefiles; do 5758266e564dSmrg case $lib in 5759266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 5760266e564dSmrg *) abs=`pwd`"/$lib" ;; 5761266e564dSmrg esac 5762266e564dSmrg newdlprefiles="$newdlprefiles $abs" 5763266e564dSmrg done 5764266e564dSmrg dlprefiles="$newdlprefiles" 5765266e564dSmrg fi 5766266e564dSmrg $rm $output 5767266e564dSmrg # place dlname in correct position for cygwin 5768266e564dSmrg tdlname=$dlname 5769266e564dSmrg case $host,$output,$installed,$module,$dlname in 5770266e564dSmrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; 5771266e564dSmrg esac 5772266e564dSmrg $echo > $output "\ 5773266e564dSmrg# $outputname - a libtool library file 5774266e564dSmrg# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP 5775266e564dSmrg# 5776266e564dSmrg# Please DO NOT delete this file! 5777266e564dSmrg# It is necessary for linking the library. 5778266e564dSmrg 5779266e564dSmrg# The name that we can dlopen(3). 5780266e564dSmrgdlname='$tdlname' 5781266e564dSmrg 5782266e564dSmrg# Names of this library. 5783266e564dSmrglibrary_names='$library_names' 5784266e564dSmrg 5785266e564dSmrg# The name of the static archive. 5786266e564dSmrgold_library='$old_library' 5787266e564dSmrg 5788266e564dSmrg# Libraries that this one depends upon. 5789266e564dSmrgdependency_libs='$dependency_libs' 5790266e564dSmrg 5791266e564dSmrg# Version information for $libname. 5792266e564dSmrgcurrent=$current 5793266e564dSmrgage=$age 5794266e564dSmrgrevision=$revision 5795266e564dSmrg 5796266e564dSmrg# Is this an already installed library? 5797266e564dSmrginstalled=$installed 5798266e564dSmrg 5799266e564dSmrg# Should we warn about portability when linking against -modules? 5800266e564dSmrgshouldnotlink=$module 5801266e564dSmrg 5802266e564dSmrg# Files to dlopen/dlpreopen 5803266e564dSmrgdlopen='$dlfiles' 5804266e564dSmrgdlpreopen='$dlprefiles' 5805266e564dSmrg 5806266e564dSmrg# Directory that this library needs to be installed in: 5807266e564dSmrglibdir='$install_libdir'" 5808266e564dSmrg if test "$installed" = no && test "$need_relink" = yes; then 5809266e564dSmrg $echo >> $output "\ 5810266e564dSmrgrelink_command=\"$relink_command\"" 5811266e564dSmrg fi 5812266e564dSmrg done 5813266e564dSmrg fi 5814266e564dSmrg 5815266e564dSmrg # Do a symbolic link so that the libtool archive can be found in 5816266e564dSmrg # LD_LIBRARY_PATH before the program is installed. 5817266e564dSmrg $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" 5818266e564dSmrg $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? 5819266e564dSmrg ;; 5820266e564dSmrg esac 5821266e564dSmrg exit $EXIT_SUCCESS 5822266e564dSmrg ;; 5823266e564dSmrg 5824266e564dSmrg # libtool install mode 5825266e564dSmrg install) 5826266e564dSmrg modename="$modename: install" 5827266e564dSmrg 5828266e564dSmrg # There may be an optional sh(1) argument at the beginning of 5829266e564dSmrg # install_prog (especially on Windows NT). 5830266e564dSmrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 5831266e564dSmrg # Allow the use of GNU shtool's install command. 5832266e564dSmrg $echo "X$nonopt" | grep shtool > /dev/null; then 5833266e564dSmrg # Aesthetically quote it. 5834266e564dSmrg arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 5835266e564dSmrg case $arg in 5836266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5837266e564dSmrg arg="\"$arg\"" 5838266e564dSmrg ;; 5839266e564dSmrg esac 5840266e564dSmrg install_prog="$arg " 5841266e564dSmrg arg="$1" 5842266e564dSmrg shift 5843266e564dSmrg else 5844266e564dSmrg install_prog= 5845266e564dSmrg arg=$nonopt 5846266e564dSmrg fi 5847266e564dSmrg 5848266e564dSmrg # The real first argument should be the name of the installation program. 5849266e564dSmrg # Aesthetically quote it. 5850266e564dSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5851266e564dSmrg case $arg in 5852266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5853266e564dSmrg arg="\"$arg\"" 5854266e564dSmrg ;; 5855266e564dSmrg esac 5856266e564dSmrg install_prog="$install_prog$arg" 5857266e564dSmrg 5858266e564dSmrg # We need to accept at least all the BSD install flags. 5859266e564dSmrg dest= 5860266e564dSmrg files= 5861266e564dSmrg opts= 5862266e564dSmrg prev= 5863266e564dSmrg install_type= 5864266e564dSmrg isdir=no 5865266e564dSmrg stripme= 5866266e564dSmrg for arg 5867266e564dSmrg do 5868266e564dSmrg if test -n "$dest"; then 5869266e564dSmrg files="$files $dest" 5870266e564dSmrg dest=$arg 5871266e564dSmrg continue 5872266e564dSmrg fi 5873266e564dSmrg 5874266e564dSmrg case $arg in 5875266e564dSmrg -d) isdir=yes ;; 5876266e564dSmrg -f) 5877266e564dSmrg case " $install_prog " in 5878266e564dSmrg *[\\\ /]cp\ *) ;; 5879266e564dSmrg *) prev=$arg ;; 5880266e564dSmrg esac 5881266e564dSmrg ;; 5882266e564dSmrg -g | -m | -o) prev=$arg ;; 5883266e564dSmrg -s) 5884266e564dSmrg stripme=" -s" 5885266e564dSmrg continue 5886266e564dSmrg ;; 5887266e564dSmrg -*) 5888266e564dSmrg ;; 5889266e564dSmrg *) 5890266e564dSmrg # If the previous option needed an argument, then skip it. 5891266e564dSmrg if test -n "$prev"; then 5892266e564dSmrg prev= 5893266e564dSmrg else 5894266e564dSmrg dest=$arg 5895266e564dSmrg continue 5896266e564dSmrg fi 5897266e564dSmrg ;; 5898266e564dSmrg esac 5899266e564dSmrg 5900266e564dSmrg # Aesthetically quote the argument. 5901266e564dSmrg arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 5902266e564dSmrg case $arg in 5903266e564dSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 5904266e564dSmrg arg="\"$arg\"" 5905266e564dSmrg ;; 5906266e564dSmrg esac 5907266e564dSmrg install_prog="$install_prog $arg" 5908266e564dSmrg done 5909266e564dSmrg 5910266e564dSmrg if test -z "$install_prog"; then 5911266e564dSmrg $echo "$modename: you must specify an install program" 1>&2 5912266e564dSmrg $echo "$help" 1>&2 5913266e564dSmrg exit $EXIT_FAILURE 5914266e564dSmrg fi 5915266e564dSmrg 5916266e564dSmrg if test -n "$prev"; then 5917266e564dSmrg $echo "$modename: the \`$prev' option requires an argument" 1>&2 5918266e564dSmrg $echo "$help" 1>&2 5919266e564dSmrg exit $EXIT_FAILURE 5920266e564dSmrg fi 5921266e564dSmrg 5922266e564dSmrg if test -z "$files"; then 5923266e564dSmrg if test -z "$dest"; then 5924266e564dSmrg $echo "$modename: no file or destination specified" 1>&2 5925266e564dSmrg else 5926266e564dSmrg $echo "$modename: you must specify a destination" 1>&2 5927266e564dSmrg fi 5928266e564dSmrg $echo "$help" 1>&2 5929266e564dSmrg exit $EXIT_FAILURE 5930266e564dSmrg fi 5931266e564dSmrg 5932266e564dSmrg # Strip any trailing slash from the destination. 5933266e564dSmrg dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 5934266e564dSmrg 5935266e564dSmrg # Check to see that the destination is a directory. 5936266e564dSmrg test -d "$dest" && isdir=yes 5937266e564dSmrg if test "$isdir" = yes; then 5938266e564dSmrg destdir="$dest" 5939266e564dSmrg destname= 5940266e564dSmrg else 5941266e564dSmrg destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 5942266e564dSmrg test "X$destdir" = "X$dest" && destdir=. 5943266e564dSmrg destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 5944266e564dSmrg 5945266e564dSmrg # Not a directory, so check to see that there is only one file specified. 5946266e564dSmrg set dummy $files 5947266e564dSmrg if test "$#" -gt 2; then 5948266e564dSmrg $echo "$modename: \`$dest' is not a directory" 1>&2 5949266e564dSmrg $echo "$help" 1>&2 5950266e564dSmrg exit $EXIT_FAILURE 5951266e564dSmrg fi 5952266e564dSmrg fi 5953266e564dSmrg case $destdir in 5954266e564dSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 5955266e564dSmrg *) 5956266e564dSmrg for file in $files; do 5957266e564dSmrg case $file in 5958266e564dSmrg *.lo) ;; 5959266e564dSmrg *) 5960266e564dSmrg $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 5961266e564dSmrg $echo "$help" 1>&2 5962266e564dSmrg exit $EXIT_FAILURE 5963266e564dSmrg ;; 5964266e564dSmrg esac 5965266e564dSmrg done 5966266e564dSmrg ;; 5967266e564dSmrg esac 5968266e564dSmrg 5969266e564dSmrg # This variable tells wrapper scripts just to set variables rather 5970266e564dSmrg # than running their programs. 5971266e564dSmrg libtool_install_magic="$magic" 5972266e564dSmrg 5973266e564dSmrg staticlibs= 5974266e564dSmrg future_libdirs= 5975266e564dSmrg current_libdirs= 5976266e564dSmrg for file in $files; do 5977266e564dSmrg 5978266e564dSmrg # Do each installation. 5979266e564dSmrg case $file in 5980266e564dSmrg *.$libext) 5981266e564dSmrg # Do the static libraries later. 5982266e564dSmrg staticlibs="$staticlibs $file" 5983266e564dSmrg ;; 5984266e564dSmrg 5985266e564dSmrg *.la) 5986266e564dSmrg # Check to see that this really is a libtool archive. 5987266e564dSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 5988266e564dSmrg else 5989266e564dSmrg $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 5990266e564dSmrg $echo "$help" 1>&2 5991266e564dSmrg exit $EXIT_FAILURE 5992266e564dSmrg fi 5993266e564dSmrg 5994266e564dSmrg library_names= 5995266e564dSmrg old_library= 5996266e564dSmrg relink_command= 5997266e564dSmrg # If there is no directory component, then add one. 5998266e564dSmrg case $file in 5999266e564dSmrg */* | *\\*) . $file ;; 6000266e564dSmrg *) . ./$file ;; 6001266e564dSmrg esac 6002266e564dSmrg 6003266e564dSmrg # Add the libdir to current_libdirs if it is the destination. 6004266e564dSmrg if test "X$destdir" = "X$libdir"; then 6005266e564dSmrg case "$current_libdirs " in 6006266e564dSmrg *" $libdir "*) ;; 6007266e564dSmrg *) current_libdirs="$current_libdirs $libdir" ;; 6008266e564dSmrg esac 6009266e564dSmrg else 6010266e564dSmrg # Note the libdir as a future libdir. 6011266e564dSmrg case "$future_libdirs " in 6012266e564dSmrg *" $libdir "*) ;; 6013266e564dSmrg *) future_libdirs="$future_libdirs $libdir" ;; 6014266e564dSmrg esac 6015266e564dSmrg fi 6016266e564dSmrg 6017266e564dSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ 6018266e564dSmrg test "X$dir" = "X$file/" && dir= 6019266e564dSmrg dir="$dir$objdir" 6020266e564dSmrg 6021266e564dSmrg if test -n "$relink_command"; then 6022266e564dSmrg # Determine the prefix the user has applied to our future dir. 6023266e564dSmrg inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` 6024266e564dSmrg 6025266e564dSmrg # Don't allow the user to place us outside of our expected 6026266e564dSmrg # location b/c this prevents finding dependent libraries that 6027266e564dSmrg # are installed to the same prefix. 6028266e564dSmrg # At present, this check doesn't affect windows .dll's that 6029266e564dSmrg # are installed into $libdir/../bin (currently, that works fine) 6030266e564dSmrg # but it's something to keep an eye on. 6031266e564dSmrg if test "$inst_prefix_dir" = "$destdir"; then 6032266e564dSmrg $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 6033266e564dSmrg exit $EXIT_FAILURE 6034266e564dSmrg fi 6035266e564dSmrg 6036266e564dSmrg if test -n "$inst_prefix_dir"; then 6037266e564dSmrg # Stick the inst_prefix_dir data into the link command. 6038c5629e66Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` 6039266e564dSmrg else 6040c5629e66Smrg relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` 6041266e564dSmrg fi 6042266e564dSmrg 6043266e564dSmrg $echo "$modename: warning: relinking \`$file'" 1>&2 6044266e564dSmrg $show "$relink_command" 6045266e564dSmrg if $run eval "$relink_command"; then : 6046266e564dSmrg else 6047266e564dSmrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6048266e564dSmrg exit $EXIT_FAILURE 6049266e564dSmrg fi 6050266e564dSmrg fi 6051266e564dSmrg 6052266e564dSmrg # See the names of the shared library. 6053266e564dSmrg set dummy $library_names 6054266e564dSmrg if test -n "$2"; then 6055266e564dSmrg realname="$2" 6056266e564dSmrg shift 6057266e564dSmrg shift 6058266e564dSmrg 6059266e564dSmrg srcname="$realname" 6060266e564dSmrg test -n "$relink_command" && srcname="$realname"T 6061266e564dSmrg 6062266e564dSmrg # Install the shared library and build the symlinks. 6063266e564dSmrg $show "$install_prog $dir/$srcname $destdir/$realname" 6064266e564dSmrg $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? 6065266e564dSmrg if test -n "$stripme" && test -n "$striplib"; then 6066266e564dSmrg $show "$striplib $destdir/$realname" 6067266e564dSmrg $run eval "$striplib $destdir/$realname" || exit $? 6068266e564dSmrg fi 6069266e564dSmrg 6070266e564dSmrg if test "$#" -gt 0; then 6071266e564dSmrg # Delete the old symlinks, and create new ones. 6072266e564dSmrg # Try `ln -sf' first, because the `ln' binary might depend on 6073266e564dSmrg # the symlink we replace! Solaris /bin/ln does not understand -f, 6074266e564dSmrg # so we also need to try rm && ln -s. 6075266e564dSmrg for linkname 6076266e564dSmrg do 6077266e564dSmrg if test "$linkname" != "$realname"; then 6078266e564dSmrg $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6079266e564dSmrg $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" 6080266e564dSmrg fi 6081266e564dSmrg done 6082266e564dSmrg fi 6083266e564dSmrg 6084266e564dSmrg # Do each command in the postinstall commands. 6085266e564dSmrg lib="$destdir/$realname" 6086266e564dSmrg cmds=$postinstall_cmds 6087266e564dSmrg save_ifs="$IFS"; IFS='~' 6088266e564dSmrg for cmd in $cmds; do 6089266e564dSmrg IFS="$save_ifs" 6090266e564dSmrg eval cmd=\"$cmd\" 6091266e564dSmrg $show "$cmd" 6092266e564dSmrg $run eval "$cmd" || { 6093266e564dSmrg lt_exit=$? 6094266e564dSmrg 6095266e564dSmrg # Restore the uninstalled library and exit 6096266e564dSmrg if test "$mode" = relink; then 6097266e564dSmrg $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' 6098266e564dSmrg fi 6099266e564dSmrg 6100266e564dSmrg exit $lt_exit 6101266e564dSmrg } 6102266e564dSmrg done 6103266e564dSmrg IFS="$save_ifs" 6104266e564dSmrg fi 6105266e564dSmrg 6106266e564dSmrg # Install the pseudo-library for information purposes. 6107266e564dSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6108266e564dSmrg instname="$dir/$name"i 6109266e564dSmrg $show "$install_prog $instname $destdir/$name" 6110266e564dSmrg $run eval "$install_prog $instname $destdir/$name" || exit $? 6111266e564dSmrg 6112266e564dSmrg # Maybe install the static library, too. 6113266e564dSmrg test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 6114266e564dSmrg ;; 6115266e564dSmrg 6116266e564dSmrg *.lo) 6117266e564dSmrg # Install (i.e. copy) a libtool object. 6118266e564dSmrg 6119266e564dSmrg # Figure out destination file name, if it wasn't already specified. 6120266e564dSmrg if test -n "$destname"; then 6121266e564dSmrg destfile="$destdir/$destname" 6122266e564dSmrg else 6123266e564dSmrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6124266e564dSmrg destfile="$destdir/$destfile" 6125266e564dSmrg fi 6126266e564dSmrg 6127266e564dSmrg # Deduce the name of the destination old-style object file. 6128266e564dSmrg case $destfile in 6129266e564dSmrg *.lo) 6130266e564dSmrg staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 6131266e564dSmrg ;; 6132266e564dSmrg *.$objext) 6133266e564dSmrg staticdest="$destfile" 6134266e564dSmrg destfile= 6135266e564dSmrg ;; 6136266e564dSmrg *) 6137266e564dSmrg $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 6138266e564dSmrg $echo "$help" 1>&2 6139266e564dSmrg exit $EXIT_FAILURE 6140266e564dSmrg ;; 6141266e564dSmrg esac 6142266e564dSmrg 6143266e564dSmrg # Install the libtool object if requested. 6144266e564dSmrg if test -n "$destfile"; then 6145266e564dSmrg $show "$install_prog $file $destfile" 6146266e564dSmrg $run eval "$install_prog $file $destfile" || exit $? 6147266e564dSmrg fi 6148266e564dSmrg 6149266e564dSmrg # Install the old object if enabled. 6150266e564dSmrg if test "$build_old_libs" = yes; then 6151266e564dSmrg # Deduce the name of the old-style object file. 6152266e564dSmrg staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 6153266e564dSmrg 6154266e564dSmrg $show "$install_prog $staticobj $staticdest" 6155266e564dSmrg $run eval "$install_prog \$staticobj \$staticdest" || exit $? 6156266e564dSmrg fi 6157266e564dSmrg exit $EXIT_SUCCESS 6158266e564dSmrg ;; 6159266e564dSmrg 6160266e564dSmrg *) 6161266e564dSmrg # Figure out destination file name, if it wasn't already specified. 6162266e564dSmrg if test -n "$destname"; then 6163266e564dSmrg destfile="$destdir/$destname" 6164266e564dSmrg else 6165266e564dSmrg destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6166266e564dSmrg destfile="$destdir/$destfile" 6167266e564dSmrg fi 6168266e564dSmrg 6169266e564dSmrg # If the file is missing, and there is a .exe on the end, strip it 6170266e564dSmrg # because it is most likely a libtool script we actually want to 6171266e564dSmrg # install 6172266e564dSmrg stripped_ext="" 6173266e564dSmrg case $file in 6174266e564dSmrg *.exe) 6175266e564dSmrg if test ! -f "$file"; then 6176266e564dSmrg file=`$echo $file|${SED} 's,.exe$,,'` 6177266e564dSmrg stripped_ext=".exe" 6178266e564dSmrg fi 6179266e564dSmrg ;; 6180266e564dSmrg esac 6181266e564dSmrg 6182266e564dSmrg # Do a test to see if this is really a libtool program. 6183266e564dSmrg case $host in 6184266e564dSmrg *cygwin*|*mingw*) 6185266e564dSmrg wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` 6186266e564dSmrg ;; 6187266e564dSmrg *) 6188266e564dSmrg wrapper=$file 6189266e564dSmrg ;; 6190266e564dSmrg esac 6191266e564dSmrg if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then 6192266e564dSmrg notinst_deplibs= 6193266e564dSmrg relink_command= 6194266e564dSmrg 6195266e564dSmrg # Note that it is not necessary on cygwin/mingw to append a dot to 6196266e564dSmrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6197266e564dSmrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6198266e564dSmrg # `FILE.' does not work on cygwin managed mounts. 6199266e564dSmrg # 6200266e564dSmrg # If there is no directory component, then add one. 6201266e564dSmrg case $wrapper in 6202266e564dSmrg */* | *\\*) . ${wrapper} ;; 6203266e564dSmrg *) . ./${wrapper} ;; 6204266e564dSmrg esac 6205266e564dSmrg 6206266e564dSmrg # Check the variables that should have been set. 6207266e564dSmrg if test -z "$notinst_deplibs"; then 6208266e564dSmrg $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 6209266e564dSmrg exit $EXIT_FAILURE 6210266e564dSmrg fi 6211266e564dSmrg 6212266e564dSmrg finalize=yes 6213266e564dSmrg for lib in $notinst_deplibs; do 6214266e564dSmrg # Check to see that each library is installed. 6215266e564dSmrg libdir= 6216266e564dSmrg if test -f "$lib"; then 6217266e564dSmrg # If there is no directory component, then add one. 6218266e564dSmrg case $lib in 6219266e564dSmrg */* | *\\*) . $lib ;; 6220266e564dSmrg *) . ./$lib ;; 6221266e564dSmrg esac 6222266e564dSmrg fi 6223266e564dSmrg libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test 6224266e564dSmrg if test -n "$libdir" && test ! -f "$libfile"; then 6225266e564dSmrg $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 6226266e564dSmrg finalize=no 6227266e564dSmrg fi 6228266e564dSmrg done 6229266e564dSmrg 6230266e564dSmrg relink_command= 6231266e564dSmrg # Note that it is not necessary on cygwin/mingw to append a dot to 6232266e564dSmrg # foo even if both foo and FILE.exe exist: automatic-append-.exe 6233266e564dSmrg # behavior happens only for exec(3), not for open(2)! Also, sourcing 6234266e564dSmrg # `FILE.' does not work on cygwin managed mounts. 6235266e564dSmrg # 6236266e564dSmrg # If there is no directory component, then add one. 6237266e564dSmrg case $wrapper in 6238266e564dSmrg */* | *\\*) . ${wrapper} ;; 6239266e564dSmrg *) . ./${wrapper} ;; 6240266e564dSmrg esac 6241266e564dSmrg 6242266e564dSmrg outputname= 6243266e564dSmrg if test "$fast_install" = no && test -n "$relink_command"; then 6244266e564dSmrg if test "$finalize" = yes && test -z "$run"; then 6245266e564dSmrg tmpdir=`func_mktempdir` 6246266e564dSmrg file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` 6247266e564dSmrg outputname="$tmpdir/$file" 6248266e564dSmrg # Replace the output file specification. 6249c5629e66Smrg relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` 6250266e564dSmrg 6251266e564dSmrg $show "$relink_command" 6252266e564dSmrg if $run eval "$relink_command"; then : 6253266e564dSmrg else 6254266e564dSmrg $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 6255266e564dSmrg ${rm}r "$tmpdir" 6256266e564dSmrg continue 6257266e564dSmrg fi 6258266e564dSmrg file="$outputname" 6259266e564dSmrg else 6260266e564dSmrg $echo "$modename: warning: cannot relink \`$file'" 1>&2 6261266e564dSmrg fi 6262266e564dSmrg else 6263266e564dSmrg # Install the binary that we compiled earlier. 6264266e564dSmrg file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 6265266e564dSmrg fi 6266266e564dSmrg fi 6267266e564dSmrg 6268266e564dSmrg # remove .exe since cygwin /usr/bin/install will append another 6269266e564dSmrg # one anyway 6270266e564dSmrg case $install_prog,$host in 6271266e564dSmrg */usr/bin/install*,*cygwin*) 6272266e564dSmrg case $file:$destfile in 6273266e564dSmrg *.exe:*.exe) 6274266e564dSmrg # this is ok 6275266e564dSmrg ;; 6276266e564dSmrg *.exe:*) 6277266e564dSmrg destfile=$destfile.exe 6278266e564dSmrg ;; 6279266e564dSmrg *:*.exe) 6280266e564dSmrg destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` 6281266e564dSmrg ;; 6282266e564dSmrg esac 6283266e564dSmrg ;; 6284266e564dSmrg esac 6285266e564dSmrg $show "$install_prog$stripme $file $destfile" 6286266e564dSmrg $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 6287266e564dSmrg test -n "$outputname" && ${rm}r "$tmpdir" 6288266e564dSmrg ;; 6289266e564dSmrg esac 6290266e564dSmrg done 6291266e564dSmrg 6292266e564dSmrg for file in $staticlibs; do 6293266e564dSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6294266e564dSmrg 6295266e564dSmrg # Set up the ranlib parameters. 6296266e564dSmrg oldlib="$destdir/$name" 6297266e564dSmrg 6298266e564dSmrg $show "$install_prog $file $oldlib" 6299266e564dSmrg $run eval "$install_prog \$file \$oldlib" || exit $? 6300266e564dSmrg 6301266e564dSmrg if test -n "$stripme" && test -n "$old_striplib"; then 6302266e564dSmrg $show "$old_striplib $oldlib" 6303266e564dSmrg $run eval "$old_striplib $oldlib" || exit $? 6304266e564dSmrg fi 6305266e564dSmrg 6306266e564dSmrg # Do each command in the postinstall commands. 6307266e564dSmrg cmds=$old_postinstall_cmds 6308266e564dSmrg save_ifs="$IFS"; IFS='~' 6309266e564dSmrg for cmd in $cmds; do 6310266e564dSmrg IFS="$save_ifs" 6311266e564dSmrg eval cmd=\"$cmd\" 6312266e564dSmrg $show "$cmd" 6313266e564dSmrg $run eval "$cmd" || exit $? 6314266e564dSmrg done 6315266e564dSmrg IFS="$save_ifs" 6316266e564dSmrg done 6317266e564dSmrg 6318266e564dSmrg if test -n "$future_libdirs"; then 6319266e564dSmrg $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 6320266e564dSmrg fi 6321266e564dSmrg 6322266e564dSmrg if test -n "$current_libdirs"; then 6323266e564dSmrg # Maybe just do a dry run. 6324266e564dSmrg test -n "$run" && current_libdirs=" -n$current_libdirs" 6325266e564dSmrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 6326266e564dSmrg else 6327266e564dSmrg exit $EXIT_SUCCESS 6328266e564dSmrg fi 6329266e564dSmrg ;; 6330266e564dSmrg 6331266e564dSmrg # libtool finish mode 6332266e564dSmrg finish) 6333266e564dSmrg modename="$modename: finish" 6334266e564dSmrg libdirs="$nonopt" 6335266e564dSmrg admincmds= 6336266e564dSmrg 6337266e564dSmrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 6338266e564dSmrg for dir 6339266e564dSmrg do 6340266e564dSmrg libdirs="$libdirs $dir" 6341266e564dSmrg done 6342266e564dSmrg 6343266e564dSmrg for libdir in $libdirs; do 6344266e564dSmrg if test -n "$finish_cmds"; then 6345266e564dSmrg # Do each command in the finish commands. 6346266e564dSmrg cmds=$finish_cmds 6347266e564dSmrg save_ifs="$IFS"; IFS='~' 6348266e564dSmrg for cmd in $cmds; do 6349266e564dSmrg IFS="$save_ifs" 6350266e564dSmrg eval cmd=\"$cmd\" 6351266e564dSmrg $show "$cmd" 6352266e564dSmrg $run eval "$cmd" || admincmds="$admincmds 6353266e564dSmrg $cmd" 6354266e564dSmrg done 6355266e564dSmrg IFS="$save_ifs" 6356266e564dSmrg fi 6357266e564dSmrg if test -n "$finish_eval"; then 6358266e564dSmrg # Do the single finish_eval. 6359266e564dSmrg eval cmds=\"$finish_eval\" 6360266e564dSmrg $run eval "$cmds" || admincmds="$admincmds 6361266e564dSmrg $cmds" 6362266e564dSmrg fi 6363266e564dSmrg done 6364266e564dSmrg fi 6365266e564dSmrg 6366266e564dSmrg # Exit here if they wanted silent mode. 6367266e564dSmrg test "$show" = : && exit $EXIT_SUCCESS 6368266e564dSmrg 6369266e564dSmrg $echo "X----------------------------------------------------------------------" | $Xsed 6370266e564dSmrg $echo "Libraries have been installed in:" 6371266e564dSmrg for libdir in $libdirs; do 6372266e564dSmrg $echo " $libdir" 6373266e564dSmrg done 6374266e564dSmrg $echo 6375266e564dSmrg $echo "If you ever happen to want to link against installed libraries" 6376266e564dSmrg $echo "in a given directory, LIBDIR, you must either use libtool, and" 6377266e564dSmrg $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 6378266e564dSmrg $echo "flag during linking and do at least one of the following:" 6379266e564dSmrg if test -n "$shlibpath_var"; then 6380266e564dSmrg $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 6381266e564dSmrg $echo " during execution" 6382266e564dSmrg fi 6383266e564dSmrg if test -n "$runpath_var"; then 6384266e564dSmrg $echo " - add LIBDIR to the \`$runpath_var' environment variable" 6385266e564dSmrg $echo " during linking" 6386266e564dSmrg fi 6387266e564dSmrg if test -n "$hardcode_libdir_flag_spec"; then 6388266e564dSmrg libdir=LIBDIR 6389266e564dSmrg eval flag=\"$hardcode_libdir_flag_spec\" 6390266e564dSmrg 6391266e564dSmrg $echo " - use the \`$flag' linker flag" 6392266e564dSmrg fi 6393266e564dSmrg if test -n "$admincmds"; then 6394266e564dSmrg $echo " - have your system administrator run these commands:$admincmds" 6395266e564dSmrg fi 6396266e564dSmrg if test -f /etc/ld.so.conf; then 6397266e564dSmrg $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 6398266e564dSmrg fi 6399266e564dSmrg $echo 6400266e564dSmrg $echo "See any operating system documentation about shared libraries for" 6401266e564dSmrg $echo "more information, such as the ld(1) and ld.so(8) manual pages." 6402266e564dSmrg $echo "X----------------------------------------------------------------------" | $Xsed 6403266e564dSmrg exit $EXIT_SUCCESS 6404266e564dSmrg ;; 6405266e564dSmrg 6406266e564dSmrg # libtool execute mode 6407266e564dSmrg execute) 6408266e564dSmrg modename="$modename: execute" 6409266e564dSmrg 6410266e564dSmrg # The first argument is the command name. 6411266e564dSmrg cmd="$nonopt" 6412266e564dSmrg if test -z "$cmd"; then 6413266e564dSmrg $echo "$modename: you must specify a COMMAND" 1>&2 6414266e564dSmrg $echo "$help" 6415266e564dSmrg exit $EXIT_FAILURE 6416266e564dSmrg fi 6417266e564dSmrg 6418266e564dSmrg # Handle -dlopen flags immediately. 6419266e564dSmrg for file in $execute_dlfiles; do 6420266e564dSmrg if test ! -f "$file"; then 6421266e564dSmrg $echo "$modename: \`$file' is not a file" 1>&2 6422266e564dSmrg $echo "$help" 1>&2 6423266e564dSmrg exit $EXIT_FAILURE 6424266e564dSmrg fi 6425266e564dSmrg 6426266e564dSmrg dir= 6427266e564dSmrg case $file in 6428266e564dSmrg *.la) 6429266e564dSmrg # Check to see that this really is a libtool archive. 6430266e564dSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 6431266e564dSmrg else 6432266e564dSmrg $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 6433266e564dSmrg $echo "$help" 1>&2 6434266e564dSmrg exit $EXIT_FAILURE 6435266e564dSmrg fi 6436266e564dSmrg 6437266e564dSmrg # Read the libtool library. 6438266e564dSmrg dlname= 6439266e564dSmrg library_names= 6440266e564dSmrg 6441266e564dSmrg # If there is no directory component, then add one. 6442266e564dSmrg case $file in 6443266e564dSmrg */* | *\\*) . $file ;; 6444266e564dSmrg *) . ./$file ;; 6445266e564dSmrg esac 6446266e564dSmrg 6447266e564dSmrg # Skip this library if it cannot be dlopened. 6448266e564dSmrg if test -z "$dlname"; then 6449266e564dSmrg # Warn if it was a shared library. 6450266e564dSmrg test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 6451266e564dSmrg continue 6452266e564dSmrg fi 6453266e564dSmrg 6454266e564dSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6455266e564dSmrg test "X$dir" = "X$file" && dir=. 6456266e564dSmrg 6457266e564dSmrg if test -f "$dir/$objdir/$dlname"; then 6458266e564dSmrg dir="$dir/$objdir" 6459266e564dSmrg else 6460c5629e66Smrg if test ! -f "$dir/$dlname"; then 6461c5629e66Smrg $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 6462c5629e66Smrg exit $EXIT_FAILURE 6463c5629e66Smrg fi 6464266e564dSmrg fi 6465266e564dSmrg ;; 6466266e564dSmrg 6467266e564dSmrg *.lo) 6468266e564dSmrg # Just add the directory containing the .lo file. 6469266e564dSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6470266e564dSmrg test "X$dir" = "X$file" && dir=. 6471266e564dSmrg ;; 6472266e564dSmrg 6473266e564dSmrg *) 6474266e564dSmrg $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 6475266e564dSmrg continue 6476266e564dSmrg ;; 6477266e564dSmrg esac 6478266e564dSmrg 6479266e564dSmrg # Get the absolute pathname. 6480266e564dSmrg absdir=`cd "$dir" && pwd` 6481266e564dSmrg test -n "$absdir" && dir="$absdir" 6482266e564dSmrg 6483266e564dSmrg # Now add the directory to shlibpath_var. 6484266e564dSmrg if eval "test -z \"\$$shlibpath_var\""; then 6485266e564dSmrg eval "$shlibpath_var=\"\$dir\"" 6486266e564dSmrg else 6487266e564dSmrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 6488266e564dSmrg fi 6489266e564dSmrg done 6490266e564dSmrg 6491266e564dSmrg # This variable tells wrapper scripts just to set shlibpath_var 6492266e564dSmrg # rather than running their programs. 6493266e564dSmrg libtool_execute_magic="$magic" 6494266e564dSmrg 6495266e564dSmrg # Check if any of the arguments is a wrapper script. 6496266e564dSmrg args= 6497266e564dSmrg for file 6498266e564dSmrg do 6499266e564dSmrg case $file in 6500266e564dSmrg -*) ;; 6501266e564dSmrg *) 6502266e564dSmrg # Do a test to see if this is really a libtool program. 6503266e564dSmrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6504266e564dSmrg # If there is no directory component, then add one. 6505266e564dSmrg case $file in 6506266e564dSmrg */* | *\\*) . $file ;; 6507266e564dSmrg *) . ./$file ;; 6508266e564dSmrg esac 6509266e564dSmrg 6510266e564dSmrg # Transform arg to wrapped name. 6511266e564dSmrg file="$progdir/$program" 6512266e564dSmrg fi 6513266e564dSmrg ;; 6514266e564dSmrg esac 6515266e564dSmrg # Quote arguments (to preserve shell metacharacters). 6516266e564dSmrg file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 6517266e564dSmrg args="$args \"$file\"" 6518266e564dSmrg done 6519266e564dSmrg 6520266e564dSmrg if test -z "$run"; then 6521266e564dSmrg if test -n "$shlibpath_var"; then 6522266e564dSmrg # Export the shlibpath_var. 6523266e564dSmrg eval "export $shlibpath_var" 6524266e564dSmrg fi 6525266e564dSmrg 6526266e564dSmrg # Restore saved environment variables 6527c5629e66Smrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 6528c5629e66Smrg do 6529c5629e66Smrg eval "if test \"\${save_$lt_var+set}\" = set; then 6530c5629e66Smrg $lt_var=\$save_$lt_var; export $lt_var 6531c5629e66Smrg fi" 6532c5629e66Smrg done 6533266e564dSmrg 6534266e564dSmrg # Now prepare to actually exec the command. 6535266e564dSmrg exec_cmd="\$cmd$args" 6536266e564dSmrg else 6537266e564dSmrg # Display what would be done. 6538266e564dSmrg if test -n "$shlibpath_var"; then 6539266e564dSmrg eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 6540266e564dSmrg $echo "export $shlibpath_var" 6541266e564dSmrg fi 6542266e564dSmrg $echo "$cmd$args" 6543266e564dSmrg exit $EXIT_SUCCESS 6544266e564dSmrg fi 6545266e564dSmrg ;; 6546266e564dSmrg 6547266e564dSmrg # libtool clean and uninstall mode 6548266e564dSmrg clean | uninstall) 6549266e564dSmrg modename="$modename: $mode" 6550266e564dSmrg rm="$nonopt" 6551266e564dSmrg files= 6552266e564dSmrg rmforce= 6553266e564dSmrg exit_status=0 6554266e564dSmrg 6555266e564dSmrg # This variable tells wrapper scripts just to set variables rather 6556266e564dSmrg # than running their programs. 6557266e564dSmrg libtool_install_magic="$magic" 6558266e564dSmrg 6559266e564dSmrg for arg 6560266e564dSmrg do 6561266e564dSmrg case $arg in 6562266e564dSmrg -f) rm="$rm $arg"; rmforce=yes ;; 6563266e564dSmrg -*) rm="$rm $arg" ;; 6564266e564dSmrg *) files="$files $arg" ;; 6565266e564dSmrg esac 6566266e564dSmrg done 6567266e564dSmrg 6568266e564dSmrg if test -z "$rm"; then 6569266e564dSmrg $echo "$modename: you must specify an RM program" 1>&2 6570266e564dSmrg $echo "$help" 1>&2 6571266e564dSmrg exit $EXIT_FAILURE 6572266e564dSmrg fi 6573266e564dSmrg 6574266e564dSmrg rmdirs= 6575266e564dSmrg 6576266e564dSmrg origobjdir="$objdir" 6577266e564dSmrg for file in $files; do 6578266e564dSmrg dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 6579266e564dSmrg if test "X$dir" = "X$file"; then 6580266e564dSmrg dir=. 6581266e564dSmrg objdir="$origobjdir" 6582266e564dSmrg else 6583266e564dSmrg objdir="$dir/$origobjdir" 6584266e564dSmrg fi 6585266e564dSmrg name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 6586266e564dSmrg test "$mode" = uninstall && objdir="$dir" 6587266e564dSmrg 6588266e564dSmrg # Remember objdir for removal later, being careful to avoid duplicates 6589266e564dSmrg if test "$mode" = clean; then 6590266e564dSmrg case " $rmdirs " in 6591266e564dSmrg *" $objdir "*) ;; 6592266e564dSmrg *) rmdirs="$rmdirs $objdir" ;; 6593266e564dSmrg esac 6594266e564dSmrg fi 6595266e564dSmrg 6596266e564dSmrg # Don't error if the file doesn't exist and rm -f was used. 6597266e564dSmrg if (test -L "$file") >/dev/null 2>&1 \ 6598266e564dSmrg || (test -h "$file") >/dev/null 2>&1 \ 6599266e564dSmrg || test -f "$file"; then 6600266e564dSmrg : 6601266e564dSmrg elif test -d "$file"; then 6602266e564dSmrg exit_status=1 6603266e564dSmrg continue 6604266e564dSmrg elif test "$rmforce" = yes; then 6605266e564dSmrg continue 6606266e564dSmrg fi 6607266e564dSmrg 6608266e564dSmrg rmfiles="$file" 6609266e564dSmrg 6610266e564dSmrg case $name in 6611266e564dSmrg *.la) 6612266e564dSmrg # Possibly a libtool archive, so verify it. 6613266e564dSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6614266e564dSmrg . $dir/$name 6615266e564dSmrg 6616266e564dSmrg # Delete the libtool libraries and symlinks. 6617266e564dSmrg for n in $library_names; do 6618266e564dSmrg rmfiles="$rmfiles $objdir/$n" 6619266e564dSmrg done 6620266e564dSmrg test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 6621266e564dSmrg 6622266e564dSmrg case "$mode" in 6623266e564dSmrg clean) 6624266e564dSmrg case " $library_names " in 6625266e564dSmrg # " " in the beginning catches empty $dlname 6626266e564dSmrg *" $dlname "*) ;; 6627266e564dSmrg *) rmfiles="$rmfiles $objdir/$dlname" ;; 6628266e564dSmrg esac 6629266e564dSmrg test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 6630266e564dSmrg ;; 6631266e564dSmrg uninstall) 6632266e564dSmrg if test -n "$library_names"; then 6633266e564dSmrg # Do each command in the postuninstall commands. 6634266e564dSmrg cmds=$postuninstall_cmds 6635266e564dSmrg save_ifs="$IFS"; IFS='~' 6636266e564dSmrg for cmd in $cmds; do 6637266e564dSmrg IFS="$save_ifs" 6638266e564dSmrg eval cmd=\"$cmd\" 6639266e564dSmrg $show "$cmd" 6640266e564dSmrg $run eval "$cmd" 6641266e564dSmrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6642266e564dSmrg exit_status=1 6643266e564dSmrg fi 6644266e564dSmrg done 6645266e564dSmrg IFS="$save_ifs" 6646266e564dSmrg fi 6647266e564dSmrg 6648266e564dSmrg if test -n "$old_library"; then 6649266e564dSmrg # Do each command in the old_postuninstall commands. 6650266e564dSmrg cmds=$old_postuninstall_cmds 6651266e564dSmrg save_ifs="$IFS"; IFS='~' 6652266e564dSmrg for cmd in $cmds; do 6653266e564dSmrg IFS="$save_ifs" 6654266e564dSmrg eval cmd=\"$cmd\" 6655266e564dSmrg $show "$cmd" 6656266e564dSmrg $run eval "$cmd" 6657266e564dSmrg if test "$?" -ne 0 && test "$rmforce" != yes; then 6658266e564dSmrg exit_status=1 6659266e564dSmrg fi 6660266e564dSmrg done 6661266e564dSmrg IFS="$save_ifs" 6662266e564dSmrg fi 6663266e564dSmrg # FIXME: should reinstall the best remaining shared library. 6664266e564dSmrg ;; 6665266e564dSmrg esac 6666266e564dSmrg fi 6667266e564dSmrg ;; 6668266e564dSmrg 6669266e564dSmrg *.lo) 6670266e564dSmrg # Possibly a libtool object, so verify it. 6671266e564dSmrg if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6672266e564dSmrg 6673266e564dSmrg # Read the .lo file 6674266e564dSmrg . $dir/$name 6675266e564dSmrg 6676266e564dSmrg # Add PIC object to the list of files to remove. 6677266e564dSmrg if test -n "$pic_object" \ 6678266e564dSmrg && test "$pic_object" != none; then 6679266e564dSmrg rmfiles="$rmfiles $dir/$pic_object" 6680266e564dSmrg fi 6681266e564dSmrg 6682266e564dSmrg # Add non-PIC object to the list of files to remove. 6683266e564dSmrg if test -n "$non_pic_object" \ 6684266e564dSmrg && test "$non_pic_object" != none; then 6685266e564dSmrg rmfiles="$rmfiles $dir/$non_pic_object" 6686266e564dSmrg fi 6687266e564dSmrg fi 6688266e564dSmrg ;; 6689266e564dSmrg 6690266e564dSmrg *) 6691266e564dSmrg if test "$mode" = clean ; then 6692266e564dSmrg noexename=$name 6693266e564dSmrg case $file in 6694266e564dSmrg *.exe) 6695266e564dSmrg file=`$echo $file|${SED} 's,.exe$,,'` 6696266e564dSmrg noexename=`$echo $name|${SED} 's,.exe$,,'` 6697266e564dSmrg # $file with .exe has already been added to rmfiles, 6698266e564dSmrg # add $file without .exe 6699266e564dSmrg rmfiles="$rmfiles $file" 6700266e564dSmrg ;; 6701266e564dSmrg esac 6702266e564dSmrg # Do a test to see if this is a libtool program. 6703266e564dSmrg if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 6704266e564dSmrg relink_command= 6705266e564dSmrg . $dir/$noexename 6706266e564dSmrg 6707266e564dSmrg # note $name still contains .exe if it was in $file originally 6708266e564dSmrg # as does the version of $file that was added into $rmfiles 6709266e564dSmrg rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 6710266e564dSmrg if test "$fast_install" = yes && test -n "$relink_command"; then 6711266e564dSmrg rmfiles="$rmfiles $objdir/lt-$name" 6712266e564dSmrg fi 6713266e564dSmrg if test "X$noexename" != "X$name" ; then 6714266e564dSmrg rmfiles="$rmfiles $objdir/lt-${noexename}.c" 6715266e564dSmrg fi 6716266e564dSmrg fi 6717266e564dSmrg fi 6718266e564dSmrg ;; 6719266e564dSmrg esac 6720266e564dSmrg $show "$rm $rmfiles" 6721266e564dSmrg $run $rm $rmfiles || exit_status=1 6722266e564dSmrg done 6723266e564dSmrg objdir="$origobjdir" 6724266e564dSmrg 6725266e564dSmrg # Try to remove the ${objdir}s in the directories where we deleted files 6726266e564dSmrg for dir in $rmdirs; do 6727266e564dSmrg if test -d "$dir"; then 6728266e564dSmrg $show "rmdir $dir" 6729266e564dSmrg $run rmdir $dir >/dev/null 2>&1 6730266e564dSmrg fi 6731266e564dSmrg done 6732266e564dSmrg 6733266e564dSmrg exit $exit_status 6734266e564dSmrg ;; 6735266e564dSmrg 6736266e564dSmrg "") 6737266e564dSmrg $echo "$modename: you must specify a MODE" 1>&2 6738266e564dSmrg $echo "$generic_help" 1>&2 6739266e564dSmrg exit $EXIT_FAILURE 6740266e564dSmrg ;; 6741266e564dSmrg esac 6742266e564dSmrg 6743266e564dSmrg if test -z "$exec_cmd"; then 6744266e564dSmrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6745266e564dSmrg $echo "$generic_help" 1>&2 6746266e564dSmrg exit $EXIT_FAILURE 6747266e564dSmrg fi 6748266e564dSmrgfi # test -z "$show_help" 6749266e564dSmrg 6750266e564dSmrgif test -n "$exec_cmd"; then 6751266e564dSmrg eval exec $exec_cmd 6752266e564dSmrg exit $EXIT_FAILURE 6753266e564dSmrgfi 6754266e564dSmrg 6755266e564dSmrg# We need to display help for each of the modes. 6756266e564dSmrgcase $mode in 6757266e564dSmrg"") $echo \ 6758266e564dSmrg"Usage: $modename [OPTION]... [MODE-ARG]... 6759266e564dSmrg 6760266e564dSmrgProvide generalized library-building support services. 6761266e564dSmrg 6762266e564dSmrg --config show all configuration variables 6763266e564dSmrg --debug enable verbose shell tracing 6764266e564dSmrg-n, --dry-run display commands without modifying any files 6765266e564dSmrg --features display basic configuration information and exit 6766266e564dSmrg --finish same as \`--mode=finish' 6767266e564dSmrg --help display this help message and exit 6768266e564dSmrg --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 6769266e564dSmrg --quiet same as \`--silent' 6770266e564dSmrg --silent don't print informational messages 6771266e564dSmrg --tag=TAG use configuration variables from tag TAG 6772266e564dSmrg --version print version information 6773266e564dSmrg 6774266e564dSmrgMODE must be one of the following: 6775266e564dSmrg 6776266e564dSmrg clean remove files from the build directory 6777266e564dSmrg compile compile a source file into a libtool object 6778266e564dSmrg execute automatically set library path, then run a program 6779266e564dSmrg finish complete the installation of libtool libraries 6780266e564dSmrg install install libraries or executables 6781266e564dSmrg link create a library or an executable 6782266e564dSmrg uninstall remove libraries from an installed directory 6783266e564dSmrg 6784266e564dSmrgMODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 6785266e564dSmrga more detailed description of MODE. 6786266e564dSmrg 6787266e564dSmrgReport bugs to <bug-libtool@gnu.org>." 6788266e564dSmrg exit $EXIT_SUCCESS 6789266e564dSmrg ;; 6790266e564dSmrg 6791266e564dSmrgclean) 6792266e564dSmrg $echo \ 6793266e564dSmrg"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 6794266e564dSmrg 6795266e564dSmrgRemove files from the build directory. 6796266e564dSmrg 6797266e564dSmrgRM is the name of the program to use to delete files associated with each FILE 6798266e564dSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6799266e564dSmrgto RM. 6800266e564dSmrg 6801266e564dSmrgIf FILE is a libtool library, object or program, all the files associated 6802266e564dSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 6803266e564dSmrg ;; 6804266e564dSmrg 6805266e564dSmrgcompile) 6806266e564dSmrg $echo \ 6807266e564dSmrg"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 6808266e564dSmrg 6809266e564dSmrgCompile a source file into a libtool library object. 6810266e564dSmrg 6811266e564dSmrgThis mode accepts the following additional options: 6812266e564dSmrg 6813266e564dSmrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 6814266e564dSmrg -prefer-pic try to building PIC objects only 6815266e564dSmrg -prefer-non-pic try to building non-PIC objects only 6816266e564dSmrg -static always build a \`.o' file suitable for static linking 6817266e564dSmrg 6818266e564dSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 6819266e564dSmrgfrom the given SOURCEFILE. 6820266e564dSmrg 6821266e564dSmrgThe output file name is determined by removing the directory component from 6822266e564dSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 6823266e564dSmrglibrary object suffix, \`.lo'." 6824266e564dSmrg ;; 6825266e564dSmrg 6826266e564dSmrgexecute) 6827266e564dSmrg $echo \ 6828266e564dSmrg"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 6829266e564dSmrg 6830266e564dSmrgAutomatically set library path, then run a program. 6831266e564dSmrg 6832266e564dSmrgThis mode accepts the following additional options: 6833266e564dSmrg 6834266e564dSmrg -dlopen FILE add the directory containing FILE to the library path 6835266e564dSmrg 6836266e564dSmrgThis mode sets the library path environment variable according to \`-dlopen' 6837266e564dSmrgflags. 6838266e564dSmrg 6839266e564dSmrgIf any of the ARGS are libtool executable wrappers, then they are translated 6840266e564dSmrginto their corresponding uninstalled binary, and any of their required library 6841266e564dSmrgdirectories are added to the library path. 6842266e564dSmrg 6843266e564dSmrgThen, COMMAND is executed, with ARGS as arguments." 6844266e564dSmrg ;; 6845266e564dSmrg 6846266e564dSmrgfinish) 6847266e564dSmrg $echo \ 6848266e564dSmrg"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 6849266e564dSmrg 6850266e564dSmrgComplete the installation of libtool libraries. 6851266e564dSmrg 6852266e564dSmrgEach LIBDIR is a directory that contains libtool libraries. 6853266e564dSmrg 6854266e564dSmrgThe commands that this mode executes may require superuser privileges. Use 6855266e564dSmrgthe \`--dry-run' option if you just want to see what would be executed." 6856266e564dSmrg ;; 6857266e564dSmrg 6858266e564dSmrginstall) 6859266e564dSmrg $echo \ 6860266e564dSmrg"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 6861266e564dSmrg 6862266e564dSmrgInstall executables or libraries. 6863266e564dSmrg 6864266e564dSmrgINSTALL-COMMAND is the installation command. The first component should be 6865266e564dSmrgeither the \`install' or \`cp' program. 6866266e564dSmrg 6867266e564dSmrgThe rest of the components are interpreted as arguments to that command (only 6868266e564dSmrgBSD-compatible install options are recognized)." 6869266e564dSmrg ;; 6870266e564dSmrg 6871266e564dSmrglink) 6872266e564dSmrg $echo \ 6873266e564dSmrg"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 6874266e564dSmrg 6875266e564dSmrgLink object files or libraries together to form another library, or to 6876266e564dSmrgcreate an executable program. 6877266e564dSmrg 6878266e564dSmrgLINK-COMMAND is a command using the C compiler that you would use to create 6879266e564dSmrga program from several object files. 6880266e564dSmrg 6881266e564dSmrgThe following components of LINK-COMMAND are treated specially: 6882266e564dSmrg 6883266e564dSmrg -all-static do not do any dynamic linking at all 6884266e564dSmrg -avoid-version do not add a version suffix if possible 6885266e564dSmrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 6886266e564dSmrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 6887266e564dSmrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 6888266e564dSmrg -export-symbols SYMFILE 6889c5629e66Smrg try to export only the symbols listed in SYMFILE 6890266e564dSmrg -export-symbols-regex REGEX 6891c5629e66Smrg try to export only the symbols matching REGEX 6892266e564dSmrg -LLIBDIR search LIBDIR for required installed libraries 6893266e564dSmrg -lNAME OUTPUT-FILE requires the installed library libNAME 6894266e564dSmrg -module build a library that can dlopened 6895266e564dSmrg -no-fast-install disable the fast-install mode 6896266e564dSmrg -no-install link a not-installable executable 6897266e564dSmrg -no-undefined declare that a library does not refer to external symbols 6898266e564dSmrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 6899266e564dSmrg -objectlist FILE Use a list of object files found in FILE to specify objects 6900266e564dSmrg -precious-files-regex REGEX 6901266e564dSmrg don't remove output files matching REGEX 6902266e564dSmrg -release RELEASE specify package release information 6903266e564dSmrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 6904266e564dSmrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 6905c5629e66Smrg -static do not do any dynamic linking of uninstalled libtool libraries 6906c5629e66Smrg -static-libtool-libs 6907c5629e66Smrg do not do any dynamic linking of libtool libraries 6908266e564dSmrg -version-info CURRENT[:REVISION[:AGE]] 6909c5629e66Smrg specify library version info [each variable defaults to 0] 6910266e564dSmrg 6911266e564dSmrgAll other options (arguments beginning with \`-') are ignored. 6912266e564dSmrg 6913266e564dSmrgEvery other argument is treated as a filename. Files ending in \`.la' are 6914266e564dSmrgtreated as uninstalled libtool libraries, other files are standard or library 6915266e564dSmrgobject files. 6916266e564dSmrg 6917266e564dSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 6918266e564dSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 6919266e564dSmrgrequired, except when creating a convenience library. 6920266e564dSmrg 6921266e564dSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 6922266e564dSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 6923266e564dSmrg 6924266e564dSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 6925266e564dSmrgis created, otherwise an executable program is created." 6926266e564dSmrg ;; 6927266e564dSmrg 6928266e564dSmrguninstall) 6929266e564dSmrg $echo \ 6930266e564dSmrg"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 6931266e564dSmrg 6932266e564dSmrgRemove libraries from an installation directory. 6933266e564dSmrg 6934266e564dSmrgRM is the name of the program to use to delete files associated with each FILE 6935266e564dSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 6936266e564dSmrgto RM. 6937266e564dSmrg 6938266e564dSmrgIf FILE is a libtool library, all the files associated with it are deleted. 6939266e564dSmrgOtherwise, only FILE itself is deleted using RM." 6940266e564dSmrg ;; 6941266e564dSmrg 6942266e564dSmrg*) 6943266e564dSmrg $echo "$modename: invalid operation mode \`$mode'" 1>&2 6944266e564dSmrg $echo "$help" 1>&2 6945266e564dSmrg exit $EXIT_FAILURE 6946266e564dSmrg ;; 6947266e564dSmrgesac 6948266e564dSmrg 6949266e564dSmrg$echo 6950266e564dSmrg$echo "Try \`$modename --help' for more information about other modes." 6951266e564dSmrg 6952266e564dSmrgexit $? 6953266e564dSmrg 6954266e564dSmrg# The TAGs below are defined such that we never get into a situation 6955266e564dSmrg# in which we disable both kinds of libraries. Given conflicting 6956266e564dSmrg# choices, we go for a static library, that is the most portable, 6957266e564dSmrg# since we can't tell whether shared libraries were disabled because 6958266e564dSmrg# the user asked for that or because the platform doesn't support 6959266e564dSmrg# them. This is particularly important on AIX, because we don't 6960266e564dSmrg# support having both static and shared libraries enabled at the same 6961266e564dSmrg# time on that platform, so we default to a shared-only configuration. 6962266e564dSmrg# If a disable-shared tag is given, we'll fallback to a static-only 6963266e564dSmrg# configuration. But we'll never go from static-only to shared-only. 6964266e564dSmrg 6965266e564dSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 6966266e564dSmrgdisable_libs=shared 6967266e564dSmrg# ### END LIBTOOL TAG CONFIG: disable-shared 6968266e564dSmrg 6969266e564dSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 6970266e564dSmrgdisable_libs=static 6971266e564dSmrg# ### END LIBTOOL TAG CONFIG: disable-static 6972266e564dSmrg 6973266e564dSmrg# Local Variables: 6974266e564dSmrg# mode:shell-script 6975266e564dSmrg# sh-indentation:2 6976266e564dSmrg# End: 6977