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