1 # ltmain.sh - Provide generalized library-building support services. 2 # NOTE: Changing this file will not affect anything until you rerun ltconfig. 3 # 4 # Copyright (C) 1996-1998 Free Software Foundation, Inc. 5 # Gordon Matzigkeit <gord (at] gnu.ai.mit.edu>, 1996 6 # 7 # This program is free software; you can redistribute it and/or modify 8 # it under the terms of the GNU General Public License as published by 9 # the Free Software Foundation; either version 2 of the License, or 10 # (at your option) any later version. 11 # 12 # This program is distributed in the hope that it will be useful, but 13 # WITHOUT ANY WARRANTY; without even the implied warranty of 14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 # General Public License for more details. 16 # 17 # You should have received a copy of the GNU General Public License 18 # along with this program; if not, write to the Free Software 19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 # 21 # As a special exception to the GNU General Public License, if you 22 # distribute this file as part of a program that contains a 23 # configuration script generated by Autoconf, you may include it under 24 # the same distribution terms that you use for the rest of that program. 25 26 # The name of this program. 27 progname=`$echo "$0" | sed 's%^.*/%%'` 28 modename="$progname" 29 30 # Constants. 31 PROGRAM=ltmain.sh 32 PACKAGE=libtool 33 VERSION=1.2 34 35 default_mode= 36 help="Try \`$progname --help' for more information." 37 magic="%%%MAGIC variable%%%" 38 mkdir="mkdir" 39 mv="mv -f" 40 rm="rm -f" 41 42 # Sed substitution that helps us do robust quoting. It backslashifies 43 # metacharacters that are still active within double-quoted strings. 44 Xsed='sed -e s/^X//' 45 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 46 47 # NLS nuisances. 48 # Only set LANG and LC_ALL to C if already set. 49 # These must not be set unconditionally because not all systems understand 50 # e.g. LANG=C (notably SCO). 51 if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi 52 if test "${LANG+set}" = set; then LANG=C; export LANG; fi 53 54 if test "$LTCONFIG_VERSION" != "$VERSION"; then 55 echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 56 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 57 exit 1 58 fi 59 60 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 61 echo "$modename: not configured to build any kind of library" 1>&2 62 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 63 exit 1 64 fi 65 66 # Global variables. 67 mode=$default_mode 68 nonopt= 69 prev= 70 prevopt= 71 run= 72 show="$echo" 73 show_help= 74 execute_dlfiles= 75 76 # Parse our command line options once, thoroughly. 77 while test $# -gt 0 78 do 79 arg="$1" 80 shift 81 82 case "$arg" in 83 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 84 *) optarg= ;; 85 esac 86 87 # If the previous option needs an argument, assign it. 88 if test -n "$prev"; then 89 case "$prev" in 90 execute_dlfiles) 91 eval "$prev=\"\$$prev \$arg\"" 92 ;; 93 *) 94 eval "$prev=\$arg" 95 ;; 96 esac 97 98 prev= 99 prevopt= 100 continue 101 fi 102 103 # Have we seen a non-optional argument yet? 104 case "$arg" in 105 --help) 106 show_help=yes 107 ;; 108 109 --version) 110 echo "$PROGRAM (GNU $PACKAGE) $VERSION" 111 exit 0 112 ;; 113 114 --dry-run | -n) 115 run=: 116 ;; 117 118 --features) 119 echo "host: $host" 120 if test "$build_libtool_libs" = yes; then 121 echo "enable shared libraries" 122 else 123 echo "disable shared libraries" 124 fi 125 if test "$build_old_libs" = yes; then 126 echo "enable static libraries" 127 else 128 echo "disable static libraries" 129 fi 130 exit 0 131 ;; 132 133 --finish) mode="finish" ;; 134 135 --mode) prevopt="--mode" prev=mode ;; 136 --mode=*) mode="$optarg" ;; 137 138 --quiet | --silent) 139 show=: 140 ;; 141 142 -dlopen) 143 prevopt="-dlopen" 144 prev=execute_dlfiles 145 ;; 146 147 -*) 148 $echo "$modename: unrecognized option \`$arg'" 1>&2 149 $echo "$help" 1>&2 150 exit 1 151 ;; 152 153 *) 154 nonopt="$arg" 155 break 156 ;; 157 esac 158 done 159 160 if test -n "$prevopt"; then 161 $echo "$modename: option \`$prevopt' requires an argument" 1>&2 162 $echo "$help" 1>&2 163 exit 1 164 fi 165 166 if test -z "$show_help"; then 167 168 # Infer the operation mode. 169 if test -z "$mode"; then 170 case "$nonopt" in 171 *cc | *++ | gcc* | *-gcc*) 172 mode=link 173 for arg 174 do 175 case "$arg" in 176 -c) 177 mode=compile 178 break 179 ;; 180 esac 181 done 182 ;; 183 *db | *dbx) 184 mode=execute 185 ;; 186 *install*|cp|mv) 187 mode=install 188 ;; 189 *rm) 190 mode=uninstall 191 ;; 192 *) 193 # If we have no mode, but dlfiles were specified, then do execute mode. 194 test -n "$execute_dlfiles" && mode=execute 195 196 # Just use the default operation mode. 197 if test -z "$mode"; then 198 if test -n "$nonopt"; then 199 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 200 else 201 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 202 fi 203 fi 204 ;; 205 esac 206 fi 207 208 # Only execute mode is allowed to have -dlopen flags. 209 if test -n "$execute_dlfiles" && test "$mode" != execute; then 210 $echo "$modename: unrecognized option \`-dlopen'" 1>&2 211 $echo "$help" 1>&2 212 exit 1 213 fi 214 215 # Change the help message to a mode-specific one. 216 generic_help="$help" 217 help="Try \`$modename --help --mode=$mode' for more information." 218 219 # These modes are in order of execution frequency so that they run quickly. 220 case "$mode" in 221 # libtool compile mode 222 compile) 223 modename="$modename: compile" 224 # Get the compilation command and the source file. 225 base_compile= 226 lastarg= 227 srcfile="$nonopt" 228 suppress_output= 229 230 for arg 231 do 232 # Accept any command-line options. 233 case "$arg" in 234 -o) 235 $echo "$modename: you cannot specify the output filename with \`-o'" 1>&2 236 $echo "$help" 1>&2 237 exit 1 238 ;; 239 240 -static) 241 build_libtool_libs=no 242 build_old_libs=yes 243 continue 244 ;; 245 esac 246 247 # Accept the current argument as the source file. 248 lastarg="$srcfile" 249 srcfile="$arg" 250 251 # Aesthetically quote the previous argument. 252 253 # Backslashify any backslashes, double quotes, and dollar signs. 254 # These are the only characters that are still specially 255 # interpreted inside of double-quoted scrings. 256 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 257 258 # Double-quote args containing other shell metacharacters. 259 # Many Bourne shells cannot handle close brackets correctly in scan 260 # sets, so we specify it separately. 261 case "$lastarg" in 262 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 263 lastarg="\"$lastarg\"" 264 ;; 265 esac 266 267 # Add the previous argument to base_compile. 268 if test -z "$base_compile"; then 269 base_compile="$lastarg" 270 else 271 base_compile="$base_compile $lastarg" 272 fi 273 done 274 275 # Get the name of the library object. 276 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 277 278 # Recognize several different file suffixes. 279 xform='[cCFSfms]' 280 case "$libobj" in 281 *.ada) xform=ada ;; 282 *.adb) xform=adb ;; 283 *.ads) xform=ads ;; 284 *.asm) xform=asm ;; 285 *.c++) xform=c++ ;; 286 *.cc) xform=cc ;; 287 *.cpp) xform=cpp ;; 288 *.cxx) xform=cxx ;; 289 *.f90) xform=f90 ;; 290 *.for) xform=for ;; 291 esac 292 293 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 294 295 case "$libobj" in 296 *.lo) obj=`$echo "X$libobj" | $Xsed -e 's/\.lo$/.o/'` ;; 297 *) 298 $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2 299 exit 1 300 ;; 301 esac 302 303 if test -z "$base_compile"; then 304 $echo "$modename: you must specify a compilation command" 1>&2 305 $echo "$help" 1>&2 306 exit 1 307 fi 308 309 # Delete any leftover library objects. 310 if test "$build_old_libs" = yes; then 311 $run $rm $obj $libobj 312 trap "$run $rm $obj $libobj; exit 1" 1 2 15 313 else 314 $run $rm $libobj 315 trap "$run $rm $libobj; exit 1" 1 2 15 316 fi 317 318 # Only build a PIC object if we are building libtool libraries. 319 if test "$build_libtool_libs" = yes; then 320 # Without this assignment, base_compile gets emptied. 321 fbsd_hideous_sh_bug=$base_compile 322 323 # All platforms use -DPIC, to notify preprocessed assembler code. 324 $show "$base_compile$pic_flag -DPIC $srcfile" 325 if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then : 326 else 327 test -n "$obj" && $run $rm $obj 328 exit 1 329 fi 330 331 # If we have no pic_flag, then copy the object into place and finish. 332 if test -z "$pic_flag"; then 333 $show "$LN_S $obj $libobj" 334 $run $LN_S $obj $libobj 335 exit $? 336 fi 337 338 # Just move the object, then go on to compile the next one 339 $show "$mv $obj $libobj" 340 $run $mv $obj $libobj || exit 1 341 342 # Allow error messages only from the first compilation. 343 suppress_output=' >/dev/null 2>&1' 344 fi 345 346 # Only build a position-dependent object if we build old libraries. 347 if test "$build_old_libs" = yes; then 348 # Suppress compiler output if we already did a PIC compilation. 349 $show "$base_compile $srcfile$suppress_output" 350 if $run eval "$base_compile \$srcfile$suppress_output"; then : 351 else 352 $run $rm $obj $libobj 353 exit 1 354 fi 355 fi 356 357 # Create an invalid libtool object if no PIC, so that we do not 358 # accidentally link it into a program. 359 if test "$build_libtool_libs" != yes; then 360 $show "echo timestamp > $libobj" 361 $run eval "echo timestamp > \$libobj" || exit $? 362 fi 363 364 exit 0 365 ;; 366 367 # libtool link mode 368 link) 369 modename="$modename: link" 370 CC="$nonopt" 371 allow_undefined=yes 372 compile_command="$CC" 373 finalize_command="$CC" 374 375 compile_shlibpath= 376 finalize_shlibpath= 377 deplibs= 378 dlfiles= 379 dlprefiles= 380 export_dynamic=no 381 hardcode_libdirs= 382 libobjs= 383 link_against_libtool_libs= 384 ltlibs= 385 objs= 386 prev= 387 prevarg= 388 release= 389 rpath= 390 perm_rpath= 391 temp_rpath= 392 vinfo= 393 394 # We need to know -static, to get the right output filenames. 395 for arg 396 do 397 case "$arg" in 398 -all-static | -static) 399 if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 400 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 401 fi 402 build_libtool_libs=no 403 build_old_libs=yes 404 break 405 ;; 406 esac 407 done 408 409 # See if our shared archives depend on static archives. 410 test -n "$old_archive_from_new_cmds" && build_old_libs=yes 411 412 # Go through the arguments, transforming them on the way. 413 for arg 414 do 415 # If the previous option needs an argument, assign it. 416 if test -n "$prev"; then 417 case "$prev" in 418 output) 419 compile_command="$compile_command @OUTPUT@" 420 finalize_command="$finalize_command @OUTPUT@" 421 ;; 422 esac 423 424 case "$prev" in 425 dlfiles|dlprefiles) 426 case "$arg" in 427 *.la | *.lo) ;; # We handle these cases below. 428 *) 429 dlprefiles="$dlprefiles $arg" 430 test "$prev" = dlfiles && dlfiles="$dlfiles $arg" 431 prev= 432 ;; 433 esac 434 ;; 435 release) 436 release="-$arg" 437 prev= 438 continue 439 ;; 440 rpath) 441 rpath="$rpath $arg" 442 prev= 443 continue 444 ;; 445 *) 446 eval "$prev=\"\$arg\"" 447 prev= 448 continue 449 ;; 450 esac 451 fi 452 453 prevarg="$arg" 454 455 case "$arg" in 456 -all-static) 457 if test -n "$link_static_flag"; then 458 compile_command="$compile_command $link_static_flag" 459 finalize_command="$finalize_command $link_static_flag" 460 fi 461 continue 462 ;; 463 464 -allow-undefined) 465 # FIXME: remove this flag sometime in the future. 466 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 467 continue 468 ;; 469 470 -dlopen) 471 prev=dlfiles 472 continue 473 ;; 474 475 -dlpreopen) 476 prev=dlprefiles 477 continue 478 ;; 479 480 -export-dynamic) 481 if test "$export_dynamic" != yes; then 482 export_dynamic=yes 483 if test -n "$export_dynamic_flag_spec"; then 484 eval arg=\"$export_dynamic_flag_spec\" 485 else 486 arg= 487 fi 488 489 # Add the symbol object into the linking commands. 490 compile_command="$compile_command @SYMFILE@" 491 finalize_command="$finalize_command @SYMFILE@" 492 fi 493 ;; 494 495 -L*) 496 dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'` 497 case "$dir" in 498 /* | [A-Za-z]:\\*) 499 # Add the corresponding hardcode_libdir_flag, if it is not identical. 500 ;; 501 *) 502 $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2 503 exit 1 504 ;; 505 esac 506 deplibs="$deplibs $arg" 507 ;; 508 509 -l*) deplibs="$deplibs $arg" ;; 510 511 -no-undefined) 512 allow_undefined=no 513 continue 514 ;; 515 516 -o) prev=output ;; 517 518 -release) 519 prev=release 520 continue 521 ;; 522 523 -rpath) 524 prev=rpath 525 continue 526 ;; 527 528 -static) 529 # If we have no pic_flag, then this is the same as -all-static. 530 if test -z "$pic_flag" && test -n "$link_static_flag"; then 531 compile_command="$compile_command $link_static_flag" 532 finalize_command="$finalize_command $link_static_flag" 533 fi 534 continue 535 ;; 536 537 -version-info) 538 prev=vinfo 539 continue 540 ;; 541 542 # Some other compiler flag. 543 -* | +*) 544 # Unknown arguments in both finalize_command and compile_command need 545 # to be aesthetically quoted because they are evaled later. 546 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 547 case "$arg" in 548 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 549 arg="\"$arg\"" 550 ;; 551 esac 552 ;; 553 554 *.o | *.a) 555 # A standard object. 556 objs="$objs $arg" 557 ;; 558 559 *.lo) 560 # A library object. 561 if test "$prev" = dlfiles; then 562 dlfiles="$dlfiles $arg" 563 if test "$build_libtool_libs" = yes; then 564 prev= 565 continue 566 else 567 # If libtool objects are unsupported, then we need to preload. 568 prev=dlprefiles 569 fi 570 fi 571 572 if test "$prev" = dlprefiles; then 573 # Preload the old-style object. 574 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'` 575 prev= 576 fi 577 libobjs="$libobjs $arg" 578 ;; 579 580 *.la) 581 # A libtool-controlled library. 582 583 dlname= 584 libdir= 585 library_names= 586 old_library= 587 588 # Check to see that this really is a libtool archive. 589 if (sed -e '2q' $arg | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : 590 else 591 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 592 exit 1 593 fi 594 595 # If there is no directory component, then add one. 596 case "$arg" in 597 */* | *\\*) . $arg ;; 598 *) . ./$arg ;; 599 esac 600 601 if test -z "$libdir"; then 602 $echo "$modename: \`$arg' contains no -rpath information" 1>&2 603 exit 1 604 fi 605 606 # Get the name of the library we link against. 607 linklib= 608 for l in $old_library $library_names; do 609 linklib="$l" 610 done 611 612 if test -z "$linklib"; then 613 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 614 exit 1 615 fi 616 617 # Find the relevant object directory and library name. 618 name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` 619 dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 620 if test "X$dir" = "X$arg"; then 621 dir="$objdir" 622 else 623 dir="$dir/$objdir" 624 fi 625 626 # This library was specified with -dlopen. 627 if test "$prev" = dlfiles; then 628 dlfiles="$dlfiles $arg" 629 if test -z "$dlname"; then 630 # If there is no dlname, we need to preload. 631 prev=dlprefiles 632 else 633 # We should not create a dependency on this library, but we 634 # may need any libraries it requires. 635 compile_command="$compile_command$dependency_libs" 636 finalize_command="$finalize_command$dependency_libs" 637 prev= 638 continue 639 fi 640 fi 641 642 # The library was specified with -dlpreopen. 643 if test "$prev" = dlprefiles; then 644 # Prefer using a static library (so that no silly _DYNAMIC symbols 645 # are required to link). 646 if test -n "$old_library"; then 647 dlprefiles="$dlprefiles $dir/$old_library" 648 else 649 dlprefiles="$dlprefiles $dir/$linklib" 650 fi 651 prev= 652 fi 653 654 if test "$build_libtool_libs" = yes && test -n "$library_names"; then 655 link_against_libtool_libs="$link_against_libtool_libs $arg" 656 if test -n "$shlibpath_var"; then 657 # Make sure the rpath contains only unique directories. 658 case "$temp_rpath " in 659 *" $dir "*) ;; 660 *) temp_rpath="$temp_rpath $dir" ;; 661 esac 662 fi 663 664 # This is the magic to use -rpath. 665 if test -n "$hardcode_libdir_flag_spec"; then 666 if test -n "$hardcode_libdir_separator"; then 667 if test -z "$hardcode_libdirs"; then 668 # Put the magic libdir with the hardcode flag. 669 hardcode_libdirs="$libdir" 670 libdir="@HARDCODE_LIBDIRS@" 671 else 672 # Just accumulate the unique libdirs. 673 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in 674 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 675 ;; 676 *) 677 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 678 ;; 679 esac 680 libdir= 681 fi 682 fi 683 684 if test -n "$libdir"; then 685 eval flag=\"$hardcode_libdir_flag_spec\" 686 687 compile_command="$compile_command $flag" 688 finalize_command="$finalize_command $flag" 689 fi 690 elif test -n "$runpath_var"; then 691 # Do the same for the permanent run path. 692 case "$perm_rpath " in 693 *" $libdir "*) ;; 694 *) perm_rpath="$perm_rpath $libdir" ;; 695 esac 696 fi 697 698 699 case "$hardcode_action" in 700 immediate) 701 if test "$hardcode_direct" = no; then 702 compile_command="$compile_command $dir/$linklib" 703 elif test "$hardcode_minus_L" = no; then 704 compile_command="$compile_command -L$dir -l$name" 705 elif test "$hardcode_shlibpath_var" = no; then 706 compile_shlibpath="$compile_shlibpath$dir:" 707 compile_command="$compile_command -l$name" 708 fi 709 ;; 710 711 relink) 712 # We need an absolute path. 713 case "$dir" in 714 /* | [A-Za-z]:\\*) ;; 715 *) 716 absdir=`cd "$dir" && pwd` 717 if test -z "$absdir"; then 718 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 719 exit 1 720 fi 721 dir="$absdir" 722 ;; 723 esac 724 725 if test "$hardcode_direct" = yes; then 726 compile_command="$compile_command $dir/$linklib" 727 elif test "$hardcode_minus_L" = yes; then 728 compile_command="$compile_command -L$dir -l$name" 729 elif test "$hardcode_shlibpath_var" = yes; then 730 compile_shlibpath="$compile_shlibpath$dir:" 731 compile_command="$compile_command -l$name" 732 fi 733 ;; 734 735 *) 736 $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2 737 exit 1 738 ;; 739 esac 740 741 # Finalize command for both is simple: just hardcode it. 742 if test "$hardcode_direct" = yes; then 743 finalize_command="$finalize_command $libdir/$linklib" 744 elif test "$hardcode_minus_L" = yes; then 745 finalize_command="$finalize_command -L$libdir -l$name" 746 elif test "$hardcode_shlibpath_var" = yes; then 747 finalize_shlibpath="$finalize_shlibpath$libdir:" 748 finalize_command="$finalize_command -l$name" 749 else 750 # We cannot seem to hardcode it, guess we'll fake it. 751 finalize_command="$finalize_command -L$libdir -l$name" 752 fi 753 else 754 # Transform directly to old archives if we don't build new libraries. 755 if test -n "$pic_flag" && test -z "$old_library"; then 756 $echo "$modename: cannot find static library for \`$arg'" 1>&2 757 exit 1 758 fi 759 760 # Here we assume that one of hardcode_direct or hardcode_minus_L 761 # is not unsupported. This is valid on all known static and 762 # shared platforms. 763 if test "$hardcode_direct" != unsupported; then 764 test -n "$old_library" && linklib="$old_library" 765 compile_command="$compile_command $dir/$linklib" 766 finalize_command="$finalize_command $dir/$linklib" 767 else 768 compile_command="$compile_command -L$dir -l$name" 769 finalize_command="$finalize_command -L$dir -l$name" 770 fi 771 fi 772 773 # Add in any libraries that this one depends upon. 774 compile_command="$compile_command$dependency_libs" 775 finalize_command="$finalize_command$dependency_libs" 776 continue 777 ;; 778 779 # Some other compiler argument. 780 *) 781 # Unknown arguments in both finalize_command and compile_command need 782 # to be aesthetically quoted because they are evaled later. 783 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 784 case "$arg" in 785 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 786 arg="\"$arg\"" 787 ;; 788 esac 789 ;; 790 esac 791 792 # Now actually substitute the argument into the commands. 793 if test -n "$arg"; then 794 compile_command="$compile_command $arg" 795 finalize_command="$finalize_command $arg" 796 fi 797 done 798 799 if test -n "$prev"; then 800 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 801 $echo "$help" 1>&2 802 exit 1 803 fi 804 805 if test -n "$vinfo" && test -n "$release"; then 806 $echo "$modename: you cannot specify both \`-version-info' and \`-release'" 1>&2 807 $echo "$help" 1>&2 808 exit 1 809 fi 810 811 oldlib= 812 oldobjs= 813 case "$output" in 814 "") 815 $echo "$modename: you must specify an output file" 1>&2 816 $echo "$help" 1>&2 817 exit 1 818 ;; 819 820 */* | *\\*) 821 $echo "$modename: output file \`$output' must have no directory components" 1>&2 822 exit 1 823 ;; 824 825 *.a) 826 # Now set the variables for building old libraries. 827 build_libtool_libs=no 828 build_old_libs=yes 829 oldlib="$output" 830 $show "$rm $oldlib" 831 $run $rm $oldlib 832 ;; 833 834 *.la) 835 # Make sure we only generate libraries of the form `libNAME.la'. 836 case "$output" in 837 lib*) ;; 838 *) 839 $echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2 840 $echo "$help" 1>&2 841 exit 1 842 ;; 843 esac 844 845 name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 846 eval libname=\"$libname_spec\" 847 848 # All the library-specific variables (install_libdir is set above). 849 library_names= 850 old_library= 851 dlname= 852 current=0 853 revision=0 854 age=0 855 856 if test -n "$objs"; then 857 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 858 exit 1 859 fi 860 861 # How the heck are we supposed to write a wrapper for a shared library? 862 if test -n "$link_against_libtool_libs"; then 863 $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2 864 exit 1 865 fi 866 867 if test -n "$dlfiles$dlprefiles"; then 868 $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2 869 # Nullify the symbol file. 870 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 871 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 872 fi 873 874 if test -z "$rpath"; then 875 $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2 876 $echo "$help" 1>&2 877 exit 1 878 fi 879 880 set dummy $rpath 881 if test $# -gt 2; then 882 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 883 fi 884 install_libdir="$2" 885 886 # Parse the version information argument. 887 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' 888 set dummy $vinfo 889 IFS="$save_ifs" 890 891 if test -n "$5"; then 892 $echo "$modename: too many parameters to \`-version-info'" 1>&2 893 $echo "$help" 1>&2 894 exit 1 895 fi 896 897 test -n "$2" && current="$2" 898 test -n "$3" && revision="$3" 899 test -n "$4" && age="$4" 900 901 # Check that each of the things are valid numbers. 902 case "$current" in 903 0 | [1-9] | [1-9][0-9]*) ;; 904 *) 905 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 906 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 907 exit 1 908 ;; 909 esac 910 911 case "$revision" in 912 0 | [1-9] | [1-9][0-9]*) ;; 913 *) 914 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 915 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 916 exit 1 917 ;; 918 esac 919 920 case "$age" in 921 0 | [1-9] | [1-9][0-9]*) ;; 922 *) 923 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 924 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 925 exit 1 926 ;; 927 esac 928 929 if test $age -gt $current; then 930 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 931 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 932 exit 1 933 fi 934 935 # Calculate the version variables. 936 version_vars="version_type current age revision" 937 case "$version_type" in 938 none) ;; 939 940 linux) 941 version_vars="$version_vars major versuffix" 942 major=`expr $current - $age` 943 versuffix="$major.$age.$revision" 944 ;; 945 946 osf) 947 version_vars="$version_vars versuffix verstring" 948 major=`expr $current - $age` 949 versuffix="$current.$age.$revision" 950 verstring="$versuffix" 951 952 # Add in all the interfaces that we are compatible with. 953 loop=$age 954 while test $loop != 0; do 955 iface=`expr $current - $loop` 956 loop=`expr $loop - 1` 957 verstring="$verstring:${iface}.0" 958 done 959 960 # Make executables depend on our current version. 961 verstring="$verstring:${current}.0" 962 ;; 963 964 sunos) 965 version_vars="$version_vars major versuffix" 966 major="$current" 967 versuffix="$current.$revision" 968 ;; 969 970 *) 971 $echo "$modename: unknown library version type \`$version_type'" 1>&2 972 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 973 exit 1 974 ;; 975 esac 976 977 # Create the output directory, or remove our outputs if we need to. 978 if test -d $objdir; then 979 $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*" 980 $run $rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.* 981 else 982 $show "$mkdir $objdir" 983 $run $mkdir $objdir 984 status=$? 985 if test $status -eq 0 || test -d $objdir; then : 986 else 987 exit $status 988 fi 989 fi 990 991 # Check to see if the archive will have undefined symbols. 992 if test "$allow_undefined" = yes; then 993 if test "$allow_undefined_flag" = unsupported; then 994 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 995 build_libtool_libs=no 996 build_old_libs=yes 997 fi 998 else 999 # Don't allow undefined symbols. 1000 allow_undefined_flag="$no_undefined_flag" 1001 fi 1002 1003 # Add libc to deplibs on all systems. 1004 dependency_libs="$deplibs" 1005 deplibs="$deplibs -lc" 1006 1007 if test "$build_libtool_libs" = yes; then 1008 # Get the real and link names of the library. 1009 eval library_names=\"$library_names_spec\" 1010 set dummy $library_names 1011 realname="$2" 1012 shift; shift 1013 1014 if test -n "$soname_spec"; then 1015 eval soname=\"$soname_spec\" 1016 else 1017 soname="$realname" 1018 fi 1019 1020 lib="$objdir/$realname" 1021 for link 1022 do 1023 linknames="$linknames $link" 1024 done 1025 1026 # Use standard objects if they are PIC. 1027 test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//g'` 1028 1029 # Do each of the archive commands. 1030 eval cmds=\"$archive_cmds\" 1031 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 1032 for cmd in $cmds; do 1033 IFS="$save_ifs" 1034 $show "$cmd" 1035 $run eval "$cmd" || exit $? 1036 done 1037 IFS="$save_ifs" 1038 1039 # Create links to the real library. 1040 for linkname in $linknames; do 1041 $show "(cd $objdir && $LN_S $realname $linkname)" 1042 $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $? 1043 done 1044 1045 # If -export-dynamic was specified, set the dlname. 1046 if test "$export_dynamic" = yes; then 1047 # On all known operating systems, these are identical. 1048 dlname="$soname" 1049 fi 1050 fi 1051 1052 # Now set the variables for building old libraries. 1053 oldlib="$objdir/$libname.a" 1054 ;; 1055 1056 *.lo | *.o) 1057 if test -n "$link_against_libtool_libs"; then 1058 $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2 1059 exit 1 1060 fi 1061 1062 if test -n "$deplibs"; then 1063 $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2 1064 fi 1065 1066 if test -n "$dlfiles$dlprefiles"; then 1067 $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2 1068 # Nullify the symbol file. 1069 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 1070 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 1071 fi 1072 1073 if test -n "$rpath"; then 1074 $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2 1075 fi 1076 1077 if test -n "$vinfo"; then 1078 $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2 1079 fi 1080 1081 if test -n "$release"; then 1082 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2 1083 fi 1084 1085 case "$output" in 1086 *.lo) 1087 if test -n "$objs"; then 1088 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 1089 exit 1 1090 fi 1091 libobj="$output" 1092 obj=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'` 1093 ;; 1094 *) 1095 libobj= 1096 obj="$output" 1097 ;; 1098 esac 1099 1100 # Delete the old objects. 1101 $run $rm $obj $libobj 1102 1103 # Create the old-style object. 1104 reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'` 1105 1106 output="$obj" 1107 eval cmds=\"$reload_cmds\" 1108 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 1109 for cmd in $cmds; do 1110 IFS="$save_ifs" 1111 $show "$cmd" 1112 $run eval "$cmd" || exit $? 1113 done 1114 IFS="$save_ifs" 1115 1116 # Exit if we aren't doing a library object file. 1117 test -z "$libobj" && exit 0 1118 1119 if test "$build_libtool_libs" != yes; then 1120 # Create an invalid libtool object if no PIC, so that we don't 1121 # accidentally link it into a program. 1122 $show "echo timestamp > $libobj" 1123 $run eval "echo timestamp > $libobj" || exit $? 1124 exit 0 1125 fi 1126 1127 if test -n "$pic_flag"; then 1128 # Only do commands if we really have different PIC objects. 1129 reload_objs="$libobjs" 1130 output="$libobj" 1131 eval cmds=\"$reload_cmds\" 1132 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 1133 for cmd in $cmds; do 1134 IFS="$save_ifs" 1135 $show "$cmd" 1136 $run eval "$cmd" || exit $? 1137 done 1138 IFS="$save_ifs" 1139 else 1140 # Just create a symlink. 1141 $show "$LN_S $obj $libobj" 1142 $run $LN_S $obj $libobj || exit 1 1143 fi 1144 1145 exit 0 1146 ;; 1147 1148 *) 1149 if test -n "$vinfo"; then 1150 $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2 1151 fi 1152 1153 if test -n "$release"; then 1154 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2 1155 fi 1156 1157 if test -n "$rpath"; then 1158 # If the user specified any rpath flags, then add them. 1159 for libdir in $rpath; do 1160 if test -n "$hardcode_libdir_flag_spec"; then 1161 if test -n "$hardcode_libdir_separator"; then 1162 if test -z "$hardcode_libdirs"; then 1163 # Put the magic libdir with the hardcode flag. 1164 hardcode_libdirs="$libdir" 1165 libdir="@HARDCODE_LIBDIRS@" 1166 else 1167 # Just accumulate the unique libdirs. 1168 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in 1169 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 1170 ;; 1171 *) 1172 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 1173 ;; 1174 esac 1175 libdir= 1176 fi 1177 fi 1178 1179 if test -n "$libdir"; then 1180 eval flag=\"$hardcode_libdir_flag_spec\" 1181 1182 compile_command="$compile_command $flag" 1183 finalize_command="$finalize_command $flag" 1184 fi 1185 elif test -n "$runpath_var"; then 1186 case "$perm_rpath " in 1187 *" $libdir "*) ;; 1188 *) perm_rpath="$perm_rpath $libdir" ;; 1189 esac 1190 fi 1191 done 1192 fi 1193 1194 # Substitute the hardcoded libdirs into the compile commands. 1195 if test -n "$hardcode_libdir_separator"; then 1196 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` 1197 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` 1198 fi 1199 1200 if test -n "$libobjs" && test "$build_old_libs" = yes; then 1201 # Transform all the library objects into standard objects. 1202 compile_command=`$echo "X$compile_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` 1203 finalize_command=`$echo "X$finalize_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` 1204 fi 1205 1206 if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then 1207 dlsyms="${output}S.c" 1208 else 1209 dlsyms= 1210 fi 1211 1212 if test -n "$dlsyms"; then 1213 # Add our own program objects to the preloaded list. 1214 dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` 1215 1216 # Discover the nlist of each of the dlfiles. 1217 nlist="$objdir/${output}.nm" 1218 1219 if test -d $objdir; then 1220 $show "$rm $nlist ${nlist}T" 1221 $run $rm "$nlist" "${nlist}T" 1222 else 1223 $show "$mkdir $objdir" 1224 $run $mkdir $objdir 1225 status=$? 1226 if test $status -eq 0 || test -d $objdir; then : 1227 else 1228 exit $status 1229 fi 1230 fi 1231 1232 for arg in $dlprefiles; do 1233 $show "extracting global C symbols from \`$arg'" 1234 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 1235 done 1236 1237 # Parse the name list into a source file. 1238 $show "creating $objdir/$dlsyms" 1239 if test -z "$run"; then 1240 # Make sure we at least have an empty file. 1241 test -f "$nlist" || : > "$nlist" 1242 1243 # Try sorting and uniquifying the output. 1244 if sort "$nlist" | uniq > "$nlist"T; then 1245 mv -f "$nlist"T "$nlist" 1246 wcout=`wc "$nlist" 2>/dev/null` 1247 count=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` 1248 (test "$count" -ge 0) 2>/dev/null || count=-1 1249 else 1250 $rm "$nlist"T 1251 count=-1 1252 fi 1253 1254 case "$dlsyms" in 1255 "") ;; 1256 *.c) 1257 $echo > "$objdir/$dlsyms" "\ 1258 /* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */ 1259 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION */ 1260 1261 #ifdef __cplusplus 1262 extern \"C\" { 1263 #endif 1264 1265 /* Prevent the only kind of declaration conflicts we can make. */ 1266 #define dld_preloaded_symbol_count some_other_symbol 1267 #define dld_preloaded_symbols some_other_symbol 1268 1269 /* External symbol declarations for the compiler. */\ 1270 " 1271 1272 if test -f "$nlist"; then 1273 sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms" 1274 else 1275 echo '/* NONE */' >> "$objdir/$dlsyms" 1276 fi 1277 1278 $echo >> "$objdir/$dlsyms" "\ 1279 1280 #undef dld_preloaded_symbol_count 1281 #undef dld_preloaded_symbols 1282 1283 #if defined (__STDC__) && __STDC__ 1284 # define __ptr_t void * 1285 #else 1286 # define __ptr_t char * 1287 #endif 1288 1289 /* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ 1290 int dld_preloaded_symbol_count = $count; 1291 1292 /* The mapping between symbol names and symbols. */ 1293 struct { 1294 char *name; 1295 __ptr_t address; 1296 } 1297 dld_preloaded_symbols[] = 1298 {\ 1299 " 1300 1301 if test -f "$nlist"; then 1302 sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms" 1303 fi 1304 1305 $echo >> "$objdir/$dlsyms" "\ 1306 {0, (__ptr_t) 0} 1307 }; 1308 1309 #ifdef __cplusplus 1310 } 1311 #endif\ 1312 " 1313 ;; 1314 1315 *) 1316 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 1317 exit 1 1318 ;; 1319 esac 1320 fi 1321 1322 # Now compile the dynamic symbol file. 1323 $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")" 1324 $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $? 1325 1326 # Transform the symbol file into the correct name. 1327 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"` 1328 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"` 1329 elif test "$export_dynamic" != yes; then 1330 test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2 1331 else 1332 # We keep going just in case the user didn't refer to 1333 # dld_preloaded_symbols. The linker will fail if global_symbol_pipe 1334 # really was required. 1335 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 1336 1337 # Nullify the symbol file. 1338 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 1339 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 1340 fi 1341 1342 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then 1343 # Replace the output file specification. 1344 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 1345 finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 1346 1347 # We have no uninstalled library dependencies, so finalize right now. 1348 $show "$compile_command" 1349 $run eval "$compile_command" 1350 exit $? 1351 fi 1352 1353 # Replace the output file specification. 1354 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'` 1355 finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'` 1356 1357 # Create the binary in the object directory, then wrap it. 1358 if test -d $objdir; then : 1359 else 1360 $show "$mkdir $objdir" 1361 $run $mkdir $objdir 1362 status=$? 1363 if test $status -eq 0 || test -d $objdir; then : 1364 else 1365 exit $status 1366 fi 1367 fi 1368 1369 if test -n "$shlibpath_var"; then 1370 # We should set the shlibpath_var 1371 rpath= 1372 for dir in $temp_rpath; do 1373 case "$dir" in 1374 /* | [A-Za-z]:\\*) 1375 # Absolute path. 1376 rpath="$rpath$dir:" 1377 ;; 1378 *) 1379 # Relative path: add a thisdir entry. 1380 rpath="$rpath\$thisdir/$dir:" 1381 ;; 1382 esac 1383 done 1384 temp_rpath="$rpath" 1385 fi 1386 1387 # Delete the old output file. 1388 $run $rm $output 1389 1390 if test -n "$compile_shlibpath"; then 1391 compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command" 1392 fi 1393 if test -n "$finalize_shlibpath"; then 1394 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 1395 fi 1396 1397 if test -n "$runpath_var" && test -n "$perm_rpath"; then 1398 # We should set the runpath_var. 1399 rpath= 1400 for dir in $perm_rpath; do 1401 rpath="$rpath$dir:" 1402 done 1403 compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command" 1404 finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command" 1405 fi 1406 1407 case "$hardcode_action" in 1408 relink) 1409 # AGH! Flame the AIX and HP-UX people for me, will ya? 1410 $echo "$modename: warning: using a buggy system linker" 1>&2 1411 $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2 1412 ;; 1413 esac 1414 1415 $show "$compile_command" 1416 $run eval "$compile_command" || exit $? 1417 1418 # Now create the wrapper script. 1419 $show "creating $output" 1420 1421 # Quote the finalize command for shipping. 1422 finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"` 1423 1424 # Quote $echo for shipping. 1425 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 1426 1427 # Only actually do things if our run command is non-null. 1428 if test -z "$run"; then 1429 $rm $output 1430 trap "$rm $output; exit 1" 1 2 15 1431 1432 $echo > $output "\ 1433 #! /bin/sh 1434 1435 # $output - temporary wrapper script for $objdir/$output 1436 # Generated by ltmain.sh - GNU $PACKAGE $VERSION 1437 # 1438 # The $output program cannot be directly executed until all the libtool 1439 # libraries that it depends on are installed. 1440 # 1441 # This wrapper script should never be moved out of \``pwd`'. 1442 # If it is, it will not operate correctly. 1443 1444 # Sed substitution that helps us do robust quoting. It backslashifies 1445 # metacharacters that are still active within double-quoted strings. 1446 Xsed='sed -e s/^X//' 1447 sed_quote_subst='$sed_quote_subst' 1448 1449 # The HP-UX ksh and POSIX shell print the target directory to stdout 1450 # if CDPATH is set. 1451 if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi 1452 1453 # This environment variable determines our operation mode. 1454 if test \"\$libtool_install_magic\" = \"$magic\"; then 1455 # install mode needs the following variables: 1456 link_against_libtool_libs='$link_against_libtool_libs' 1457 finalize_command=\"$finalize_command\" 1458 else 1459 # When we are sourced in execute mode, \$file and \$echo are already set. 1460 if test \"\$libtool_execute_magic\" = \"$magic\"; then : 1461 else 1462 echo=\"$qecho\" 1463 file=\"\$0\" 1464 fi\ 1465 " 1466 $echo >> $output "\ 1467 1468 # Find the directory that this script lives in. 1469 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 1470 test \"x\$thisdir\" = \"x\$file\" && thisdir=. 1471 1472 # Follow symbolic links until we get to the real thisdir. 1473 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` 1474 while test -n \"\$file\"; do 1475 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 1476 1477 # If there was a directory component, then change thisdir. 1478 if test \"x\$destdir\" != \"x\$file\"; then 1479 case \"\$destdir\" in 1480 /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;; 1481 *) thisdir=\"\$thisdir/\$destdir\" ;; 1482 esac 1483 fi 1484 1485 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 1486 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` 1487 done 1488 1489 # Try to get the absolute directory name. 1490 absdir=\`cd \"\$thisdir\" && pwd\` 1491 test -n \"\$absdir\" && thisdir=\"\$absdir\" 1492 1493 progdir=\"\$thisdir/$objdir\" 1494 program='$output' 1495 1496 if test -f \"\$progdir/\$program\"; then" 1497 1498 # Export our shlibpath_var if we have one. 1499 if test -n "$shlibpath_var" && test -n "$temp_rpath"; then 1500 $echo >> $output "\ 1501 # Add our own library path to $shlibpath_var 1502 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 1503 1504 # Some systems cannot cope with colon-terminated $shlibpath_var 1505 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\` 1506 1507 export $shlibpath_var 1508 " 1509 fi 1510 1511 $echo >> $output "\ 1512 if test \"\$libtool_execute_magic\" != \"$magic\"; then 1513 # Run the actual program with our arguments. 1514 1515 # Export the path to the program. 1516 PATH=\"\$progdir:\$PATH\" 1517 export PATH 1518 1519 exec \$program \${1+\"\$@\"} 1520 1521 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" 1522 exit 1 1523 fi 1524 else 1525 # The program doesn't exist. 1526 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 1527 \$echo \"This script is just a wrapper for \$program.\" 1>&2 1528 echo \"See the $PACKAGE documentation for more information.\" 1>&2 1529 exit 1 1530 fi 1531 fi\ 1532 " 1533 chmod +x $output 1534 fi 1535 exit 0 1536 ;; 1537 esac 1538 1539 # See if we need to build an old-fashioned archive. 1540 if test "$build_old_libs" = "yes"; then 1541 # Transform .lo files to .o files. 1542 oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'` 1543 1544 # Do each command in the archive commands. 1545 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 1546 eval cmds=\"$old_archive_from_new_cmds\" 1547 else 1548 eval cmds=\"$old_archive_cmds\" 1549 fi 1550 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 1551 for cmd in $cmds; do 1552 IFS="$save_ifs" 1553 $show "$cmd" 1554 $run eval "$cmd" || exit $? 1555 done 1556 IFS="$save_ifs" 1557 fi 1558 1559 # Now create the libtool archive. 1560 case "$output" in 1561 *.la) 1562 old_library= 1563 test "$build_old_libs" = yes && old_library="$libname.a" 1564 1565 $show "creating $output" 1566 1567 # Only create the output if not a dry run. 1568 if test -z "$run"; then 1569 $echo > $output "\ 1570 # $output - a libtool library file 1571 # Generated by ltmain.sh - GNU $PACKAGE $VERSION 1572 1573 # The name that we can dlopen(3). 1574 dlname='$dlname' 1575 1576 # Names of this library. 1577 library_names='$library_names' 1578 1579 # The name of the static archive. 1580 old_library='$old_library' 1581 1582 # Libraries that this one depends upon. 1583 dependency_libs='$dependency_libs' 1584 1585 # Version information for $libname. 1586 current=$current 1587 age=$age 1588 revision=$revision 1589 1590 # Directory that this library needs to be installed in: 1591 libdir='$install_libdir'\ 1592 " 1593 fi 1594 1595 # Do a symbolic link so that the libtool archive can be found in 1596 # LD_LIBRARY_PATH before the program is installed. 1597 $show "(cd $objdir && $LN_S ../$output $output)" 1598 $run eval "(cd $objdir && $LN_S ../$output $output)" || exit 1 1599 ;; 1600 esac 1601 exit 0 1602 ;; 1603 1604 # libtool install mode 1605 install) 1606 modename="$modename: install" 1607 1608 # There may be an optional /bin/sh argument at the beginning of 1609 # install_prog (especially on Windows NT). 1610 if test "$nonopt" = "$SHELL"; then 1611 # Aesthetically quote it. 1612 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 1613 case "$arg" in 1614 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 1615 arg="\"$arg\"" 1616 ;; 1617 esac 1618 install_prog="$arg " 1619 arg="$1" 1620 shift 1621 else 1622 install_prog= 1623 arg="$nonopt" 1624 fi 1625 1626 # The real first argument should be the name of the installation program. 1627 # Aesthetically quote it. 1628 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1629 case "$arg" in 1630 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 1631 arg="\"$arg\"" 1632 ;; 1633 esac 1634 install_prog="$install_prog$arg" 1635 1636 # We need to accept at least all the BSD install flags. 1637 dest= 1638 files= 1639 opts= 1640 prev= 1641 install_type= 1642 isdir= 1643 stripme= 1644 for arg 1645 do 1646 if test -n "$dest"; then 1647 files="$files $dest" 1648 dest="$arg" 1649 continue 1650 fi 1651 1652 case "$arg" in 1653 -d) isdir=yes ;; 1654 -f) prev="-f" ;; 1655 -g) prev="-g" ;; 1656 -m) prev="-m" ;; 1657 -o) prev="-o" ;; 1658 -s) 1659 stripme=" -s" 1660 continue 1661 ;; 1662 -*) ;; 1663 1664 *) 1665 # If the previous option needed an argument, then skip it. 1666 if test -n "$prev"; then 1667 prev= 1668 else 1669 dest="$arg" 1670 continue 1671 fi 1672 ;; 1673 esac 1674 1675 # Aesthetically quote the argument. 1676 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1677 case "$arg" in 1678 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 1679 arg="\"$arg\"" 1680 ;; 1681 esac 1682 install_prog="$install_prog $arg" 1683 done 1684 1685 if test -z "$install_prog"; then 1686 $echo "$modename: you must specify an install program" 1>&2 1687 $echo "$help" 1>&2 1688 exit 1 1689 fi 1690 1691 if test -n "$prev"; then 1692 $echo "$modename: the \`$prev' option requires an argument" 1>&2 1693 $echo "$help" 1>&2 1694 exit 1 1695 fi 1696 1697 if test -z "$files"; then 1698 if test -z "$dest"; then 1699 $echo "$modename: no file or destination specified" 1>&2 1700 else 1701 $echo "$modename: you must specify a destination" 1>&2 1702 fi 1703 $echo "$help" 1>&2 1704 exit 1 1705 fi 1706 1707 # Strip any trailing slash from the destination. 1708 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 1709 1710 # Check to see that the destination is a directory. 1711 test -d "$dest" && isdir=yes 1712 if test -n "$isdir"; then 1713 destdir="$dest" 1714 destname= 1715 else 1716 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 1717 test "X$destdir" = "X$dest" && destdir=. 1718 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 1719 1720 # Not a directory, so check to see that there is only one file specified. 1721 set dummy $files 1722 if test $# -gt 2; then 1723 $echo "$modename: \`$dest' is not a directory" 1>&2 1724 $echo "$help" 1>&2 1725 exit 1 1726 fi 1727 fi 1728 case "$destdir" in 1729 /* | [A-Za-z]:\\*) ;; 1730 *) 1731 for file in $files; do 1732 case "$file" in 1733 *.lo) ;; 1734 *) 1735 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 1736 $echo "$help" 1>&2 1737 exit 1 1738 ;; 1739 esac 1740 done 1741 ;; 1742 esac 1743 1744 # This variable tells wrapper scripts just to set variables rather 1745 # than running their programs. 1746 libtool_install_magic="$magic" 1747 1748 staticlibs= 1749 future_libdirs= 1750 current_libdirs= 1751 for file in $files; do 1752 1753 # Do each installation. 1754 case "$file" in 1755 *.a) 1756 # Do the static libraries later. 1757 staticlibs="$staticlibs $file" 1758 ;; 1759 1760 *.la) 1761 # Check to see that this really is a libtool archive. 1762 if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : 1763 else 1764 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 1765 $echo "$help" 1>&2 1766 exit 1 1767 fi 1768 1769 library_names= 1770 old_library= 1771 # If there is no directory component, then add one. 1772 case "$file" in 1773 */* | *\\*) . $file ;; 1774 *) . ./$file ;; 1775 esac 1776 1777 # Add the libdir to current_libdirs if it is the destination. 1778 if test "X$destdir" = "X$libdir"; then 1779 case "$current_libdirs " in 1780 *" $libdir "*) ;; 1781 *) current_libdirs="$current_libdirs $libdir" ;; 1782 esac 1783 else 1784 # Note the libdir as a future libdir. 1785 case "$future_libdirs " in 1786 *" $libdir "*) ;; 1787 *) future_libdirs="$future_libdirs $libdir" ;; 1788 esac 1789 fi 1790 1791 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" 1792 test "X$dir" = "X$file/" && dir= 1793 dir="$dir$objdir" 1794 1795 # See the names of the shared library. 1796 set dummy $library_names 1797 if test -n "$2"; then 1798 realname="$2" 1799 shift 1800 shift 1801 1802 # Install the shared library and build the symlinks. 1803 $show "$install_prog $dir/$realname $destdir/$realname" 1804 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? 1805 test "X$dlname" = "X$realname" && dlname= 1806 1807 if test $# -gt 0; then 1808 # Delete the old symlinks. 1809 rmcmd="$rm" 1810 for linkname 1811 do 1812 rmcmd="$rmcmd $destdir/$linkname" 1813 done 1814 $show "$rmcmd" 1815 $run $rmcmd 1816 1817 # ... and create new ones. 1818 for linkname 1819 do 1820 test "X$dlname" = "X$linkname" && dlname= 1821 $show "(cd $destdir && $LN_S $realname $linkname)" 1822 $run eval "(cd $destdir && $LN_S $realname $linkname)" 1823 done 1824 fi 1825 1826 if test -n "$dlname"; then 1827 # Install the dynamically-loadable library. 1828 $show "$install_prog $dir/$dlname $destdir/$dlname" 1829 $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $? 1830 fi 1831 1832 # Do each command in the postinstall commands. 1833 lib="$destdir/$realname" 1834 eval cmds=\"$postinstall_cmds\" 1835 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 1836 for cmd in $cmds; do 1837 IFS="$save_ifs" 1838 $show "$cmd" 1839 $run eval "$cmd" || exit $? 1840 done 1841 IFS="$save_ifs" 1842 fi 1843 1844 # Install the pseudo-library for information purposes. 1845 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 1846 $show "$install_prog $file $destdir/$name" 1847 $run eval "$install_prog $file $destdir/$name" || exit $? 1848 1849 # Maybe install the static library, too. 1850 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 1851 ;; 1852 1853 *.lo) 1854 # Install (i.e. copy) a libtool object. 1855 1856 # Figure out destination file name, if it wasn't already specified. 1857 if test -n "$destname"; then 1858 destfile="$destdir/$destname" 1859 else 1860 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 1861 destfile="$destdir/$destfile" 1862 fi 1863 1864 # Deduce the name of the destination old-style object file. 1865 case "$destfile" in 1866 *.lo) 1867 staticdest=`$echo "X$destfile" | $Xsed -e 's/\.lo$/\.o/'` 1868 ;; 1869 *.o) 1870 staticdest="$destfile" 1871 destfile= 1872 ;; 1873 *) 1874 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 1875 $echo "$help" 1>&2 1876 exit 1 1877 ;; 1878 esac 1879 1880 # Install the libtool object if requested. 1881 if test -n "$destfile"; then 1882 $show "$install_prog $file $destfile" 1883 $run eval "$install_prog $file $destfile" || exit $? 1884 fi 1885 1886 # Install the old object if enabled. 1887 if test "$build_old_libs" = yes; then 1888 # Deduce the name of the old-style object file. 1889 staticobj=`$echo "X$file" | $Xsed -e 's/\.lo$/\.o/'` 1890 1891 $show "$install_prog $staticobj $staticdest" 1892 $run eval "$install_prog \$staticobj \$staticdest" || exit $? 1893 fi 1894 exit 0 1895 ;; 1896 1897 *) 1898 # Do a test to see if this is really a libtool program. 1899 if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then 1900 link_against_libtool_libs= 1901 finalize_command= 1902 1903 # If there is no directory component, then add one. 1904 case "$file" in 1905 */* | *\\*) . $file ;; 1906 *) . ./$file ;; 1907 esac 1908 1909 # Check the variables that should have been set. 1910 if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then 1911 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 1912 exit 1 1913 fi 1914 1915 finalize=yes 1916 for lib in $link_against_libtool_libs; do 1917 # Check to see that each library is installed. 1918 libdir= 1919 if test -f "$lib"; then 1920 # If there is no directory component, then add one. 1921 case "$lib" in 1922 */* | *\\*) . $lib ;; 1923 *) . ./$lib ;; 1924 esac 1925 fi 1926 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" 1927 if test -z "$libdir"; then 1928 $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2 1929 elif test -f "$libfile"; then : 1930 else 1931 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 1932 finalize=no 1933 fi 1934 done 1935 1936 if test "$hardcode_action" = relink; then 1937 if test "$finalize" = yes; then 1938 $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2 1939 $show "$finalize_command" 1940 if $run eval "$finalize_command"; then : 1941 else 1942 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 1943 continue 1944 fi 1945 file="$objdir/$file"T 1946 else 1947 $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2 1948 fi 1949 else 1950 # Install the binary that we compiled earlier. 1951 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 1952 fi 1953 fi 1954 1955 $show "$install_prog$stripme $file $dest" 1956 $run eval "$install_prog\$stripme \$file \$dest" || exit $? 1957 ;; 1958 esac 1959 done 1960 1961 for file in $staticlibs; do 1962 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 1963 1964 # Set up the ranlib parameters. 1965 oldlib="$destdir/$name" 1966 1967 $show "$install_prog $file $oldlib" 1968 $run eval "$install_prog \$file \$oldlib" || exit $? 1969 1970 # Do each command in the postinstall commands. 1971 eval cmds=\"$old_postinstall_cmds\" 1972 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 1973 for cmd in $cmds; do 1974 IFS="$save_ifs" 1975 $show "$cmd" 1976 $run eval "$cmd" || exit $? 1977 done 1978 IFS="$save_ifs" 1979 done 1980 1981 if test -n "$future_libdirs"; then 1982 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 1983 fi 1984 1985 if test -n "$current_libdirs"; then 1986 # Maybe just do a dry run. 1987 test -n "$run" && current_libdirs=" -n$current_libdirs" 1988 exec $SHELL $0 --finish$current_libdirs 1989 exit 1 1990 fi 1991 1992 exit 0 1993 ;; 1994 1995 # libtool finish mode 1996 finish) 1997 modename="$modename: finish" 1998 libdirs="$nonopt" 1999 2000 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2001 for dir 2002 do 2003 libdirs="$libdirs $dir" 2004 done 2005 2006 for libdir in $libdirs; do 2007 if test -n "$finish_cmds"; then 2008 # Do each command in the finish commands. 2009 eval cmds=\"$finish_cmds\" 2010 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 2011 for cmd in $cmds; do 2012 IFS="$save_ifs" 2013 $show "$cmd" 2014 $run eval "$cmd" 2015 done 2016 IFS="$save_ifs" 2017 fi 2018 if test -n "$finish_eval"; then 2019 # Do the single finish_eval. 2020 eval cmds=\"$finish_eval\" 2021 $run eval "$cmds" 2022 fi 2023 done 2024 fi 2025 2026 echo "------------------------------------------------------------------------------" 2027 echo "Libraries have been installed in:" 2028 for libdir in $libdirs; do 2029 echo " $libdir" 2030 done 2031 echo 2032 echo "To link against installed libraries in a given directory, LIBDIR," 2033 echo "you must use the \`-LLIBDIR' flag during linking." 2034 echo 2035 echo " You will also need to do one of the following:" 2036 if test -n "$shlibpath_var"; then 2037 echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2038 echo " during execution" 2039 fi 2040 if test -n "$runpath_var"; then 2041 echo " - add LIBDIR to the \`$runpath_var' environment variable" 2042 echo " during linking" 2043 fi 2044 if test -n "$hardcode_libdir_flag_spec"; then 2045 libdir=LIBDIR 2046 eval flag=\"$hardcode_libdir_flag_spec\" 2047 2048 echo " - use the \`$flag' linker flag" 2049 fi 2050 if test -f /etc/ld.so.conf; then 2051 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2052 fi 2053 echo 2054 echo "See any operating system documentation about shared libraries for" 2055 echo "more information, such as the ld(1) and ld.so(8) manual pages." 2056 echo "------------------------------------------------------------------------------" 2057 exit 0 2058 ;; 2059 2060 # libtool execute mode 2061 execute) 2062 modename="$modename: execute" 2063 2064 # The first argument is the command name. 2065 cmd="$nonopt" 2066 if test -z "$cmd"; then 2067 $echo "$modename: you must specify a COMMAND" 1>&2 2068 $echo "$help" 2069 exit 1 2070 fi 2071 2072 # Handle -dlopen flags immediately. 2073 for file in $execute_dlfiles; do 2074 if test -f "$file"; then : 2075 else 2076 $echo "$modename: \`$file' is not a file" 1>&2 2077 $echo "$help" 1>&2 2078 exit 1 2079 fi 2080 2081 dir= 2082 case "$file" in 2083 *.la) 2084 # Check to see that this really is a libtool archive. 2085 if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : 2086 else 2087 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2088 $echo "$help" 1>&2 2089 exit 1 2090 fi 2091 2092 # Read the libtool library. 2093 dlname= 2094 library_names= 2095 2096 # If there is no directory component, then add one. 2097 case "$file" in 2098 */* | *\\*) . $file ;; 2099 *) . ./$file ;; 2100 esac 2101 2102 # Skip this library if it cannot be dlopened. 2103 if test -z "$dlname"; then 2104 # Warn if it was a shared library. 2105 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 2106 continue 2107 fi 2108 2109 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 2110 test "X$dir" = "X$file" && dir=. 2111 2112 if test -f "$dir/$objdir/$dlname"; then 2113 dir="$dir/$objdir" 2114 else 2115 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 2116 exit 1 2117 fi 2118 ;; 2119 2120 *.lo) 2121 # Just add the directory containing the .lo file. 2122 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 2123 test "X$dir" = "X$file" && dir=. 2124 ;; 2125 2126 *) 2127 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 2128 continue 2129 ;; 2130 esac 2131 2132 # Get the absolute pathname. 2133 absdir=`cd "$dir" && pwd` 2134 test -n "$absdir" && dir="$absdir" 2135 2136 # Now add the directory to shlibpath_var. 2137 if eval "test -z \"\$$shlibpath_var\""; then 2138 eval "$shlibpath_var=\"\$dir\"" 2139 else 2140 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2141 fi 2142 done 2143 2144 # This variable tells wrapper scripts just to set shlibpath_var 2145 # rather than running their programs. 2146 libtool_execute_magic="$magic" 2147 2148 # Check if any of the arguments is a wrapper script. 2149 args= 2150 for file 2151 do 2152 case "$file" in 2153 -*) ;; 2154 *) 2155 # Do a test to see if this is really a libtool program. 2156 if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then 2157 # If there is no directory component, then add one. 2158 case "$file" in 2159 */* | *\\*) . $file ;; 2160 *) . ./$file ;; 2161 esac 2162 2163 # Transform arg to wrapped name. 2164 file="$progdir/$program" 2165 fi 2166 ;; 2167 esac 2168 # Quote arguments (to preserve shell metacharacters). 2169 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 2170 args="$args \"$file\"" 2171 done 2172 2173 if test -z "$run"; then 2174 # Export the shlibpath_var. 2175 eval "export $shlibpath_var" 2176 2177 # Now actually exec the command. 2178 eval "exec \$cmd$args" 2179 2180 $echo "$modename: cannot exec \$cmd$args" 2181 exit 1 2182 else 2183 # Display what would be done. 2184 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 2185 $echo "export $shlibpath_var" 2186 $echo "$cmd$args" 2187 exit 0 2188 fi 2189 ;; 2190 2191 # libtool uninstall mode 2192 uninstall) 2193 modename="$modename: uninstall" 2194 rm="$nonopt" 2195 files= 2196 2197 for arg 2198 do 2199 case "$arg" in 2200 -*) rm="$rm $arg" ;; 2201 *) files="$files $arg" ;; 2202 esac 2203 done 2204 2205 if test -z "$rm"; then 2206 $echo "$modename: you must specify an RM program" 1>&2 2207 $echo "$help" 1>&2 2208 exit 1 2209 fi 2210 2211 for file in $files; do 2212 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 2213 test "X$dir" = "X$file" && dir=. 2214 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 2215 2216 rmfiles="$file" 2217 2218 case "$name" in 2219 *.la) 2220 # Possibly a libtool archive, so verify it. 2221 if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then 2222 . $dir/$name 2223 2224 # Delete the libtool libraries and symlinks. 2225 for n in $library_names; do 2226 rmfiles="$rmfiles $dir/$n" 2227 test "X$n" = "X$dlname" && dlname= 2228 done 2229 test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname" 2230 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" 2231 2232 $show "$rm $rmfiles" 2233 $run $rm $rmfiles 2234 2235 if test -n "$library_names"; then 2236 # Do each command in the postuninstall commands. 2237 eval cmds=\"$postuninstall_cmds\" 2238 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 2239 for cmd in $cmds; do 2240 IFS="$save_ifs" 2241 $show "$cmd" 2242 $run eval "$cmd" 2243 done 2244 IFS="$save_ifs" 2245 fi 2246 2247 if test -n "$old_library"; then 2248 # Do each command in the old_postuninstall commands. 2249 eval cmds=\"$old_postuninstall_cmds\" 2250 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 2251 for cmd in $cmds; do 2252 IFS="$save_ifs" 2253 $show "$cmd" 2254 $run eval "$cmd" 2255 done 2256 IFS="$save_ifs" 2257 fi 2258 2259 # FIXME: should reinstall the best remaining shared library. 2260 fi 2261 ;; 2262 2263 *.lo) 2264 if test "$build_old_libs" = yes; then 2265 oldobj=`$echo "X$name" | $Xsed -e 's/\.lo$/\.o/'` 2266 rmfiles="$rmfiles $dir/$oldobj" 2267 fi 2268 $show "$rm $rmfiles" 2269 $run $rm $rmfiles 2270 ;; 2271 2272 *) 2273 $show "$rm $rmfiles" 2274 $run $rm $rmfiles 2275 ;; 2276 esac 2277 done 2278 exit 0 2279 ;; 2280 2281 "") 2282 $echo "$modename: you must specify a MODE" 1>&2 2283 $echo "$generic_help" 1>&2 2284 exit 1 2285 ;; 2286 esac 2287 2288 $echo "$modename: invalid operation mode \`$mode'" 1>&2 2289 $echo "$generic_help" 1>&2 2290 exit 1 2291 fi # test -z "$show_help" 2292 2293 # We need to display help for each of the modes. 2294 case "$mode" in 2295 "") $echo \ 2296 "Usage: $modename [OPTION]... [MODE-ARG]... 2297 2298 Provide generalized library-building support services. 2299 2300 -n, --dry-run display commands without modifying any files 2301 --features display configuration information and exit 2302 --finish same as \`--mode=finish' 2303 --help display this help message and exit 2304 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 2305 --quiet same as \`--silent' 2306 --silent don't print informational messages 2307 --version print version information 2308 2309 MODE must be one of the following: 2310 2311 compile compile a source file into a libtool object 2312 execute automatically set library path, then run a program 2313 finish complete the installation of libtool libraries 2314 install install libraries or executables 2315 link create a library or an executable 2316 uninstall remove libraries from an installed directory 2317 2318 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 2319 a more detailed description of MODE." 2320 exit 0 2321 ;; 2322 2323 compile) 2324 $echo \ 2325 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2326 2327 Compile a source file into a libtool library object. 2328 2329 COMPILE-COMMAND is a command to be used in creating a \`standard' object file 2330 from the given SOURCEFILE. 2331 2332 The output file name is determined by removing the directory component from 2333 SOURCEFILE, then substituting the C source code suffix \`.c' with the 2334 library object suffix, \`.lo'." 2335 ;; 2336 2337 execute) 2338 $echo \ 2339 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 2340 2341 Automatically set library path, then run a program. 2342 2343 This mode accepts the following additional options: 2344 2345 -dlopen FILE add the directory containing FILE to the library path 2346 2347 This mode sets the library path environment variable according to \`-dlopen' 2348 flags. 2349 2350 If any of the ARGS are libtool executable wrappers, then they are translated 2351 into their corresponding uninstalled binary, and any of their required library 2352 directories are added to the library path. 2353 2354 Then, COMMAND is executed, with ARGS as arguments." 2355 ;; 2356 2357 finish) 2358 $echo \ 2359 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 2360 2361 Complete the installation of libtool libraries. 2362 2363 Each LIBDIR is a directory that contains libtool libraries. 2364 2365 The commands that this mode executes may require superuser privileges. Use 2366 the \`--dry-run' option if you just want to see what would be executed." 2367 ;; 2368 2369 install) 2370 $echo \ 2371 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 2372 2373 Install executables or libraries. 2374 2375 INSTALL-COMMAND is the installation command. The first component should be 2376 either the \`install' or \`cp' program. 2377 2378 The rest of the components are interpreted as arguments to that command (only 2379 BSD-compatible install options are recognized)." 2380 ;; 2381 2382 link) 2383 $echo \ 2384 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 2385 2386 Link object files or libraries together to form another library, or to 2387 create an executable program. 2388 2389 LINK-COMMAND is a command using the C compiler that you would use to create 2390 a program from several object files. 2391 2392 The following components of LINK-COMMAND are treated specially: 2393 2394 -all-static do not do any dynamic linking at all 2395 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 2396 -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols 2397 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 2398 -LLIBDIR search LIBDIR for required installed libraries 2399 -lNAME OUTPUT-FILE requires the installed library libNAME 2400 -no-undefined declare that a library does not refer to external symbols 2401 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 2402 -release RELEASE specify package release information 2403 -rpath LIBDIR the created library will eventually be installed in LIBDIR 2404 -static do not do any dynamic linking of libtool libraries 2405 -version-info CURRENT[:REVISION[:AGE]] 2406 specify library version info [each variable defaults to 0] 2407 2408 All other options (arguments beginning with \`-') are ignored. 2409 2410 Every other argument is treated as a filename. Files ending in \`.la' are 2411 treated as uninstalled libtool libraries, other files are standard or library 2412 object files. 2413 2414 If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only 2415 library objects (\`.lo' files) may be specified, and \`-rpath' is required. 2416 2417 If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar' 2418 and \`ranlib'. 2419 2420 If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is 2421 created, otherwise an executable program is created." 2422 ;; 2423 2424 uninstall) 2425 $echo 2426 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 2427 2428 Remove libraries from an installation directory. 2429 2430 RM is the name of the program to use to delete files associated with each FILE 2431 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2432 to RM. 2433 2434 If FILE is a libtool library, all the files associated with it are deleted. 2435 Otherwise, only FILE itself is deleted using RM." 2436 ;; 2437 2438 *) 2439 $echo "$modename: invalid operation mode \`$mode'" 1>&2 2440 $echo "$help" 1>&2 2441 exit 1 2442 ;; 2443 esac 2444 2445 echo 2446 $echo "Try \`$modename --help' for more information about other modes." 2447 2448 exit 0 2449 2450 # Local Variables: 2451 # mode:shell-script 2452 # sh-indentation:2 2453 # End: 2454