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@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# Check that we have a working $echo. 27if test "X$1" = X--no-reexec; then 28 # Discard the --no-reexec flag, and continue. 29 shift 30elif test "X$1" = X--fallback-echo; then 31 # used as fallback echo 32 shift 33 cat <<EOF 34$* 35EOF 36 exit 0 37elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then 38 # Yippee, $echo works! 39 : 40else 41 # Restart under the correct shell, and then maybe $echo will work. 42 exec $SHELL "$0" --no-reexec ${1+"$@"} 43fi 44 45# The name of this program. 46progname=`$echo "$0" | sed 's%^.*/%%'` 47modename="$progname" 48 49# Constants. 50PROGRAM=ltmain.sh 51PACKAGE=libtool 52VERSION=1.2d 53 54default_mode= 55help="Try \`$progname --help' for more information." 56magic="%%%MAGIC variable%%%" 57mkdir="mkdir" 58mv="mv -f" 59rm="rm -f" 60 61# Sed substitution that helps us do robust quoting. It backslashifies 62# metacharacters that are still active within double-quoted strings. 63Xsed='sed -e s/^X//' 64sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' 65 66# NLS nuisances. 67# Only set LANG and LC_ALL to C if already set. 68# These must not be set unconditionally because not all systems understand 69# e.g. LANG=C (notably SCO). 70# We save the old values to restore during execute mode. 71if test "${LC_ALL+set}" = set; then 72 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL 73fi 74if test "${LANG+set}" = set; then 75 save_LANG="$LANG"; LANG=C; export LANG 76fi 77 78if test "$LTCONFIG_VERSION" != "$VERSION"; then 79 echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 80 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 81 exit 1 82fi 83 84if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 85 echo "$modename: not configured to build any kind of library" 1>&2 86 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 87 exit 1 88fi 89 90# Global variables. 91mode=$default_mode 92nonopt= 93prev= 94prevopt= 95run= 96show="$echo" 97show_help= 98execute_dlfiles= 99lo2o="s/\\.lo\$/.${objext}/" 100los2o="s/\\.lo /.${objext} /g" 101 102# Parse our command line options once, thoroughly. 103while test $# -gt 0 104do 105 arg="$1" 106 shift 107 108 case "$arg" in 109 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 110 *) optarg= ;; 111 esac 112 113 # If the previous option needs an argument, assign it. 114 if test -n "$prev"; then 115 case "$prev" in 116 execute_dlfiles) 117 eval "$prev=\"\$$prev \$arg\"" 118 ;; 119 *) 120 eval "$prev=\$arg" 121 ;; 122 esac 123 124 prev= 125 prevopt= 126 continue 127 fi 128 129 # Have we seen a non-optional argument yet? 130 case "$arg" in 131 --help) 132 show_help=yes 133 ;; 134 135 --version) 136 echo "$PROGRAM (GNU $PACKAGE) $VERSION" 137 exit 0 138 ;; 139 140 --config) 141 sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 142 exit 0 143 ;; 144 145 --debug) 146 echo "$progname: enabling shell trace mode" 147 set -x 148 ;; 149 150 --dry-run | -n) 151 run=: 152 ;; 153 154 --features) 155 echo "host: $host" 156 if test "$build_libtool_libs" = yes; then 157 echo "enable shared libraries" 158 else 159 echo "disable shared libraries" 160 fi 161 if test "$build_old_libs" = yes; then 162 echo "enable static libraries" 163 else 164 echo "disable static libraries" 165 fi 166 exit 0 167 ;; 168 169 --finish) mode="finish" ;; 170 171 --mode) prevopt="--mode" prev=mode ;; 172 --mode=*) mode="$optarg" ;; 173 174 --quiet | --silent) 175 show=: 176 ;; 177 178 -dlopen) 179 prevopt="-dlopen" 180 prev=execute_dlfiles 181 ;; 182 183 -*) 184 $echo "$modename: unrecognized option \`$arg'" 1>&2 185 $echo "$help" 1>&2 186 exit 1 187 ;; 188 189 *) 190 nonopt="$arg" 191 break 192 ;; 193 esac 194done 195 196if test -n "$prevopt"; then 197 $echo "$modename: option \`$prevopt' requires an argument" 1>&2 198 $echo "$help" 1>&2 199 exit 1 200fi 201 202if test -z "$show_help"; then 203 204 # Infer the operation mode. 205 if test -z "$mode"; then 206 case "$nonopt" in 207 *cc | *++ | gcc* | *-gcc*) 208 mode=link 209 for arg 210 do 211 case "$arg" in 212 -c) 213 mode=compile 214 break 215 ;; 216 esac 217 done 218 ;; 219 *db | *dbx | *strace | *truss) 220 mode=execute 221 ;; 222 *install*|cp|mv) 223 mode=install 224 ;; 225 *rm) 226 mode=uninstall 227 ;; 228 *) 229 # If we have no mode, but dlfiles were specified, then do execute mode. 230 test -n "$execute_dlfiles" && mode=execute 231 232 # Just use the default operation mode. 233 if test -z "$mode"; then 234 if test -n "$nonopt"; then 235 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 236 else 237 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 238 fi 239 fi 240 ;; 241 esac 242 fi 243 244 # Only execute mode is allowed to have -dlopen flags. 245 if test -n "$execute_dlfiles" && test "$mode" != execute; then 246 $echo "$modename: unrecognized option \`-dlopen'" 1>&2 247 $echo "$help" 1>&2 248 exit 1 249 fi 250 251 # Change the help message to a mode-specific one. 252 generic_help="$help" 253 help="Try \`$modename --help --mode=$mode' for more information." 254 255 # These modes are in order of execution frequency so that they run quickly. 256 case "$mode" in 257 # libtool compile mode 258 compile) 259 modename="$modename: compile" 260 # Get the compilation command and the source file. 261 base_compile= 262 lastarg= 263 srcfile="$nonopt" 264 suppress_output= 265 force_static=no 266 267 user_target=no 268 for arg 269 do 270 # Accept any command-line options. 271 case "$arg" in 272 -o) 273 if test "$user_target" != "no"; then 274 $echo "$modename: you cannot specify \`-o' more than once" 1>&2 275 exit 1 276 fi 277 user_target=next 278 ;; 279 280 -force-static) 281 force_static=yes 282 continue 283 ;; 284 285 -static) 286 build_old_libs=yes 287 continue 288 ;; 289 esac 290 291 case "$user_target" in 292 next) 293 # The next one is the -o target name 294 user_target=yes 295 continue 296 ;; 297 yes) 298 # We got the output file 299 user_target=set 300 libobj="$arg" 301 continue 302 ;; 303 esac 304 305 # Accept the current argument as the source file. 306 lastarg="$srcfile" 307 srcfile="$arg" 308 309 # Aesthetically quote the previous argument. 310 311 # Backslashify any backslashes, double quotes, and dollar signs. 312 # These are the only characters that are still specially 313 # interpreted inside of double-quoted scrings. 314 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` 315 316 # Double-quote args containing other shell metacharacters. 317 # Many Bourne shells cannot handle close brackets correctly in scan 318 # sets, so we specify it separately. 319 case "$lastarg" in 320 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 321 lastarg="\"$lastarg\"" 322 ;; 323 esac 324 325 # Add the previous argument to base_compile. 326 if test -z "$base_compile"; then 327 base_compile="$lastarg" 328 else 329 base_compile="$base_compile $lastarg" 330 fi 331 done 332 333 case "$user_target" in 334 set) 335 ;; 336 no) 337 # Get the name of the library object. 338 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` 339 ;; 340 *) 341 $echo "$modename: you must specify a target with \`-o'" 1>&2 342 exit 1 343 ;; 344 esac 345 346 # Recognize several different file suffixes. 347 # If the user specifies -o file.o, it is replaced with file.lo 348 xform='[cCFSfmso]' 349 case "$libobj" in 350 *.ada) xform=ada ;; 351 *.adb) xform=adb ;; 352 *.ads) xform=ads ;; 353 *.asm) xform=asm ;; 354 *.c++) xform=c++ ;; 355 *.cc) xform=cc ;; 356 *.cpp) xform=cpp ;; 357 *.cxx) xform=cxx ;; 358 *.f90) xform=f90 ;; 359 *.for) xform=for ;; 360 esac 361 362 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` 363 364 case "$libobj" in 365 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; 366 *) 367 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 368 exit 1 369 ;; 370 esac 371 372 if test -z "$base_compile"; then 373 $echo "$modename: you must specify a compilation command" 1>&2 374 $echo "$help" 1>&2 375 exit 1 376 fi 377 378 # Delete any leftover library objects. 379 if test "$build_old_libs" = yes; then 380 removelist="$obj $libobj $lockfile" 381 else 382 removelist="$libobj $lockfile" 383 fi 384 385 $run $rm $removelist 386 trap "$run $rm $removelist; exit 1" 1 2 15 387 388 # Calculate the filename of the output object if compiler does 389 # not support -o with -c 390 if test "$compiler_c_o" = no; then 391 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} 392 lockfile="$output_obj.lock" 393 removelist="$removelist $output_obj $lockfile" 394 trap "$run $rm $removelist; exit 1" 1 2 15 395 else 396 need_locks=no 397 lockfile= 398 fi 399 400 # Lock this critical section if it is needed 401 # We use this script file to make the link, it avoids creating a new file 402 if test "$need_locks" = yes; then 403 until ln "$0" "$lockfile" 2>/dev/null; do 404 $show "Waiting for $lockfile to be removed" 405 sleep 2 406 done 407 elif test "$need_locks" = warn; then 408 if test -f "$lockfile"; then 409 echo "\ 410*** ERROR, $lockfile exists and contains: 411`cat $lockfile 2>/dev/null` 412 413This indicates that another process is trying to use the same 414temporary object file, and libtool could not work around it because 415your compiler does not support \`-c' and \`-o' together. If you 416repeat this compilation, it may succeed, by chance, but you had better 417avoid parallel builds (make -j) in this platform, or get a better 418compiler." 419 420 $run $rm $removelist 421 exit 1 422 fi 423 echo $srcfile > "$lockfile" 424 fi 425 426 if test -n "$fix_srcfile_path"; then 427 eval srcfile=\"$fix_srcfile_path\" 428 fi 429 430 # Only build a PIC object if we are building libtool libraries. 431 if test "$build_libtool_libs" = yes; then 432 # Without this assignment, base_compile gets emptied. 433 fbsd_hideous_sh_bug=$base_compile 434 435 # All platforms use -DPIC, to notify preprocessed assembler code. 436 command="$base_compile$pic_flag -DPIC $srcfile" 437 if test "$compiler_o_lo" = yes; then 438 command="$command -o $libobj" 439 output_obj="$libobj" 440 elif test "$compiler_c_o" = yes; then 441 command="$command -o $obj" 442 output_obj="$obj" 443 fi 444 445 $show "$command" 446 if $run eval "$command"; then : 447 else 448 test -n "$output_obj" && $run $rm $removelist 449 exit 1 450 fi 451 452 if test "$need_locks" = warn && 453 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then 454 echo "\ 455*** ERROR, $lockfile contains: 456`cat $lockfile 2>/dev/null` 457 458but it should contain: 459$srcfile 460 461This indicates that another process is trying to use the same 462temporary object file, and libtool could not work around it because 463your compiler does not support \`-c' and \`-o' together. If you 464repeat this compilation, it may succeed, by chance, but you had better 465avoid parallel builds (make -j) in this platform, or get a better 466compiler." 467 468 $run $rm $removelist 469 exit 1 470 fi 471 472 # Just move the object if needed, then go on to compile the next one 473 if test "$compiler_o_lo" = no && test x"$output_obj" != x"$libobj"; then 474 $show "$mv $output_obj $libobj" 475 if $run $mv $output_obj $libobj; then : 476 else 477 error=$? 478 $run $rm $removelist 479 exit $error 480 fi 481 fi 482 483 # If we have no pic_flag and do not have -force-static, 484 # then copy the object into place and finish. 485 if test -z "$pic_flag" && test "$force_static" = no; then 486 $show "$LN_S $libobj $obj" 487 if $run $LN_S $libobj $obj; then 488 exit 0 489 else 490 error=$? 491 $run $rm $removelist 492 exit $error 493 fi 494 fi 495 496 # Allow error messages only from the first compilation. 497 suppress_output=' >/dev/null 2>&1' 498 fi 499 500 # Only build a position-dependent object if we build old libraries. 501 if test "$build_old_libs" = yes; then 502 command="$base_compile $srcfile" 503 if test "$force_static" = yes; then 504 command="$command -DLIBTOOL_STATIC" 505 fi 506 if test "$compiler_c_o" = yes; then 507 command="$command -o $obj" 508 output_obj="$obj" 509 fi 510 511 # Suppress compiler output if we already did a PIC compilation. 512 command="$command$suppress_output" 513 $show "$command" 514 if $run eval "$command"; then : 515 else 516 $run $rm $removelist 517 exit 1 518 fi 519 520 if test "$need_locks" = warn && 521 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then 522 echo "\ 523*** ERROR, $lockfile contains: 524`cat $lockfile 2>/dev/null` 525 526but it should contain: 527$srcfile 528 529This indicates that another process is trying to use the same 530temporary object file, and libtool could not work around it because 531your compiler does not support \`-c' and \`-o' together. If you 532repeat this compilation, it may succeed, by chance, but you had better 533avoid parallel builds (make -j) in this platform, or get a better 534compiler." 535 536 $run $rm $removelist 537 exit 1 538 fi 539 540 # Just move the object if needed 541 if test "$compiler_c_o" = no && test x"$output_obj" != x"$obj"; then 542 $show "$mv $output_obj $obj" 543 if $run $mv $output_obj $obj; then : 544 else 545 error=$? 546 $run $rm $removelist 547 exit $error 548 fi 549 fi 550 fi 551 552 # Unlock the critical section if it was locked 553 if test "$need_locks" != no; then 554 $rm "$lockfile" 555 fi 556 557 # Create an invalid libtool object if no PIC, so that we do not 558 # accidentally link it into a program. 559 if test "$build_libtool_libs" != yes; then 560 $show "echo timestamp > $libobj" 561 $run eval "echo timestamp > \$libobj" || exit $? 562 fi 563 564 exit 0 565 ;; 566 567 # libtool link mode 568 link) 569 modename="$modename: link" 570 C_compiler="$CC" # save it, to compile generated C sources 571 CC="$nonopt" 572 allow_undefined=yes 573 compile_command="$CC" 574 finalize_command="$CC" 575 576 compile_shlibpath= 577 finalize_shlibpath= 578 convenience= 579 old_convenience= 580 deplibs= 581 eval lib_search_path=\"$sys_lib_search_path\" 582 583 dlfiles= 584 dlprefiles= 585 export_dynamic=no 586 export_symbols= 587 generated= 588 hardcode_libdirs= 589 libobjs= 590 link_against_libtool_libs= 591 ltlibs= 592 module=no 593 objs= 594 prev= 595 prevarg= 596 release= 597 rpath= 598 perm_rpath= 599 temp_rpath= 600 vinfo= 601 602 # We need to know -static, to get the right output filenames. 603 for arg 604 do 605 case "$arg" in 606 -all-static | -static) 607 if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 608 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 609 fi 610 build_libtool_libs=no 611 build_old_libs=yes 612 break 613 ;; 614 esac 615 done 616 617 # See if our shared archives depend on static archives. 618 test -n "$old_archive_from_new_cmds" && build_old_libs=yes 619 620 # Go through the arguments, transforming them on the way. 621 while test $# -gt 0; do 622 arg="$1" 623 shift 624 625 # If the previous option needs an argument, assign it. 626 if test -n "$prev"; then 627 case "$prev" in 628 output) 629 compile_command="$compile_command @OUTPUT@" 630 finalize_command="$finalize_command @OUTPUT@" 631 ;; 632 esac 633 634 case "$prev" in 635 dlfiles|dlprefiles) 636 case "$arg" in 637 *.la | *.lo) ;; # We handle these cases below. 638 *) 639 dlprefiles="$dlprefiles $arg" 640 test "$prev" = dlfiles && dlfiles="$dlfiles $arg" 641 prev= 642 ;; 643 esac 644 ;; 645 exportsyms) 646 export_symbols="$arg" 647 if test ! -f "$arg"; then 648 $echo "$modename: symbol file \`$arg' does not exist" 649 exit 1 650 fi 651 prev= 652 ;; 653 release) 654 release="-$arg" 655 prev= 656 continue 657 ;; 658 rpath) 659 rpath="$rpath $arg" 660 prev= 661 continue 662 ;; 663 *) 664 eval "$prev=\"\$arg\"" 665 prev= 666 continue 667 ;; 668 esac 669 fi 670 671 prevarg="$arg" 672 673 case "$arg" in 674 -all-static) 675 if test -n "$link_static_flag"; then 676 compile_command="$compile_command $link_static_flag" 677 finalize_command="$finalize_command $link_static_flag" 678 fi 679 continue 680 ;; 681 682 -allow-undefined) 683 # FIXME: remove this flag sometime in the future. 684 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 685 continue 686 ;; 687 688 -dlopen) 689 prev=dlfiles 690 continue 691 ;; 692 693 -dlpreopen) 694 prev=dlprefiles 695 continue 696 ;; 697 698 -export-dynamic) 699 if test "$export_dynamic" != yes; then 700 export_dynamic=yes 701 if test -n "$export_dynamic_flag_spec"; then 702 eval arg=\"$export_dynamic_flag_spec\" 703 else 704 arg= 705 fi 706 707 # Add the symbol object into the linking commands. 708 compile_command="$compile_command @SYMFILE@" 709 finalize_command="$finalize_command @SYMFILE@" 710 fi 711 ;; 712 713 -export-symbols) 714 if test -n "$export_symbols"; then 715 $echo "$modename: cannot have more than one -exported-symbols" 716 exit 1 717 fi 718 prev=exportsyms 719 continue 720 ;; 721 722 -L*) 723 dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'` 724 case "$dir" in 725 /* | [A-Za-z]:[/\\]*) 726 # Add the corresponding hardcode_libdir_flag, if it is not identical. 727 ;; 728 *) 729 $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2 730 exit 1 731 ;; 732 esac 733 deplibs="$deplibs $arg" 734 lib_search_path="$lib_search_path `expr $arg : '-L\(.*\)'`" 735 ;; 736 737 -l*) deplibs="$deplibs $arg" ;; 738 739 -module) 740 if test "$module" != yes; then 741 module=yes 742 if test -n "$export_dynamic_flag_spec"; then 743 eval arg=\"$export_dynamic_flag_spec\" 744 else 745 arg= 746 fi 747 fi 748 ;; 749 750 -no-undefined) 751 allow_undefined=no 752 continue 753 ;; 754 755 -o) prev=output ;; 756 757 -release) 758 prev=release 759 continue 760 ;; 761 762 -rpath) 763 prev=rpath 764 continue 765 ;; 766 767 -static) 768 # If we have no pic_flag, then this is the same as -all-static. 769 if test -z "$pic_flag" && test -n "$link_static_flag"; then 770 compile_command="$compile_command $link_static_flag" 771 finalize_command="$finalize_command $link_static_flag" 772 fi 773 continue 774 ;; 775 776 -version-info) 777 prev=vinfo 778 continue 779 ;; 780 781 # Some other compiler flag. 782 -* | +*) 783 # Unknown arguments in both finalize_command and compile_command need 784 # to be aesthetically quoted because they are evaled later. 785 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 786 case "$arg" in 787 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 788 arg="\"$arg\"" 789 ;; 790 esac 791 ;; 792 793 *.o | *.obj | *.a | *.lib) 794 # A standard object. 795 objs="$objs $arg" 796 ;; 797 798 *.lo) 799 # A library object. 800 if test "$prev" = dlfiles; then 801 dlfiles="$dlfiles $arg" 802 if test "$build_libtool_libs" = yes; then 803 prev= 804 continue 805 else 806 # If libtool objects are unsupported, then we need to preload. 807 prev=dlprefiles 808 fi 809 fi 810 811 if test "$prev" = dlprefiles; then 812 # Preload the old-style object. 813 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` 814 prev= 815 fi 816 libobjs="$libobjs $arg" 817 ;; 818 819 *.la) 820 # A libtool-controlled library. 821 822 dlname= 823 libdir= 824 library_names= 825 old_library= 826 827 # Check to see that this really is a libtool archive. 828 if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 829 else 830 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 831 exit 1 832 fi 833 834 # If the library was installed with an old release of libtool, 835 # it will not redefine variable installed. 836 installed=yes 837 838 # If there is no directory component, then add one. 839 case "$arg" in 840 */* | *\\*) . $arg ;; 841 *) . ./$arg ;; 842 esac 843 844 # Get the name of the library we link against. 845 linklib= 846 for l in $old_library $library_names; do 847 linklib="$l" 848 done 849 850 if test -z "$linklib"; then 851 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 852 exit 1 853 fi 854 855 # Find the relevant object directory and library name. 856 name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` 857 858 if test "X$installed" = Xyes; then 859 dir="$libdir" 860 else 861 dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` 862 if test "X$dir" = "X$arg"; then 863 dir="$objdir" 864 else 865 dir="$dir/$objdir" 866 fi 867 fi 868 869 if test -z "$libdir"; then 870 # It is a libtool convenience library, so add in its objects. 871 convenience="$convenience $dir/$old_library" 872 old_convenience="$old_convenience $dir/$old_library" 873 deplibs="$deplibs$dependency_libs" 874 compile_command="$compile_command $dir/$old_library$dependency_libs" 875 finalize_command="$finalize_command $dir/$old_library$dependency_libs" 876 continue 877 fi 878 879 # This library was specified with -dlopen. 880 if test "$prev" = dlfiles; then 881 dlfiles="$dlfiles $arg" 882 if test -z "$dlname" || test "$build_libtool_libs" = no; then 883 # If there is no dlname or we're linking statically, 884 # we need to preload. 885 prev=dlprefiles 886 else 887 # We should not create a dependency on this library, but we 888 # may need any libraries it requires. 889 compile_command="$compile_command$dependency_libs" 890 finalize_command="$finalize_command$dependency_libs" 891 prev= 892 continue 893 fi 894 fi 895 896 # The library was specified with -dlpreopen. 897 if test "$prev" = dlprefiles; then 898 # Prefer using a static library (so that no silly _DYNAMIC symbols 899 # are required to link). 900 if test -n "$old_library"; then 901 dlprefiles="$dlprefiles $dir/$old_library" 902 else 903 dlprefiles="$dlprefiles $dir/$linklib" 904 fi 905 prev= 906 fi 907 908 if test "$build_libtool_libs" = yes && test -n "$library_names"; then 909 link_against_libtool_libs="$link_against_libtool_libs $arg" 910 if test -n "$shlibpath_var"; then 911 # Make sure the rpath contains only unique directories. 912 case "$temp_rpath " in 913 *" $dir "*) ;; 914 *) temp_rpath="$temp_rpath $dir" ;; 915 esac 916 fi 917 918 # This is the magic to use -rpath. 919 if test -n "$hardcode_libdir_flag_spec"; then 920 if test -n "$hardcode_libdir_separator"; then 921 if test -z "$hardcode_libdirs"; then 922 # Put the magic libdir with the hardcode flag. 923 hardcode_libdirs="$libdir" 924 libdir="@HARDCODE_LIBDIRS@" 925 else 926 # Just accumulate the unique libdirs. 927 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in 928 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 929 ;; 930 *) 931 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 932 ;; 933 esac 934 libdir= 935 fi 936 fi 937 938 if test -n "$libdir"; then 939 eval flag=\"$hardcode_libdir_flag_spec\" 940 941 compile_command="$compile_command $flag" 942 finalize_command="$finalize_command $flag" 943 fi 944 elif test -n "$runpath_var"; then 945 # Do the same for the permanent run path. 946 case "$perm_rpath " in 947 *" $libdir "*) ;; 948 *) perm_rpath="$perm_rpath $libdir" ;; 949 esac 950 fi 951 952 953 lib_linked=yes 954 case "$hardcode_action" in 955 immediate | unsupported) 956 if test "$hardcode_direct" = no; then 957 compile_command="$compile_command $dir/$linklib" 958 elif test "$hardcode_minus_L" = no; then 959 case "$host" in 960 *-*-sunos*) 961 compile_shlibpath="$compile_shlibpath$dir:" 962 ;; 963 esac 964 compile_command="$compile_command -L$dir -l$name" 965 elif test "$hardcode_shlibpath_var" = no; then 966 compile_shlibpath="$compile_shlibpath$dir:" 967 compile_command="$compile_command -l$name" 968 else 969 lib_linked=no 970 fi 971 ;; 972 973 relink) 974 # We need an absolute path. 975 case "$dir" in 976 /* | [A-Za-z]:[/\\]*) ;; 977 *) 978 absdir=`cd "$dir" && pwd` 979 if test -z "$absdir"; then 980 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 981 exit 1 982 fi 983 dir="$absdir" 984 ;; 985 esac 986 987 if test "$hardcode_direct" = yes; then 988 compile_command="$compile_command $dir/$linklib" 989 elif test "$hardcode_minus_L" = yes; then 990 compile_command="$compile_command -L$dir -l$name" 991 elif test "$hardcode_shlibpath_var" = yes; then 992 compile_shlibpath="$compile_shlibpath$dir:" 993 compile_command="$compile_command -l$name" 994 else 995 lib_linked=no 996 fi 997 ;; 998 999 *) 1000 lib_linked=no 1001 ;; 1002 esac 1003 1004 if test "$lib_linked" != yes; then 1005 $echo "$modename: configuration error: unsupported hardcode properties" 1006 exit 1 1007 fi 1008 1009 # Finalize command for both is simple: just hardcode it. 1010 if test "$hardcode_direct" = yes; then 1011 finalize_command="$finalize_command $libdir/$linklib" 1012 elif test "$hardcode_minus_L" = yes; then 1013 finalize_command="$finalize_command -L$libdir -l$name" 1014 elif test "$hardcode_shlibpath_var" = yes; then 1015 finalize_shlibpath="$finalize_shlibpath$libdir:" 1016 finalize_command="$finalize_command -l$name" 1017 else 1018 # We cannot seem to hardcode it, guess we'll fake it. 1019 finalize_command="$finalize_command -L$libdir -l$name" 1020 fi 1021 else 1022 # Transform directly to old archives if we don't build new libraries. 1023 if test -n "$pic_flag" && test -z "$old_library"; then 1024 $echo "$modename: cannot find static library for \`$arg'" 1>&2 1025 exit 1 1026 fi 1027 1028 # Here we assume that one of hardcode_direct or hardcode_minus_L 1029 # is not unsupported. This is valid on all known static and 1030 # shared platforms. 1031 if test "$hardcode_direct" != unsupported; then 1032 test -n "$old_library" && linklib="$old_library" 1033 compile_command="$compile_command $dir/$linklib" 1034 finalize_command="$finalize_command $dir/$linklib" 1035 else 1036 compile_command="$compile_command -L$dir -l$name" 1037 finalize_command="$finalize_command -L$dir -l$name" 1038 fi 1039 fi 1040 1041 # Add in any libraries that this one depends upon. 1042 compile_command="$compile_command$dependency_libs" 1043 finalize_command="$finalize_command$dependency_libs" 1044 continue 1045 ;; 1046 1047 # Some other compiler argument. 1048 *) 1049 # Unknown arguments in both finalize_command and compile_command need 1050 # to be aesthetically quoted because they are evaled later. 1051 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 1052 case "$arg" in 1053 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 1054 arg="\"$arg\"" 1055 ;; 1056 esac 1057 ;; 1058 esac 1059 1060 # Now actually substitute the argument into the commands. 1061 if test -n "$arg"; then 1062 compile_command="$compile_command $arg" 1063 finalize_command="$finalize_command $arg" 1064 fi 1065 done 1066 1067 if test -n "$prev"; then 1068 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 1069 $echo "$help" 1>&2 1070 exit 1 1071 fi 1072 1073 if test -n "$export_symbols" && test "$module" = yes; then 1074 $echo "$modename: \`-export-symbols' is not supported for modules" 1075 exit 1 1076 fi 1077 1078 oldlibs= 1079 # calculate the name of the file, without its directory 1080 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` 1081 1082 case "$output" in 1083 "") 1084 $echo "$modename: you must specify an output file" 1>&2 1085 $echo "$help" 1>&2 1086 exit 1 1087 ;; 1088 1089 *.a | *.lib) 1090 if test -n "$link_against_libtool_libs"; then 1091 $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 1092 exit 1 1093 fi 1094 1095 if test -n "$deplibs"; then 1096 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 1097 fi 1098 1099 if test -n "$dlfiles$dlprefiles"; then 1100 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 1101 fi 1102 1103 if test -n "$rpath"; then 1104 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 1105 fi 1106 1107 if test -n "$vinfo"; then 1108 $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 1109 fi 1110 1111 if test -n "$release"; then 1112 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 1113 fi 1114 1115 if test -n "$export_symbols"; then 1116 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 1117 fi 1118 1119 # Now set the variables for building old libraries. 1120 build_libtool_libs=no 1121 oldlibs="$output" 1122 ;; 1123 1124 *.la) 1125 # Make sure we only generate libraries of the form `libNAME.la'. 1126 case "$outputname" in 1127 lib*) ;; 1128 *) 1129 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 1130 $echo "$help" 1>&2 1131 exit 1 1132 ;; 1133 esac 1134 1135 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` 1136 eval libname=\"$libname_spec\" 1137 1138 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 1139 if test "X$output_objdir" = "X$output"; then 1140 output_objdir="$objdir" 1141 else 1142 output_objdir="$output_objdir/$objdir" 1143 fi 1144 1145 # All the library-specific variables (install_libdir is set above). 1146 library_names= 1147 old_library= 1148 dlname= 1149 1150 if test -n "$objs"; then 1151 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 1152 exit 1 1153 fi 1154 1155 # How the heck are we supposed to write a wrapper for a shared library? 1156 if test -n "$link_against_libtool_libs"; then 1157 $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 1158 exit 1 1159 fi 1160 1161 if test -n "$dlfiles$dlprefiles"; then 1162 $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 1163 fi 1164 1165 set dummy $rpath 1166 if test $# -gt 2; then 1167 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 1168 fi 1169 install_libdir="$2" 1170 1171 oldlibs= 1172 if test -z "$rpath"; then 1173 # Building a libtool convenience library. 1174 libext=al 1175 oldlibs="$output_objdir/$libname.$libext $oldlibs" 1176 build_libtool_libs=convenience 1177 dependency_libs="$deplibs" 1178 1179 if test -n "$vinfo"; then 1180 $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 1181 fi 1182 1183 if test -n "$release"; then 1184 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 1185 fi 1186 else 1187 1188 # Parse the version information argument. 1189 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' 1190 set dummy $vinfo 0 0 0 1191 IFS="$save_ifs" 1192 1193 if test -n "$8"; then 1194 $echo "$modename: too many parameters to \`-version-info'" 1>&2 1195 $echo "$help" 1>&2 1196 exit 1 1197 fi 1198 1199 current="$2" 1200 revision="$3" 1201 age="$4" 1202 1203 # Check that each of the things are valid numbers. 1204 case "$current" in 1205 0 | [1-9] | [1-9][0-9]*) ;; 1206 *) 1207 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 1208 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1209 exit 1 1210 ;; 1211 esac 1212 1213 case "$revision" in 1214 0 | [1-9] | [1-9][0-9]*) ;; 1215 *) 1216 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 1217 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1218 exit 1 1219 ;; 1220 esac 1221 1222 case "$age" in 1223 0 | [1-9] | [1-9][0-9]*) ;; 1224 *) 1225 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 1226 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1227 exit 1 1228 ;; 1229 esac 1230 1231 if test $age -gt $current; then 1232 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 1233 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 1234 exit 1 1235 fi 1236 1237 # Calculate the version variables. 1238 major= 1239 versuffix= 1240 verstring= 1241 case "$version_type" in 1242 none) ;; 1243 1244 linux) 1245 major=.`expr $current - $age` 1246 versuffix="$major.$age.$revision" 1247 ;; 1248 1249 osf) 1250 major=`expr $current - $age` 1251 versuffix=".$current.$age.$revision" 1252 verstring="$current.$age.$revision" 1253 1254 # Add in all the interfaces that we are compatible with. 1255 loop=$age 1256 while test $loop != 0; do 1257 iface=`expr $current - $loop` 1258 loop=`expr $loop - 1` 1259 verstring="$verstring:${iface}.0" 1260 done 1261 1262 # Make executables depend on our current version. 1263 verstring="$verstring:${current}.0" 1264 ;; 1265 1266 sunos) 1267 major=".$current" 1268 versuffix=".$current.$revision" 1269 ;; 1270 1271 freebsd-aout) 1272 major=".$current" 1273 versuffix=".$current.$revision"; 1274 ;; 1275 1276 freebsd-elf) 1277 major=".$current" 1278 versuffix=".$current"; 1279 ;; 1280 1281 windows) 1282 # Like Linux, but with '-' rather than '.', since we only 1283 # want one extension on Windows 95. 1284 major=`expr $current - $age` 1285 versuffix="-$major-$age-$revision" 1286 ;; 1287 1288 *) 1289 $echo "$modename: unknown library version type \`$version_type'" 1>&2 1290 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 1291 exit 1 1292 ;; 1293 esac 1294 1295 # Clear the version info if we defaulted, and they specified a release. 1296 if test -z "$vinfo" && test -n "$release"; then 1297 major= 1298 versuffix= 1299 verstring="0.0" 1300 case "$host" in 1301 *-*-sunos*) 1302 versuffix=".0.0" 1303 ;; 1304 esac 1305 fi 1306 1307 # Check to see if the archive will have undefined symbols. 1308 if test "$allow_undefined" = yes; then 1309 if test "$allow_undefined_flag" = unsupported; then 1310 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 1311 build_libtool_libs=no 1312 build_old_libs=yes 1313 fi 1314 else 1315 # Don't allow undefined symbols. 1316 allow_undefined_flag="$no_undefined_flag" 1317 fi 1318 1319 # Add libc to deplibs on all systems. 1320 dependency_libs="$deplibs" 1321 deplibs="$deplibs -lc" 1322 fi 1323 1324 # Create the output directory, or remove our outputs if we need to. 1325 if test -d $output_objdir; then 1326 $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" 1327 $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* 1328 else 1329 $show "$mkdir $output_objdir" 1330 $run $mkdir $output_objdir 1331 status=$? 1332 if test $status -ne 0 && test ! -d $output_objdir; then 1333 exit $status 1334 fi 1335 fi 1336 1337 # Now set the variables for building old libraries. 1338 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 1339 oldlibs="$oldlibs $output_objdir/$libname.$libext" 1340 1341 # Transform .lo files to .o files. 1342 oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.'${libext}' //g' -e "$los2o" -e 's/ $//g'` 1343 fi 1344 1345 if test "$build_libtool_libs" = yes; then 1346 # Transform deplibs into only deplibs that can be linked in shared. 1347 ## Gordon: Do you check for the existence of the libraries in deplibs 1348 ## on the system? That should maybe be merged in here someplace.... 1349 ## Actually: I think test_compile and file_magic do this... file_regex 1350 ## sorta does this. Only pas_all needs to be changed. -Toshio 1351 name_save=$name 1352 libname_save=$libname 1353 release_save=$release 1354 versuffix_save=$versuffix 1355 major_save=$major 1356 # I'm not sure if I'm treating the release correctly. I think 1357 # release should show up in the -l (ie -lgmp5) so we don't want to 1358 # add it in twice. Is that correct? 1359 release="" 1360 versuffix="" 1361 major="" 1362 newdeplibs= 1363 case "$check_shared_deplibs_method" in 1364 pass_all) 1365 newdeplibs=$deplibs 1366 ;; # Don't check for shared/static. Everything works. 1367 # This might be a little naive. We might want to check 1368 # whether the library exists or not. But this is on 1369 # osf3 & osf4 and I'm not really sure... Just 1370 # implementing what was already the behaviour. 1371 test_compile) 1372 # This code stresses the "libraries are programs" paradigm to its 1373 # limits. Maybe even breaks it. We compile a program, linking it 1374 # against the deplibs as a proxy for the library. Then we can check 1375 # whether they linked in statically or dynamically with ldd. 1376 $rm conftest.c 1377 cat > conftest.c <<EOF 1378 int main() { return 0; } 1379EOF 1380 $rm a.out 1381 $C_compiler conftest.c $deplibs 1382 if test $? -eq 0 ; then 1383 ldd_output=`ldd a.out` 1384 for i in $deplibs; do 1385 name="`expr $i : '-l\(.*\)'`" 1386 # If $name is empty we are operating on a -L argument. 1387 if test "$name" != "" ; then 1388 libname=`eval \\$echo \"$libname_spec\"` 1389 deplib_matches=`eval \\$echo \"$library_names_spec\"` 1390 set dummy $deplib_matches 1391 deplib_match=$2 1392 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 1393 newdeplibs="$newdeplibs $i" 1394 else 1395 echo 1396 echo "*** Warning: This library needs some functionality provided by $i." 1397 echo "*** I have the capability to make that library automatically link in when" 1398 echo "*** you link to this library. But I can only do this if you have a" 1399 echo "*** shared version of the library, which you do not appear to have." 1400 fi 1401 else 1402 newdeplibs="$newdeplibs $i" 1403 fi 1404 done 1405 else 1406 # Error occured in the first compile. Let's try to salvage the situation: 1407 # Compile a seperate program for each library. 1408 for i in $deplibs; do 1409 name="`expr $i : '-l\(.*\)'`" 1410 # If $name is empty we are operating on a -L argument. 1411 if test "$name" != "" ; then 1412 $rm a.out 1413 $C_compiler conftest.c $i 1414 # Did it work? 1415 if test $? -eq 0 ; then 1416 ldd_output=`ldd a.out` 1417 libname=`eval \\$echo \"$libname_spec\"` 1418 deplib_matches=`eval \\$echo \"$library_names_spec\"` 1419 set dummy $deplib_matches 1420 deplib_match=$2 1421 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 1422 newdeplibs="$newdeplibs $i" 1423 else 1424 echo 1425 echo "*** Warning: This library needs some functionality provided by $i." 1426 echo "*** I have the capability to make that library automatically link in when" 1427 echo "*** you link to this library. But I can only do this if you have a" 1428 echo "*** shared version of the library, which you do not appear to have." 1429 fi 1430 else 1431 echo 1432 echo "*** Warning! Library $i is needed by this library but I was not able to" 1433 echo "*** make it link in! You will probably need to install it or some" 1434 echo "*** library that it depends on before this library will be fully" 1435 echo "*** functional. Installing it before continuing would be even better." 1436 fi 1437 else 1438 newdeplibs="$newdeplibs $i" 1439 fi 1440 done 1441 fi 1442 deplibs=$newdeplibs 1443 ;; 1444 file_magic* | file_regex) 1445 set dummy $check_shared_deplibs_method 1446 file_magic_regex="`expr \"$check_shared_deplibs_method\" : \"$2\(.*\)\"`" 1447 for a_deplib in $deplibs; do 1448 name="`expr $a_deplib : '-l\(.*\)'`" 1449 # If $name is empty we are operating on a -L argument. 1450 if test "$name" != "" ; then 1451 libname=`eval \\$echo \"$libname_spec\"` 1452 case "$check_shared_deplibs_method" in 1453 file_magic*) 1454 for i in $lib_search_path; do 1455 # This needs to be more general than file_regex in order to 1456 # catch things like glibc on linux. Maybe file_regex 1457 # should be more general as well, but maybe not. Since 1458 # library names are supposed to conform to 1459 # library_name_spec, I think file_regex should remain 1460 # strict. What do you think Gordon? 1461 potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 1462 for potent_lib in $potential_libs; do 1463 file_output=`file $potent_lib` 1464 if test `expr "$file_output" : ".*$file_magic_regex"` -ne 0 ; then 1465 newdeplibs="$newdeplibs $a_deplib" 1466 a_deplib="" 1467 break 2 1468 fi 1469 done 1470 done 1471 ;; 1472 file_regex) 1473 deplib_matches=`eval \\$echo \"$library_names_spec\"` 1474 set dummy $deplib_matches 1475 deplib_match=$2 1476 for i in $lib_search_path; do 1477 potential_libs=`ls $i/$deplib_match* 2>/dev/null` 1478 if test "$potential_libs" != "" ; then 1479 newdeplibs="$newdeplibs $a_deplib" 1480 a_deplib="" 1481 break 1482 fi 1483 done 1484 ;; 1485 esac 1486 if test "$a_deplib" != "" ; then 1487 echo 1488 echo "*** Warning: This library needs some functionality provided by $a_deplib." 1489 echo "*** I have the capability to make that library automatically link in when" 1490 echo "*** you link to this library. But I can only do this if you have a" 1491 echo "*** shared version of the library, which you do not appear to have." 1492 fi 1493 else 1494 # Add a -L argument. 1495 newdeplibs="$newdeplibs $a_deplib" 1496 fi 1497 done # Gone through all deplibs. 1498 ;; 1499 none | *) deplibs="" ;; 1500 esac 1501 versuffix=$versuffix_save 1502 major=$major_save 1503 release=$release_save 1504 libname=$libname_save 1505 name=$name_save 1506 deplibs=$newdeplibs 1507 # Done checking deplibs! 1508 1509 # Get the real and link names of the library. 1510 eval library_names=\"$library_names_spec\" 1511 set dummy $library_names 1512 realname="$2" 1513 shift; shift 1514 1515 if test -n "$soname_spec"; then 1516 eval soname=\"$soname_spec\" 1517 else 1518 soname="$realname" 1519 fi 1520 1521 lib="$output_objdir/$realname" 1522 for link 1523 do 1524 linknames="$linknames $link" 1525 done 1526 1527 # Use standard objects if they are PIC. 1528 test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e "$los2o" -e 's/ $//g'` 1529 1530 if test -n "$whole_archive_flag_spec"; then 1531 if test -n "$convenience"; then 1532 eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 1533 fi 1534 else 1535 for xlib in $convenience; do 1536 # Extract the objects. 1537 xdir="$xlib"x 1538 generated="$generated $xdir" 1539 xlib=`echo "$xlib" | $Xsed -e 's%^.*/%%'` 1540 1541 $show "${rm}r $xdir" 1542 $run ${rm}r "$xdir" 1543 $show "mkdir $xdir" 1544 $run mkdir "$xdir" 1545 status=$? 1546 if test $status -ne 0 && test ! -d "$xdir"; then 1547 exit $status 1548 fi 1549 $show "(cd $xdir && $AR x ../$xlib)" 1550 $run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $? 1551 1552 libobjs="$libobjs `echo $xdir/*`" 1553 done 1554 fi 1555 1556 # Do each of the archive commands. 1557 if test -n "$export_symbols" && test -n "$archive_sym_cmds"; then 1558 eval cmds=\"$archive_sym_cmds\" 1559 else 1560 eval cmds=\"$archive_cmds\" 1561 fi 1562 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 1563 for cmd in $cmds; do 1564 IFS="$save_ifs" 1565 $show "$cmd" 1566 $run eval "$cmd" || exit $? 1567 done 1568 IFS="$save_ifs" 1569 1570 # Create links to the real library. 1571 for linkname in $linknames; do 1572 if test "$realname" != "$linkname"; then 1573 $show "(cd $output_objdir && $LN_S $realname $linkname)" 1574 $run eval '(cd $output_objdir && $LN_S $realname $linkname)' || exit $? 1575 fi 1576 done 1577 1578 # If -module or -export-dynamic was specified, set the dlname. 1579 if test "$module" = yes || test "$export_dynamic" = yes; then 1580 # On all known operating systems, these are identical. 1581 dlname="$soname" 1582 fi 1583 fi 1584 ;; 1585 1586 *.lo | *.o | *.obj) 1587 if test -n "$link_against_libtool_libs"; then 1588 $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 1589 exit 1 1590 fi 1591 1592 if test -n "$deplibs"; then 1593 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 1594 fi 1595 1596 if test -n "$dlfiles$dlprefiles"; then 1597 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 1598 fi 1599 1600 if test -n "$rpath"; then 1601 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 1602 fi 1603 1604 if test -n "$vinfo"; then 1605 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 1606 fi 1607 1608 if test -n "$release"; then 1609 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 1610 fi 1611 1612 case "$output" in 1613 *.lo) 1614 if test -n "$objs"; then 1615 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 1616 exit 1 1617 fi 1618 libobj="$output" 1619 obj=`$echo "X$output" | $Xsed -e "$lo2o"` 1620 ;; 1621 *) 1622 libobj= 1623 obj="$output" 1624 ;; 1625 esac 1626 1627 # Delete the old objects. 1628 $run $rm $obj $libobj 1629 1630 # Create the old-style object. 1631 reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.'${libext}' //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'` 1632 1633 output="$obj" 1634 eval cmds=\"$reload_cmds\" 1635 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 1636 for cmd in $cmds; do 1637 IFS="$save_ifs" 1638 $show "$cmd" 1639 $run eval "$cmd" || exit $? 1640 done 1641 IFS="$save_ifs" 1642 1643 # Exit if we aren't doing a library object file. 1644 test -z "$libobj" && exit 0 1645 1646 if test "$build_libtool_libs" != yes; then 1647 # Create an invalid libtool object if no PIC, so that we don't 1648 # accidentally link it into a program. 1649 $show "echo timestamp > $libobj" 1650 $run eval "echo timestamp > $libobj" || exit $? 1651 exit 0 1652 fi 1653 1654 if test -n "$pic_flag"; then 1655 # Only do commands if we really have different PIC objects. 1656 reload_objs="$libobjs" 1657 output="$libobj" 1658 eval cmds=\"$reload_cmds\" 1659 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 1660 for cmd in $cmds; do 1661 IFS="$save_ifs" 1662 $show "$cmd" 1663 $run eval "$cmd" || exit $? 1664 done 1665 IFS="$save_ifs" 1666 else 1667 # Just create a symlink. 1668 $show "$LN_S $obj $libobj" 1669 $run $LN_S $obj $libobj || exit $? 1670 fi 1671 1672 exit 0 1673 ;; 1674 1675 # Anything else should be a program. 1676 *) 1677 if test -n "$vinfo"; then 1678 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 1679 fi 1680 1681 if test -n "$release"; then 1682 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 1683 fi 1684 1685 if test -n "$rpath"; then 1686 # If the user specified any rpath flags, then add them. 1687 for libdir in $rpath; do 1688 if test -n "$hardcode_libdir_flag_spec"; then 1689 if test -n "$hardcode_libdir_separator"; then 1690 if test -z "$hardcode_libdirs"; then 1691 # Put the magic libdir with the hardcode flag. 1692 hardcode_libdirs="$libdir" 1693 libdir="@HARDCODE_LIBDIRS@" 1694 else 1695 # Just accumulate the unique libdirs. 1696 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in 1697 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 1698 ;; 1699 *) 1700 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 1701 ;; 1702 esac 1703 libdir= 1704 fi 1705 fi 1706 1707 if test -n "$libdir"; then 1708 eval flag=\"$hardcode_libdir_flag_spec\" 1709 1710 compile_command="$compile_command $flag" 1711 finalize_command="$finalize_command $flag" 1712 fi 1713 elif test -n "$runpath_var"; then 1714 case "$perm_rpath " in 1715 *" $libdir "*) ;; 1716 *) perm_rpath="$perm_rpath $libdir" ;; 1717 esac 1718 fi 1719 done 1720 fi 1721 1722 # Substitute the hardcoded libdirs into the compile commands. 1723 if test -n "$hardcode_libdir_separator"; then 1724 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` 1725 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` 1726 fi 1727 1728 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` 1729 if test "X$output_objdir" = "X$output"; then 1730 output_objdir="$objdir" 1731 else 1732 output_objdir="$output_objdir/$objdir" 1733 fi 1734 1735 if test -n "$libobjs" && test "$build_old_libs" = yes; then 1736 # Transform all the library objects into standard objects. 1737 compile_command=`$echo "X$compile_command " | $Xsed -e "$los2o" -e 's/ $//'` 1738 finalize_command=`$echo "X$finalize_command " | $Xsed -e "$los2o" -e 's/ $//'` 1739 fi 1740 1741 if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then 1742 dlsyms="${outputname}S.c" 1743 else 1744 dlsyms= 1745 fi 1746 1747 if test -n "$dlsyms"; then 1748 case "$dlsyms" in 1749 "") ;; 1750 *.c) 1751 if test -z "$export_symbols"; then 1752 # Add our own program objects to the preloaded list. 1753 dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e "$los2o" -e 's/ $//'` 1754 fi 1755 1756 # Discover the nlist of each of the dlfiles. 1757 nlist="$objdir/${output}.nm" 1758 1759 if test -d $objdir; then 1760 $show "$rm $nlist ${nlist}T" 1761 $run $rm "$nlist" "${nlist}T" 1762 else 1763 $show "$mkdir $objdir" 1764 $run $mkdir $objdir 1765 status=$? 1766 if test $status -ne 0 && test ! -d $objdir; then 1767 exit $status 1768 fi 1769 fi 1770 1771 # Parse the name list into a source file. 1772 $show "creating $objdir/$dlsyms" 1773 1774 $echo > "$objdir/$dlsyms" "\ 1775/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ 1776/* Generated by $PROGRAM - GNU $PACKAGE $VERSION */ 1777 1778#ifdef __cplusplus 1779extern \"C\" { 1780#endif 1781 1782/* Prevent the only kind of declaration conflicts we can make. */ 1783#define dld_preloaded_symbols some_other_symbol 1784 1785/* External symbol declarations for the compiler. */\ 1786" 1787 1788 if test -n "$export_symbols"; then 1789 sed -e 's/^\(.*\)/\1 \1/' < "$export_symbols" > "$nlist" 1790 fi 1791 1792 for arg in $dlprefiles; do 1793 $show "extracting global C symbols from \`$arg'" 1794 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" 1795 done 1796 1797 if test -z "$run"; then 1798 # Make sure we at least have an empty file. 1799 test -f "$nlist" || : > "$nlist" 1800 1801 # Try sorting and uniquifying the output. 1802 if sort "$nlist" | uniq > "$nlist"T; then 1803 mv -f "$nlist"T "$nlist" 1804 else 1805 $rm "$nlist"T 1806 fi 1807 1808 if test -f "$nlist"; then 1809 sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$output_objdir/$dlsyms" 1810 else 1811 echo '/* NONE */' >> "$output_objdir/$dlsyms" 1812 fi 1813 1814 $echo >> "$output_objdir/$dlsyms" "\ 1815 1816#undef dld_preloaded_symbols 1817 1818#if defined (__STDC__) && __STDC__ 1819# define __ptr_t void * 1820#else 1821# define __ptr_t char * 1822#endif 1823 1824/* The mapping between symbol names and symbols. */ 1825struct { 1826 char *name; 1827 __ptr_t address; 1828} 1829dld_preloaded_symbols[] = 1830{\ 1831" 1832 1833 if test -n "$export_symbols"; then 1834 echo >> "$objdir/$dlsyms" "\ 1835 {\"${output}\", (__ptr_t) 0}," 1836 sed 's/^\(.*\)/ {"\1", (__ptr_t) \&\1},/' < "$export_symbols" >> "$objdir/$dlsyms" 1837 fi 1838 1839 for arg in $dlprefiles; do 1840 name=`echo "$arg" | sed -e 's%^.*/%%'` 1841 echo >> "$objdir/$dlsyms" "\ 1842 {\"$name\", (__ptr_t) 0}," 1843 eval "$NM $arg | $global_symbol_pipe > '$nlist'" 1844 1845 if test -f "$nlist"; then 1846 sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms" 1847 else 1848 echo '/* NONE */' >> "$output_objdir/$dlsyms" 1849 fi 1850 1851 done 1852 1853 if test -f "$nlist"; then 1854 sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$output_objdir/$dlsyms" 1855 fi 1856 1857 $echo >> "$output_objdir/$dlsyms" "\ 1858 {0, (__ptr_t) 0} 1859}; 1860 1861#ifdef __cplusplus 1862} 1863#endif\ 1864" 1865 fi 1866 1867 # Now compile the dynamic symbol file. 1868 $show "(cd $objdir && $C_compiler -c$no_builtin_flag \"$dlsyms\")" 1869 $run eval '(cd $objdir && $C_compiler -c$no_builtin_flag "$dlsyms")' || exit $? 1870 1871 # Transform the symbol file into the correct name. 1872 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"` 1873 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.${objext}%"` 1874 ;; 1875 *) 1876 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 1877 exit 1 1878 ;; 1879 esac 1880 elif test "$export_dynamic" != yes; then 1881 test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2 1882 else 1883 # We keep going just in case the user didn't refer to 1884 # dld_preloaded_symbols. The linker will fail if global_symbol_pipe 1885 # really was required. 1886 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 1887 1888 # Nullify the symbol file. 1889 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` 1890 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` 1891 fi 1892 1893 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then 1894 # Replace the output file specification. 1895 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 1896 finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` 1897 1898 # We have no uninstalled library dependencies, so finalize right now. 1899 $show "$compile_command" 1900 $run eval "$compile_command" 1901 exit $? 1902 fi 1903 1904 # Replace the output file specification. 1905 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 1906 finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'T%g'` 1907 1908 # Create the binary in the object directory, then wrap it. 1909 if test ! -d $output_objdir; then 1910 $show "$mkdir $output_objdir" 1911 $run $mkdir $output_objdir 1912 status=$? 1913 if test $status -ne 0 && test ! -d $objdir; then 1914 exit $status 1915 fi 1916 fi 1917 1918 if test -n "$shlibpath_var"; then 1919 # We should set the shlibpath_var 1920 rpath= 1921 for dir in $temp_rpath; do 1922 case "$dir" in 1923 /* | [A-Za-z]:[/\\]*) 1924 # Absolute path. 1925 rpath="$rpath$dir:" 1926 ;; 1927 *) 1928 # Relative path: add a thisdir entry. 1929 rpath="$rpath\$thisdir/$dir:" 1930 ;; 1931 esac 1932 done 1933 temp_rpath="$rpath" 1934 fi 1935 1936 # Delete the old output file. 1937 $run $rm $output 1938 1939 if test -n "$compile_shlibpath"; then 1940 compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command" 1941 fi 1942 if test -n "$finalize_shlibpath"; then 1943 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 1944 fi 1945 1946 if test -n "$runpath_var" && test -n "$perm_rpath"; then 1947 # We should set the runpath_var. 1948 rpath= 1949 for dir in $perm_rpath; do 1950 rpath="$rpath$dir:" 1951 done 1952 compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command" 1953 finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command" 1954 fi 1955 1956 if test "$hardcode_action" = relink; then 1957 # AGH! Flame the AIX and HP-UX people for me, will ya? 1958 $echo "$modename: warning: this platform doesn\'t like uninstalled shared libraries" 1>&2 1959 $echo "$modename: \`$output' will be relinked during installation" 1>&2 1960 fi 1961 1962 $show "$compile_command" 1963 $run eval "$compile_command" || exit $? 1964 1965 # Now create the wrapper script. 1966 $show "creating $output" 1967 1968 # Quote the finalize command for shipping. 1969 finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"` 1970 1971 # Quote $echo for shipping. 1972 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then 1973 case "$0" in 1974 /* | [A-Za-z]:[/\\]*) qecho="$SHELL $0 --fallback-echo";; 1975 *) qecho="$SHELL `pwd`/$0 --fallback-echo";; 1976 esac 1977 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` 1978 else 1979 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` 1980 fi 1981 1982 # Only actually do things if our run command is non-null. 1983 if test -z "$run"; then 1984 $rm $output 1985 trap "$rm $output; exit 1" 1 2 15 1986 1987 $echo > $output "\ 1988#! $SHELL 1989 1990# $output - temporary wrapper script for $objdir/$outputname 1991# Generated by $PROGRAM - GNU $PACKAGE $VERSION 1992# 1993# The $output program cannot be directly executed until all the libtool 1994# libraries that it depends on are installed. 1995# 1996# This wrapper script should never be moved out of the build directory. 1997# If it is, it will not operate correctly. 1998 1999# Sed substitution that helps us do robust quoting. It backslashifies 2000# metacharacters that are still active within double-quoted strings. 2001Xsed='sed -e s/^X//' 2002sed_quote_subst='$sed_quote_subst' 2003 2004# The HP-UX ksh and POSIX shell print the target directory to stdout 2005# if CDPATH is set. 2006if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi 2007 2008# This environment variable determines our operation mode. 2009if test \"\$libtool_install_magic\" = \"$magic\"; then 2010 # install mode needs the following variables: 2011 link_against_libtool_libs='$link_against_libtool_libs' 2012 finalize_command=\"cd `pwd | sed -e $sed_quote_subst`; $finalize_command\" 2013else 2014 # When we are sourced in execute mode, \$file and \$echo are already set. 2015 if test \"\$libtool_execute_magic\" != \"$magic\"; then 2016 echo=\"$qecho\" 2017 file=\"\$0\" 2018 # Make sure echo works. 2019 if test \"X\$1\" = X--no-reexec; then 2020 # Discard the --no-reexec flag, and continue. 2021 shift 2022 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then 2023 # Yippee, \$echo works! 2024 : 2025 else 2026 # Restart under the correct shell, and then maybe \$echo will work. 2027 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} 2028 fi 2029 fi\ 2030" 2031 $echo >> $output "\ 2032 2033 # Find the directory that this script lives in. 2034 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` 2035 test \"x\$thisdir\" = \"x\$file\" && thisdir=. 2036 2037 # Follow symbolic links until we get to the real thisdir. 2038 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` 2039 while test -n \"\$file\"; do 2040 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` 2041 2042 # If there was a directory component, then change thisdir. 2043 if test \"x\$destdir\" != \"x\$file\"; then 2044 case \"\$destdir\" in 2045 /* | [A-Za-z]:[/\\]*) thisdir=\"\$destdir\" ;; 2046 *) thisdir=\"\$thisdir/\$destdir\" ;; 2047 esac 2048 fi 2049 2050 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` 2051 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` 2052 done 2053 2054 # Try to get the absolute directory name. 2055 absdir=\`cd \"\$thisdir\" && pwd\` 2056 test -n \"\$absdir\" && thisdir=\"\$absdir\" 2057 2058 progdir=\"\$thisdir/$objdir\" 2059 program='$outputname' 2060 2061 if test -f \"\$progdir/\$program\"; then" 2062 2063 # Export our shlibpath_var if we have one. 2064 if test -n "$shlibpath_var" && test -n "$temp_rpath"; then 2065 $echo >> $output "\ 2066 # Add our own library path to $shlibpath_var 2067 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 2068 2069 # Some systems cannot cope with colon-terminated $shlibpath_var 2070 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\` 2071 2072 export $shlibpath_var 2073" 2074 fi 2075 2076 $echo >> $output "\ 2077 if test \"\$libtool_execute_magic\" != \"$magic\"; then 2078 # Run the actual program with our arguments. 2079 2080 # Export the path to the program. 2081 PATH=\"\$progdir:\$PATH\" 2082 export PATH 2083 2084 exec \$program \${1+\"\$@\"} 2085 2086 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" 2087 exit 1 2088 fi 2089 else 2090 # The program doesn't exist. 2091 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 2092 \$echo \"This script is just a wrapper for \$program.\" 1>&2 2093 echo \"See the $PACKAGE documentation for more information.\" 1>&2 2094 exit 1 2095 fi 2096fi\ 2097" 2098 chmod +x $output 2099 fi 2100 exit 0 2101 ;; 2102 esac 2103 2104 # See if we need to build an old-fashioned archive. 2105 for oldlib in $oldlibs; do 2106 2107 if test "$build_libtool_libs" = convenience; then 2108 oldobjs="$libobjs" 2109 addlibs="$convenience" 2110 build_libtool_libs=no 2111 else 2112 oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.'${libext}' //g' -e 's/[^ ]*\.lib //g' -e "$los2o" -e 's/ $//g'` 2113 addlibs="$old_convenience" 2114 fi 2115 2116 # Add in members from convenience archives. 2117 for xlib in $addlibs; do 2118 # Extract the objects. 2119 xdir="$xlib"x 2120 generated="$generated $xdir" 2121 xlib=`echo "$xlib" | $Xsed -e 's%^.*/%%'` 2122 2123 $show "${rm}r $xdir" 2124 $run ${rm}r "$xdir" 2125 $show "mkdir $xdir" 2126 $run mkdir "$xdir" 2127 status=$? 2128 if test $status -ne 0 && test ! -d "$xdir"; then 2129 exit $status 2130 fi 2131 $show "(cd $xdir && $AR x ../$xlib)" 2132 $run eval "(cd \$xdir && $AR x ../\$xlib)" || exit $? 2133 2134 oldobjs="$oldobjs `echo $xdir/*`" 2135 done 2136 2137 # Do each command in the archive commands. 2138 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 2139 eval cmds=\"$old_archive_from_new_cmds\" 2140 else 2141 eval cmds=\"$old_archive_cmds\" 2142 fi 2143 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2144 for cmd in $cmds; do 2145 IFS="$save_ifs" 2146 $show "$cmd" 2147 $run eval "$cmd" || exit $? 2148 done 2149 IFS="$save_ifs" 2150 done 2151 2152 if test -n "$generated"; then 2153 $show "${rm}r$generated" 2154 $run ${rm}r$generated 2155 fi 2156 2157 # Now create the libtool archive. 2158 case "$output" in 2159 *.la) 2160 old_library= 2161 test "$build_old_libs" = yes && old_library="$libname.$libext" 2162 $show "creating $output" 2163 2164 # Only create the output if not a dry run. 2165 if test -z "$run"; then 2166 $echo > $output "\ 2167# $output - a libtool library file 2168# Generated by $PROGRAM - GNU $PACKAGE $VERSION 2169 2170# The name that we can dlopen(3). 2171dlname='$dlname' 2172 2173# Names of this library. 2174library_names='$library_names' 2175 2176# The name of the static archive. 2177old_library='$old_library' 2178 2179# Libraries that this one depends upon. 2180dependency_libs='$dependency_libs' 2181 2182# Version information for $libname. 2183current=$current 2184age=$age 2185revision=$revision 2186 2187# Is this an already installed library? 2188installed=no 2189 2190# Directory that this library needs to be installed in: 2191libdir='$install_libdir'\ 2192" 2193 fi 2194 2195 # Do a symbolic link so that the libtool archive can be found in 2196 # LD_LIBRARY_PATH before the program is installed. 2197 $show "(cd $output_objdir && $LN_S ../$outputname $outputname)" 2198 $run eval "(cd $output_objdir && $LN_S ../$outputname $outputname)" || exit $? 2199 ;; 2200 esac 2201 exit 0 2202 ;; 2203 2204 # libtool install mode 2205 install) 2206 modename="$modename: install" 2207 2208 # There may be an optional sh(1) argument at the beginning of 2209 # install_prog (especially on Windows NT). 2210 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then 2211 # Aesthetically quote it. 2212 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` 2213 case "$arg" in 2214 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 2215 arg="\"$arg\"" 2216 ;; 2217 esac 2218 install_prog="$arg " 2219 arg="$1" 2220 shift 2221 else 2222 install_prog= 2223 arg="$nonopt" 2224 fi 2225 2226 # The real first argument should be the name of the installation program. 2227 # Aesthetically quote it. 2228 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 2229 case "$arg" in 2230 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 2231 arg="\"$arg\"" 2232 ;; 2233 esac 2234 install_prog="$install_prog$arg" 2235 2236 # We need to accept at least all the BSD install flags. 2237 dest= 2238 files= 2239 opts= 2240 prev= 2241 install_type= 2242 isdir=no 2243 stripme= 2244 for arg 2245 do 2246 if test -n "$dest"; then 2247 files="$files $dest" 2248 dest="$arg" 2249 continue 2250 fi 2251 2252 case "$arg" in 2253 -d) isdir=yes ;; 2254 -f) prev="-f" ;; 2255 -g) prev="-g" ;; 2256 -m) prev="-m" ;; 2257 -o) prev="-o" ;; 2258 -s) 2259 stripme=" -s" 2260 continue 2261 ;; 2262 -*) ;; 2263 2264 *) 2265 # If the previous option needed an argument, then skip it. 2266 if test -n "$prev"; then 2267 prev= 2268 else 2269 dest="$arg" 2270 continue 2271 fi 2272 ;; 2273 esac 2274 2275 # Aesthetically quote the argument. 2276 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` 2277 case "$arg" in 2278 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) 2279 arg="\"$arg\"" 2280 ;; 2281 esac 2282 install_prog="$install_prog $arg" 2283 done 2284 2285 if test -z "$install_prog"; then 2286 $echo "$modename: you must specify an install program" 1>&2 2287 $echo "$help" 1>&2 2288 exit 1 2289 fi 2290 2291 if test -n "$prev"; then 2292 $echo "$modename: the \`$prev' option requires an argument" 1>&2 2293 $echo "$help" 1>&2 2294 exit 1 2295 fi 2296 2297 if test -z "$files"; then 2298 if test -z "$dest"; then 2299 $echo "$modename: no file or destination specified" 1>&2 2300 else 2301 $echo "$modename: you must specify a destination" 1>&2 2302 fi 2303 $echo "$help" 1>&2 2304 exit 1 2305 fi 2306 2307 # Strip any trailing slash from the destination. 2308 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` 2309 2310 # Check to see that the destination is a directory. 2311 test -d "$dest" && isdir=yes 2312 if test "$isdir" = yes; then 2313 destdir="$dest" 2314 destname= 2315 else 2316 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` 2317 test "X$destdir" = "X$dest" && destdir=. 2318 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` 2319 2320 # Not a directory, so check to see that there is only one file specified. 2321 set dummy $files 2322 if test $# -gt 2; then 2323 $echo "$modename: \`$dest' is not a directory" 1>&2 2324 $echo "$help" 1>&2 2325 exit 1 2326 fi 2327 fi 2328 case "$destdir" in 2329 /* | [A-Za-z]:[/\\]*) ;; 2330 *) 2331 for file in $files; do 2332 case "$file" in 2333 *.lo) ;; 2334 *) 2335 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 2336 $echo "$help" 1>&2 2337 exit 1 2338 ;; 2339 esac 2340 done 2341 ;; 2342 esac 2343 2344 # This variable tells wrapper scripts just to set variables rather 2345 # than running their programs. 2346 libtool_install_magic="$magic" 2347 2348 staticlibs= 2349 future_libdirs= 2350 current_libdirs= 2351 for file in $files; do 2352 2353 # Do each installation. 2354 case "$file" in 2355 *.a | *.lib) 2356 # Do the static libraries later. 2357 staticlibs="$staticlibs $file" 2358 ;; 2359 2360 *.la) 2361 # Check to see that this really is a libtool archive. 2362 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2363 else 2364 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 2365 $echo "$help" 1>&2 2366 exit 1 2367 fi 2368 2369 library_names= 2370 old_library= 2371 # If there is no directory component, then add one. 2372 case "$file" in 2373 */* | *\\*) . $file ;; 2374 *) . ./$file ;; 2375 esac 2376 2377 # Add the libdir to current_libdirs if it is the destination. 2378 if test "X$destdir" = "X$libdir"; then 2379 case "$current_libdirs " in 2380 *" $libdir "*) ;; 2381 *) current_libdirs="$current_libdirs $libdir" ;; 2382 esac 2383 else 2384 # Note the libdir as a future libdir. 2385 case "$future_libdirs " in 2386 *" $libdir "*) ;; 2387 *) future_libdirs="$future_libdirs $libdir" ;; 2388 esac 2389 fi 2390 2391 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" 2392 test "X$dir" = "X$file/" && dir= 2393 dir="$dir$objdir" 2394 2395 # See the names of the shared library. 2396 set dummy $library_names 2397 if test -n "$2"; then 2398 realname="$2" 2399 shift 2400 shift 2401 2402 # Install the shared library and build the symlinks. 2403 $show "$install_prog $dir/$realname $destdir/$realname" 2404 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? 2405 test "X$dlname" = "X$realname" && dlname= 2406 2407 if test $# -gt 0; then 2408 # Delete the old symlinks, and create new ones. 2409 for linkname 2410 do 2411 test "X$dlname" = "X$linkname" && dlname= 2412 if test "$linkname" != "$realname"; then 2413 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" 2414 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" 2415 fi 2416 done 2417 fi 2418 2419 if test -n "$dlname"; then 2420 # Install the dynamically-loadable library. 2421 $show "$install_prog $dir/$dlname $destdir/$dlname" 2422 $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $? 2423 fi 2424 2425 # Do each command in the postinstall commands. 2426 lib="$destdir/$realname" 2427 eval cmds=\"$postinstall_cmds\" 2428 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2429 for cmd in $cmds; do 2430 IFS="$save_ifs" 2431 $show "$cmd" 2432 $run eval "$cmd" || exit $? 2433 done 2434 IFS="$save_ifs" 2435 fi 2436 2437 # Install the pseudo-library for information purposes. 2438 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 2439 instname="$dir/$name"i 2440 $show "Creating $instname" 2441 $rm "$instname" 2442 sed 's/^installed=no$/installed=yes/' "$file" > "$instname" 2443 $show "$install_prog $instname $destdir/$name" 2444 $run eval "$install_prog $instname $destdir/$name" || exit $? 2445 $show "$rm $instname" 2446 $rm "$instname" 2447 2448 # Maybe install the static library, too. 2449 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 2450 ;; 2451 2452 *.lo) 2453 # Install (i.e. copy) a libtool object. 2454 2455 # Figure out destination file name, if it wasn't already specified. 2456 if test -n "$destname"; then 2457 destfile="$destdir/$destname" 2458 else 2459 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 2460 destfile="$destdir/$destfile" 2461 fi 2462 2463 # Deduce the name of the destination old-style object file. 2464 case "$destfile" in 2465 *.lo) 2466 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` 2467 ;; 2468 *.o | *.obj) 2469 staticdest="$destfile" 2470 destfile= 2471 ;; 2472 *) 2473 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 2474 $echo "$help" 1>&2 2475 exit 1 2476 ;; 2477 esac 2478 2479 # Install the libtool object if requested. 2480 if test -n "$destfile"; then 2481 $show "$install_prog $file $destfile" 2482 $run eval "$install_prog $file $destfile" || exit $? 2483 fi 2484 2485 # Install the old object if enabled. 2486 if test "$build_old_libs" = yes; then 2487 # Deduce the name of the old-style object file. 2488 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` 2489 2490 $show "$install_prog $staticobj $staticdest" 2491 $run eval "$install_prog \$staticobj \$staticdest" || exit $? 2492 fi 2493 exit 0 2494 ;; 2495 2496 *) 2497 # Figure out destination file name, if it wasn't already specified. 2498 if test -n "$destname"; then 2499 destfile="$destdir/$destname" 2500 else 2501 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 2502 destfile="$destdir/$destfile" 2503 fi 2504 2505 # Do a test to see if this is really a libtool program. 2506 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2507 link_against_libtool_libs= 2508 finalize_command= 2509 2510 # If there is no directory component, then add one. 2511 case "$file" in 2512 */* | *\\*) . $file ;; 2513 *) . ./$file ;; 2514 esac 2515 2516 # Check the variables that should have been set. 2517 if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then 2518 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 2519 exit 1 2520 fi 2521 2522 finalize=yes 2523 for lib in $link_against_libtool_libs; do 2524 # Check to see that each library is installed. 2525 libdir= 2526 if test -f "$lib"; then 2527 # If there is no directory component, then add one. 2528 case "$lib" in 2529 */* | *\\*) . $lib ;; 2530 *) . ./$lib ;; 2531 esac 2532 fi 2533 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" 2534 if test -n "$libdir" && test ! -f "$libfile"; then 2535 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 2536 finalize=no 2537 fi 2538 done 2539 2540 if test "$hardcode_action" = relink; then 2541 if test "$finalize" = yes; then 2542 $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2 2543 $show "$finalize_command" 2544 if $run eval "$finalize_command"; then : 2545 else 2546 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 2547 continue 2548 fi 2549 file="$objdir/$file"T 2550 else 2551 $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2 2552 fi 2553 else 2554 # Install the binary that we compiled earlier. 2555 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` 2556 fi 2557 fi 2558 2559 $show "$install_prog$stripme $file $destfile" 2560 $run eval "$install_prog\$stripme \$file \$destfile" || exit $? 2561 ;; 2562 esac 2563 done 2564 2565 for file in $staticlibs; do 2566 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 2567 2568 # Set up the ranlib parameters. 2569 oldlib="$destdir/$name" 2570 2571 $show "$install_prog $file $oldlib" 2572 $run eval "$install_prog \$file \$oldlib" || exit $? 2573 2574 # Do each command in the postinstall commands. 2575 eval cmds=\"$old_postinstall_cmds\" 2576 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2577 for cmd in $cmds; do 2578 IFS="$save_ifs" 2579 $show "$cmd" 2580 $run eval "$cmd" || exit $? 2581 done 2582 IFS="$save_ifs" 2583 done 2584 2585 if test -n "$future_libdirs"; then 2586 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 2587 fi 2588 2589 if test -n "$current_libdirs"; then 2590 # Maybe just do a dry run. 2591 test -n "$run" && current_libdirs=" -n$current_libdirs" 2592 exec $SHELL $0 --finish$current_libdirs 2593 exit 1 2594 fi 2595 2596 exit 0 2597 ;; 2598 2599 # libtool finish mode 2600 finish) 2601 modename="$modename: finish" 2602 libdirs="$nonopt" 2603 admincmds= 2604 2605 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2606 for dir 2607 do 2608 libdirs="$libdirs $dir" 2609 done 2610 2611 for libdir in $libdirs; do 2612 if test -n "$finish_cmds"; then 2613 # Do each command in the finish commands. 2614 eval cmds=\"$finish_cmds\" 2615 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2616 for cmd in $cmds; do 2617 IFS="$save_ifs" 2618 $show "$cmd" 2619 $run eval "$cmd" || admincmds="$admincmds 2620 $cmd" 2621 done 2622 IFS="$save_ifs" 2623 fi 2624 if test -n "$finish_eval"; then 2625 # Do the single finish_eval. 2626 eval cmds=\"$finish_eval\" 2627 $run eval "$cmds" || admincmds="$admincmds 2628 $cmds" 2629 fi 2630 done 2631 fi 2632 2633 # Exit here if they wanted silent mode. 2634 test "$show" = : && exit 0 2635 2636 echo "----------------------------------------------------------------------" 2637 echo "Libraries have been installed in:" 2638 for libdir in $libdirs; do 2639 echo " $libdir" 2640 done 2641 echo 2642 echo "To link against installed libraries in a given directory, LIBDIR," 2643 echo "you must use the \`-LLIBDIR' flag during linking." 2644 echo 2645 echo " You will also need to do at least one of the following:" 2646 if test -n "$shlibpath_var"; then 2647 echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2648 echo " during execution" 2649 fi 2650 if test -n "$runpath_var"; then 2651 echo " - add LIBDIR to the \`$runpath_var' environment variable" 2652 echo " during linking" 2653 fi 2654 if test -n "$hardcode_libdir_flag_spec"; then 2655 libdir=LIBDIR 2656 eval flag=\"$hardcode_libdir_flag_spec\" 2657 2658 echo " - use the \`$flag' linker flag" 2659 fi 2660 if test -n "$admincmds"; then 2661 echo " - have your system administrator run these commands:$admincmds" 2662 fi 2663 if test -f /etc/ld.so.conf; then 2664 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2665 fi 2666 echo 2667 echo "See any operating system documentation about shared libraries for" 2668 echo "more information, such as the ld(1) and ld.so(8) manual pages." 2669 echo "----------------------------------------------------------------------" 2670 exit 0 2671 ;; 2672 2673 # libtool execute mode 2674 execute) 2675 modename="$modename: execute" 2676 2677 # The first argument is the command name. 2678 cmd="$nonopt" 2679 if test -z "$cmd"; then 2680 $echo "$modename: you must specify a COMMAND" 1>&2 2681 $echo "$help" 2682 exit 1 2683 fi 2684 2685 # Handle -dlopen flags immediately. 2686 for file in $execute_dlfiles; do 2687 if test ! -f "$file"; then 2688 $echo "$modename: \`$file' is not a file" 1>&2 2689 $echo "$help" 1>&2 2690 exit 1 2691 fi 2692 2693 dir= 2694 case "$file" in 2695 *.la) 2696 # Check to see that this really is a libtool archive. 2697 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : 2698 else 2699 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 2700 $echo "$help" 1>&2 2701 exit 1 2702 fi 2703 2704 # Read the libtool library. 2705 dlname= 2706 library_names= 2707 2708 # If there is no directory component, then add one. 2709 case "$file" in 2710 */* | *\\*) . $file ;; 2711 *) . ./$file ;; 2712 esac 2713 2714 # Skip this library if it cannot be dlopened. 2715 if test -z "$dlname"; then 2716 # Warn if it was a shared library. 2717 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" 2718 continue 2719 fi 2720 2721 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 2722 test "X$dir" = "X$file" && dir=. 2723 2724 if test -f "$dir/$objdir/$dlname"; then 2725 dir="$dir/$objdir" 2726 else 2727 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 2728 exit 1 2729 fi 2730 ;; 2731 2732 *.lo) 2733 # Just add the directory containing the .lo file. 2734 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 2735 test "X$dir" = "X$file" && dir=. 2736 ;; 2737 2738 *) 2739 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 2740 continue 2741 ;; 2742 esac 2743 2744 # Get the absolute pathname. 2745 absdir=`cd "$dir" && pwd` 2746 test -n "$absdir" && dir="$absdir" 2747 2748 # Now add the directory to shlibpath_var. 2749 if eval "test -z \"\$$shlibpath_var\""; then 2750 eval "$shlibpath_var=\"\$dir\"" 2751 else 2752 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2753 fi 2754 done 2755 2756 # This variable tells wrapper scripts just to set shlibpath_var 2757 # rather than running their programs. 2758 libtool_execute_magic="$magic" 2759 2760 # Check if any of the arguments is a wrapper script. 2761 args= 2762 for file 2763 do 2764 case "$file" in 2765 -*) ;; 2766 *) 2767 # Do a test to see if this is really a libtool program. 2768 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2769 # If there is no directory component, then add one. 2770 case "$file" in 2771 */* | *\\*) . $file ;; 2772 *) . ./$file ;; 2773 esac 2774 2775 # Transform arg to wrapped name. 2776 file="$progdir/$program" 2777 fi 2778 ;; 2779 esac 2780 # Quote arguments (to preserve shell metacharacters). 2781 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` 2782 args="$args \"$file\"" 2783 done 2784 2785 if test -z "$run"; then 2786 # Export the shlibpath_var. 2787 eval "export $shlibpath_var" 2788 2789 # Restore saved enviroment variables 2790 if test "${save_LC_ALL+set}" = set; then 2791 LC_ALL="$save_LC_ALL"; export LC_ALL 2792 fi 2793 if test "${save_LANG+set}" = set; then 2794 LANG="$save_LANG"; export LANG 2795 fi 2796 2797 # Now actually exec the command. 2798 eval "exec \$cmd$args" 2799 2800 $echo "$modename: cannot exec \$cmd$args" 2801 exit 1 2802 else 2803 # Display what would be done. 2804 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" 2805 $echo "export $shlibpath_var" 2806 $echo "$cmd$args" 2807 exit 0 2808 fi 2809 ;; 2810 2811 # libtool uninstall mode 2812 uninstall) 2813 modename="$modename: uninstall" 2814 rm="$nonopt" 2815 files= 2816 2817 for arg 2818 do 2819 case "$arg" in 2820 -*) rm="$rm $arg" ;; 2821 *) files="$files $arg" ;; 2822 esac 2823 done 2824 2825 if test -z "$rm"; then 2826 $echo "$modename: you must specify an RM program" 1>&2 2827 $echo "$help" 1>&2 2828 exit 1 2829 fi 2830 2831 for file in $files; do 2832 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` 2833 test "X$dir" = "X$file" && dir=. 2834 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` 2835 2836 rmfiles="$file" 2837 2838 case "$name" in 2839 *.la) 2840 # Possibly a libtool archive, so verify it. 2841 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then 2842 . $dir/$name 2843 2844 # Delete the libtool libraries and symlinks. 2845 for n in $library_names; do 2846 rmfiles="$rmfiles $dir/$n" 2847 test "X$n" = "X$dlname" && dlname= 2848 done 2849 test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname" 2850 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" 2851 2852 $show "$rm $rmfiles" 2853 $run $rm $rmfiles 2854 2855 if test -n "$library_names"; then 2856 # Do each command in the postuninstall commands. 2857 eval cmds=\"$postuninstall_cmds\" 2858 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2859 for cmd in $cmds; do 2860 IFS="$save_ifs" 2861 $show "$cmd" 2862 $run eval "$cmd" 2863 done 2864 IFS="$save_ifs" 2865 fi 2866 2867 if test -n "$old_library"; then 2868 # Do each command in the old_postuninstall commands. 2869 eval cmds=\"$old_postuninstall_cmds\" 2870 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' 2871 for cmd in $cmds; do 2872 IFS="$save_ifs" 2873 $show "$cmd" 2874 $run eval "$cmd" 2875 done 2876 IFS="$save_ifs" 2877 fi 2878 2879 # FIXME: should reinstall the best remaining shared library. 2880 fi 2881 ;; 2882 2883 *.lo) 2884 if test "$build_old_libs" = yes; then 2885 oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` 2886 rmfiles="$rmfiles $dir/$oldobj" 2887 fi 2888 $show "$rm $rmfiles" 2889 $run $rm $rmfiles 2890 ;; 2891 2892 *) 2893 $show "$rm $rmfiles" 2894 $run $rm $rmfiles 2895 ;; 2896 esac 2897 done 2898 exit 0 2899 ;; 2900 2901 "") 2902 $echo "$modename: you must specify a MODE" 1>&2 2903 $echo "$generic_help" 1>&2 2904 exit 1 2905 ;; 2906 esac 2907 2908 $echo "$modename: invalid operation mode \`$mode'" 1>&2 2909 $echo "$generic_help" 1>&2 2910 exit 1 2911fi # test -z "$show_help" 2912 2913# We need to display help for each of the modes. 2914case "$mode" in 2915"") $echo \ 2916"Usage: $modename [OPTION]... [MODE-ARG]... 2917 2918Provide generalized library-building support services. 2919 2920 --config show all configuration variables 2921 --debug enable verbose shell tracing 2922-n, --dry-run display commands without modifying any files 2923 --features display basic configuration information and exit 2924 --finish same as \`--mode=finish' 2925 --help display this help message and exit 2926 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 2927 --quiet same as \`--silent' 2928 --silent don't print informational messages 2929 --version print version information 2930 2931MODE must be one of the following: 2932 2933 compile compile a source file into a libtool object 2934 execute automatically set library path, then run a program 2935 finish complete the installation of libtool libraries 2936 install install libraries or executables 2937 link create a library or an executable 2938 uninstall remove libraries from an installed directory 2939 2940MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for 2941a more detailed description of MODE." 2942 exit 0 2943 ;; 2944 2945compile) 2946 $echo \ 2947"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2948 2949Compile a source file into a libtool library object. 2950 2951This mode accepts the following additional options: 2952 2953 -static always build a \`.o' file suitable for static linking 2954 2955COMPILE-COMMAND is a command to be used in creating a \`standard' object file 2956from the given SOURCEFILE. 2957 2958The output file name is determined by removing the directory component from 2959SOURCEFILE, then substituting the C source code suffix \`.c' with the 2960library object suffix, \`.lo'." 2961 ;; 2962 2963execute) 2964 $echo \ 2965"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... 2966 2967Automatically set library path, then run a program. 2968 2969This mode accepts the following additional options: 2970 2971 -dlopen FILE add the directory containing FILE to the library path 2972 2973This mode sets the library path environment variable according to \`-dlopen' 2974flags. 2975 2976If any of the ARGS are libtool executable wrappers, then they are translated 2977into their corresponding uninstalled binary, and any of their required library 2978directories are added to the library path. 2979 2980Then, COMMAND is executed, with ARGS as arguments." 2981 ;; 2982 2983finish) 2984 $echo \ 2985"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... 2986 2987Complete the installation of libtool libraries. 2988 2989Each LIBDIR is a directory that contains libtool libraries. 2990 2991The commands that this mode executes may require superuser privileges. Use 2992the \`--dry-run' option if you just want to see what would be executed." 2993 ;; 2994 2995install) 2996 $echo \ 2997"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... 2998 2999Install executables or libraries. 3000 3001INSTALL-COMMAND is the installation command. The first component should be 3002either the \`install' or \`cp' program. 3003 3004The rest of the components are interpreted as arguments to that command (only 3005BSD-compatible install options are recognized)." 3006 ;; 3007 3008link) 3009 $echo \ 3010"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... 3011 3012Link object files or libraries together to form another library, or to 3013create an executable program. 3014 3015LINK-COMMAND is a command using the C compiler that you would use to create 3016a program from several object files. 3017 3018The following components of LINK-COMMAND are treated specially: 3019 3020 -all-static do not do any dynamic linking at all 3021 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 3022 -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols 3023 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 3024 -LLIBDIR search LIBDIR for required installed libraries 3025 -lNAME OUTPUT-FILE requires the installed library libNAME 3026 -no-undefined declare that a library does not refer to external symbols 3027 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 3028 -release RELEASE specify package release information 3029 -rpath LIBDIR the created library will eventually be installed in LIBDIR 3030 -static do not do any dynamic linking of libtool libraries 3031 -version-info CURRENT[:REVISION[:AGE]] 3032 specify library version info [each variable defaults to 0] 3033 3034All other options (arguments beginning with \`-') are ignored. 3035 3036Every other argument is treated as a filename. Files ending in \`.la' are 3037treated as uninstalled libtool libraries, other files are standard or library 3038object files. 3039 3040If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only 3041library objects (\`.lo' files) may be specified, and \`-rpath' is required. 3042 3043If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 3044using \`ar' and \`ranlib', or on Windows using \`lib'. 3045 3046If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 3047is created, otherwise an executable program is created." 3048 ;; 3049 3050uninstall) 3051 $echo 3052"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 3053 3054Remove libraries from an installation directory. 3055 3056RM is the name of the program to use to delete files associated with each FILE 3057(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 3058to RM. 3059 3060If FILE is a libtool library, all the files associated with it are deleted. 3061Otherwise, only FILE itself is deleted using RM." 3062 ;; 3063 3064*) 3065 $echo "$modename: invalid operation mode \`$mode'" 1>&2 3066 $echo "$help" 1>&2 3067 exit 1 3068 ;; 3069esac 3070 3071echo 3072$echo "Try \`$modename --help' for more information about other modes." 3073 3074exit 0 3075 3076# Local Variables: 3077# mode:shell-script 3078# sh-indentation:2 3079# End: 3080