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