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