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