1# ltmain.sh - Provide generalized library-building support services. 2# Generated automatically from ltmain.sh.in by configure. 3# Copyright (C) 1996, 1997 Free Software Foundation, Inc. 4# Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 5# 6# This program is free software; you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation; either version 2 of the License, or 9# (at your option) any later version. 10# 11# This program is distributed in the hope that it will be useful, but 12# WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14# General Public License for more details. 15# 16# You should have received a copy of the GNU General Public License 17# along with this program; if not, write to the Free Software 18# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19# 20# As a special exception to the GNU General Public License, if you 21# distribute this file as part of a program that contains a 22# configuration script generated by Autoconf, you may include it under 23# the same distribution terms that you use for the rest of that program. 24 25# The name of this program. 26progname=`echo "$0" | sed 's%^.*/%%'` 27 28# Constants. 29PROGRAM=ltmain.sh 30PACKAGE=libtool 31VERSION=1.0 32 33default_mode= 34help="Try \`$progname --help' for more information." 35magic="%%%MAGIC variable%%%" 36mkdir="mkdir" 37mv="mv -f" 38objdir=.libs 39rm="rm -f" 40 41if test "$LTCONFIG_VERSION" != "$VERSION"; then 42 echo "$progname: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 43 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 44 exit 1 45fi 46 47# 48if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 49 echo "$progname: not configured to build any kind of library" 1>&2 50 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 51 exit 1 52fi 53 54# Global variables. 55mode=$default_mode 56nonopt= 57prev= 58prevopt= 59run= 60show=echo 61show_help= 62 63# Parse our command line options once, thoroughly. 64while test $# -gt 0 65do 66 arg="$1" 67 shift 68 69 case "$arg" in 70 -*=*) optarg=`echo "$arg" | sed 's/[-_a-zA-Z0-9]*=//'` ;; 71 *) optarg= ;; 72 esac 73 74 # If the previous option needs an argument, assign it. 75 if test -n "$prev"; then 76 eval "$prev=\$arg" 77 prev= 78 prevopt= 79 continue 80 fi 81 82 # Have we seen a non-optional argument yet? 83 case "$arg" in 84 --help) 85 show_help=yes 86 ;; 87 88 --version) 89 echo "$PROGRAM (GNU $PACKAGE) $VERSION" 90 exit 0 91 ;; 92 93 --dry-run | -n) 94 run=: 95 ;; 96 97 --features) 98 echo "host: $host" 99 if test "$build_libtool_libs" = yes; then 100 echo "enable shared libraries" 101 else 102 echo "disable shared libraries" 103 fi 104 if test "$build_old_libs" = yes; then 105 echo "enable static libraries" 106 else 107 echo "disable static libraries" 108 fi 109 exit 0 110 ;; 111 112 --finish) mode="finish" ;; 113 114 --mode) prevopt="--mode" prev=mode ;; 115 --mode=*) mode="$optarg" ;; 116 117 -*) 118 echo "$progname: unrecognized option \`$arg'" 1>&2 119 echo "$help" 1>&2 120 exit 1 121 ;; 122 123 *) 124 nonopt="$arg" 125 break 126 ;; 127 esac 128done 129 130 131if test -n "$prevopt"; then 132 echo "$progname: option \`$prevopt' requires an argument" 1>&2 133 echo "$help" 1>&2 134 exit 1 135fi 136 137 138if test -z "$show_help"; then 139 140 # Infer the operation mode. 141 if test -z "$mode"; then 142 case "$nonopt" in 143 *cc) 144 mode=link 145 for arg 146 do 147 case "$arg" in 148 -c) 149 mode=compile 150 break 151 ;; 152 esac 153 done 154 ;; 155 *install*|cp) 156 mode=install 157 ;; 158 *rm) 159 mode=uninstall 160 ;; 161 *.la) 162 mode=dlname 163 ;; 164 *) 165 # Just use the default operation mode. 166 if test -z "$mode"; then 167 if test -n "$nonopt"; then 168 echo "$progname: warning: cannot infer operation mode from \`$nonopt'" 1>&2 169 else 170 echo "$progname: warning: cannot infer operation mode without MODE-ARGS" 1>&2 171 fi 172 fi 173 ;; 174 esac 175 fi 176 177 # Change the help message to a mode-specific one. 178 generic_help="$help" 179 help="Try \`$progname --help --mode=$mode' for more information." 180 181 # These modes are in order of execution frequency so that they run quickly. 182 case "$mode" in 183 # libtool compile mode 184 compile) 185 progname="$progname: compile" 186 # Get the compilation command and the source file. 187 base_compile="$nonopt" 188 lastarg= 189 srcfile= 190 191 for arg 192 do 193 # Quote any args containing shell metacharacters. 194 case "$arg" in 195 *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*|*\"*) 196 quote_arg="'$arg'" ;; 197 *) quote_arg="$arg" ;; 198 esac 199 200 base_compile="$base_compile$lastarg" 201 srcfile="$quote_arg" 202 lastarg=" $srcfile" 203 done 204 205 # Get the name of the library object. 206 libobj=`echo "$srcfile" | sed -e 's%^.*/%%'` 207 208 # Recognize several different file suffixes. 209 xform='[cCFSf]' 210 case "$libobj" in 211 *.c++) xform='c++' ;; 212 *.cc) xform=cc ;; 213 *.cpp) xform=cpp ;; 214 *.cxx) xform=cxx ;; 215 *.f90) xform=f90 ;; 216 *.for) xform='for' ;; 217 esac 218 219 libobj=`echo "$libobj" | sed -e "s/\.$xform$/.lo/"` 220 221 case "$libobj" in 222 *.lo) obj=`echo "$libobj" | sed -e 's/\.lo$/.o/'` ;; 223 *) 224 echo "$progname: cannot determine name of library object from \`$srcfile'" 1>&2 225 exit 1 226 ;; 227 esac 228 229 if test -z "$base_compile"; then 230 echo "$progname: you must specify a compilation command" 1>&2 231 echo "$help" 1>&2 232 exit 1 233 fi 234 235 # Delete any leftover library objects. 236 if test "$build_old_libs" = yes; then 237 $run $rm $obj $libobj 238 trap "$run $rm $obj $libobj; exit 1" 1 2 15 239 else 240 $run $rm $libobj 241 trap "$run $rm $libobj; exit 1" 1 2 15 242 fi 243 244 # Only build a PIC object if we are building libtool libraries. 245 if test "$build_libtool_libs" = yes; then 246 # All platforms use -DPIC, to notify preprocessed assembler code. 247 $show "$base_compile$pic_flag -DPIC $srcfile" 248 if $run eval "$base_compile$pic_flag -DPIC $srcfile"; then : 249 else 250 test -n "$obj" && $run $rm $obj 251 exit 1 252 fi 253 254 # If we have no pic_flag, then copy the object into place and finish. 255 if test -z "$pic_flag"; then 256 $show "$LN_S $obj $libobj" 257 $run $LN_S $obj $libobj 258 exit $? 259 fi 260 261 # Just move the object, then go on to compile the next one 262 $show "$mv $obj $libobj" 263 $run $mv $obj $libobj || exit 1 264 fi 265 266 # Only build a position-dependent object if we build old libraries. 267 if test "$build_old_libs" = yes; then 268 $show "$base_compile $srcfile" 269 if $run eval "$base_compile $srcfile"; then : 270 else 271 $run $rm $obj $libobj 272 exit 1 273 fi 274 fi 275 276 # Create an invalid libtool object if no PIC, so that we don't accidentally 277 # link it into a program. 278 if test "$build_libtool_libs" != yes; then 279 $show "echo timestamp > $libobj" 280 $run eval "echo timestamp > $libobj" || exit $? 281 fi 282 283 exit 0 284 ;; 285 286 # libtool link mode 287 link) 288 progname="$progname: link" 289 # Go through the arguments, transforming them on the way. 290 cc="$nonopt" 291 args="$cc" 292 allow_undefined=no 293 compile_command="$cc" 294 finalize_command="$cc" 295 compile_shlibpath= 296 finalize_shlibpath= 297 deplibs= 298 export_dynamic=no 299 hardcode_libdirs= 300 install_libdir= 301 libobjs= 302 link_against_libtool_libs= 303 link_static= 304 ltlibs= 305 objs= 306 prev= 307 prevarg= 308 perm_rpath= 309 temp_rpath= 310 vinfo= 311 312 # We need to know -static, to get the right output filenames. 313 for arg 314 do 315 case "$arg" in 316 -static) 317 build_libtool_libs=no 318 build_old_libs=yes 319 break 320 ;; 321 esac 322 done 323 324 for arg 325 do 326 # If the previous option needs an argument, assign it. 327 if test -n "$prev"; then 328 case "$prev" in 329 output) 330 compile_command="$compile_command @OUTPUT@" 331 finalize_command="$finalize_command @OUTPUT@" 332 args="$args $arg" 333 ;; 334 esac 335 336 eval "$prev=\$arg" 337 prev= 338 339 continue 340 fi 341 342 args="$args $arg" 343 prevarg="$arg" 344 345 case "$arg" in 346 -allow-undefined) allow_undefined=yes ;; 347 348 -export-dynamic) 349 export_dynamic=yes 350 compile_command="$compile_command $export_dynamic_flag" 351 finalize_command="$finalize_command $export_dynamic_flag" 352 continue 353 ;; 354 355 -L*) 356 dir=`echo "$arg" | sed 's%^-L\(.*\)$%\1%'` 357 case "$dir" in 358 /*) 359 ;; 360 *) 361 echo "$progname: \`-L$dir' cannot specify a relative directory" 1>&2 362 exit 1 363 ;; 364 esac 365 deplibs="$deplibs $arg" 366 ;; 367 368 -l*) deplibs="$deplibs $arg" ;; 369 370 -o) prev=output ;; 371 372 -rpath) 373 prev=install_libdir 374 continue 375 ;; 376 377 -static) 378 link_static="`eval echo \"$link_static_flag\"`" 379 compile_command="$compile_command $link_static" 380 continue 381 ;; 382 383 -version-file) 384 echo "$progname: \`-version-file' has been replaced by \`-version-info'" 1>&2 385 echo "$help" 1>&2 386 exit 1 387 ;; 388 389 -version-info) 390 prev=vinfo 391 continue 392 ;; 393 394 -*) cc="$cc $arg" ;; # Some other compiler flag. 395 396 *.o) 397 # A standard object. 398 objs="$objs $arg" 399 ;; 400 401 *.a) 402 # Find the relevant object directory and library name. 403 file=`echo "$arg" | sed 's%^.*/%%'` 404 dir=`echo "$arg" | sed 's%/[^/]*$%/%'` 405 test "$dir" = "$arg" && dir= 406 407 # Standard archive. 408 objs="$objs $arg" 409 ;; 410 411 *.lo) 412 # A library object. 413 libobjs="$libobjs $arg" 414 ;; 415 416 *.la) 417 # A libtool-controlled library. 418 419 libdir= 420 library_names= 421 old_library= 422 423 # Check to see that this really is a libtool archive. 424 if egrep "^# Generated by $PROGRAM" $arg >/dev/null 2>&1; then : 425 else 426 echo "$progname: \`$arg' is not a valid libtool archive" 1>&2 427 exit 1 428 fi 429 430 # If there is no directory component, then add one. 431 case "$arg" in 432 */*) . $arg ;; 433 *) . ./$arg ;; 434 esac 435 436 if test -z "$libdir"; then 437 echo "$progname: \`$arg' contains no -rpath information" 1>&2 438 exit 1 439 fi 440 441 # Get the name of the library we link against. 442 linklib= 443 for l in $old_library $library_names; do 444 linklib="$l" 445 done 446 447 if test -z "$linklib"; then 448 echo "$progname: cannot find name of link library for \`$arg'" 1>&2 449 exit 1 450 fi 451 452 # Find the relevant object directory and library name. 453 name=`echo "$arg" | sed 's%^.*/%%; s/\.la$//; s/^lib//'` 454 dir=`echo "$arg" | sed 's%/[^/]*$%%'` 455 if test "$dir" = "$arg"; then 456 dir="$objdir" 457 else 458 dir="$dir/$objdir" 459 fi 460 461 if test "$build_libtool_libs" = yes && test -n "$library_names"; then 462 link_against_libtool_libs="$link_against_libtool_libs $arg" 463 if test -n "$shlibpath_var"; then 464 # Make sure the rpath contains only unique directories. 465 case "$temp_rpath " in 466 "* $dir *") ;; 467 *) temp_rpath="$temp_rpath $dir" ;; 468 esac 469 fi 470 471 if test -n "$hardcode_libdir_flag_spec"; then 472 if test -n "$hardcode_libdir_separator"; then 473 if test -z "$hardcode_libdirs"; then 474 # Put the magic libdir with the hardcode flag. 475 hardcode_libdirs="$libdir" 476 libdir="@HARDCODE_LIBDIRS@" 477 else 478 # Just accumulate the libdirs. 479 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 480 libdir= 481 fi 482 fi 483 484 if test -n "$libdir"; then 485 hardcode_libdir_flag=`eval echo \"$hardcode_libdir_flag_spec\"` 486 compile_command="$compile_command $hardcode_libdir_flag" 487 finalize_command="$finalize_command $hardcode_libdir_flag" 488 fi 489 elif test "$hardcode_runpath_var" = yes; then 490 # Do the same for the permanent run path. 491 case "$perm_rpath " in 492 "* $libdir *") ;; 493 *) perm_rpath="$perm_rpath $libdir" ;; 494 esac 495 fi 496 497 498 case "$hardcode_action" in 499 immediate) 500 if test "$hardcode_direct" = no; then 501 compile_command="$compile_command $dir/$linklib" 502 elif test "$hardcode_minus_L" = no; then 503 compile_command="$compile_command -L$dir -l$name" 504 elif test "$hardcode_shlibpath_var" = no; then 505 compile_shlibpath="$compile_shlibpath$dir:" 506 compile_command="$compile_command -l$name" 507 fi 508 ;; 509 510 relink) 511 # We need an absolute path. 512 case "$dir" in 513 /*) ;; 514 *) 515 absdir=`cd "$dir" && pwd` 516 if test -z "$absdir"; then 517 echo "$progname: cannot determine absolute directory name of \`$dir'" 1>&2 518 exit 1 519 fi 520 dir="$absdir" 521 ;; 522 esac 523 524 if test "$hardcode_direct" = yes; then 525 compile_command="$compile_command $dir/$linklib" 526 elif test "$hardcode_minus_L" = yes; then 527 compile_command="$compile_command -L$dir -l$name" 528 elif test "$hardcode_shlibpath_var" = yes; then 529 compile_shlibpath="$compile_shlibpath$dir:" 530 compile_command="$compile_command -l$name" 531 fi 532 ;; 533 534 *) 535 echo "$progname: \`$hardcode_action' is an unknown hardcode action" 1>&2 536 exit 1 537 ;; 538 esac 539 540 # Finalize command for both is simple: just hardcode it. 541 if test "$hardcode_direct" = yes; then 542 finalize_command="$finalize_command $libdir/$linklib" 543 elif test "$hardcode_minus_L" = yes; then 544 finalize_command="$finalize_command -L$libdir -l$name" 545 elif test "$hardcode_shlibpath_var" = yes; then 546 finalize_shlibpath="$finalize_shlibpath$libdir:" 547 finalize_command="$finalize_command -l$name" 548 else 549 # We can't seem to hardcode it, guess we'll fake it. 550 finalize_command="$finalize_command -L$libdir -l$name" 551 fi 552 else 553 # Transform directly to old archives if we don't build new libraries. 554 if test -n "$pic_flag" && test -z "$old_library"; then 555 echo "$progname: cannot find static library for \`$arg'" 1>&2 556 exit 1 557 fi 558 test -n "$old_library" && linklib="$old_library" 559 compile_command="$compile_command $dir/$linklib" 560 finalize_command="$finalize_command $dir/$linklib" 561 fi 562 continue 563 ;; 564 565 *) 566 echo "$progname: unknown file suffix for \`$arg'" 1>&2 567 echo "$help" 1>&2 568 exit 1 569 ;; 570 esac 571 572 compile_command="$compile_command $arg" 573 finalize_command="$finalize_command $arg" 574 done 575 576 if test -n "$prev"; then 577 echo "$progname: the \`$prevarg' option requires an argument" 1>&2 578 echo "$help" 1>&2 579 exit 1 580 fi 581 582 # Substitute the hardcoded libdirs into the compile commands. 583 if test "$hardcode_libdir_colon_separated" = yes; then 584 compile_command=`echo "$compile_command" | sed "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` 585 finalize_command=`echo "$finalize_command" | sed "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` 586 fi 587 588 oldlib= 589 oldobjs= 590 case "$output" in 591 "") 592 echo "$progname: you must specify an output file" 1>&2 593 echo "$help" 1>&2 594 exit 1 595 ;; 596 597 */*) 598 echo "$progname: output file \`$output' must have no directory components" 1>&2 599 exit 1 600 ;; 601 602 *.la) 603 libname=`echo "$output" | sed 's/\.la$//'` 604 605 # All the library-specific variables (install_libdir is set above). 606 library_names= 607 old_library= 608 dlname= 609 current=0 610 revision=0 611 age=0 612 613 if test -n "$objs"; then 614 echo "$progname: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 615 exit 1 616 fi 617 618 # How the heck are we supposed to write a wrapper for a shared library? 619 if test -n "$link_against_libtool_libs"; then 620 echo "$progname: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2 621 exit 1 622 fi 623 624 if test -z "$install_libdir"; then 625 echo "$progname: you must specify an installation directory with \`-rpath'" 1>&2 626 exit 1 627 fi 628 629 # Parse the version information argument. 630 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' 631 set dummy $vinfo 632 IFS="$save_ifs" 633 634 if test -n "$5"; then 635 echo "$progname: too many parameters to \`-version-info'" 1>&2 636 echo "$help" 1>&2 637 exit 1 638 fi 639 640 test -n "$2" && current="$2" 641 test -n "$3" && revision="$3" 642 test -n "$4" && age="$4" 643 644 # Check that each of the things are valid numbers. 645 case "$current" in 646 0 | [1-9] | [1-9][0-9]*) ;; 647 *) 648 echo "$progname: CURRENT \`$current' is not a nonnegative integer" 1>&2 649 echo "$progname: \`$vinfo' is not valid version information" 1>&2 650 exit 1 651 ;; 652 esac 653 654 case "$revision" in 655 0 | [1-9] | [1-9][0-9]*) ;; 656 *) 657 echo "$progname: REVISION \`$revision' is not a nonnegative integer" 1>&2 658 echo "$progname: \`$vinfo' is not valid version information" 1>&2 659 exit 1 660 ;; 661 esac 662 663 case "$age" in 664 0 | [1-9] | [1-9][0-9]*) ;; 665 *) 666 echo "$progname: AGE \`$age' is not a nonnegative integer" 1>&2 667 echo "$progname: \`$vinfo' is not valid version information" 1>&2 668 exit 1 669 ;; 670 esac 671 672 if test $age -gt $current; then 673 echo "$progname: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 674 echo "$progname: \`$vinfo' is not valid version information" 1>&2 675 exit 1 676 fi 677 678 # Calculate the version variables. 679 version_vars="version_type current age revision" 680 case "$version_type" in 681 none) ;; 682 683 linux) 684 version_vars="$version_vars major versuffix" 685 major=`expr $current - $age` 686 versuffix="$major.$age.$revision" 687 ;; 688 689 osf) 690 version_vars="$version_vars versuffix verstring" 691 major=`expr $current - $age` 692 versuffix="$current.$age.$revision" 693 verstring="$versuffix" 694 695 # Add in all the interfaces that we are compatible with. 696 loop=$age 697 while test $loop != 0; do 698 iface=`expr $current - $loop` 699 loop=`expr $loop - 1` 700 verstring="$verstring:${iface}.0" 701 done 702 703 # Make executables depend on our current version. 704 verstring="$verstring:${current}.0" 705 ;; 706 707 sunos) 708 version_vars="$version_vars major versuffix" 709 major="$current" 710 versuffix="$current.$revision" 711 ;; 712 713 *) 714 echo "$progname: unknown library version type \`$version_type'" 1>&2 715 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 716 exit 1 717 ;; 718 esac 719 720 # Create the output directory, or remove our outputs if we need to. 721 if test -d $objdir; then 722 $show "$rm $objdir/$libname.*" 723 $run $rm $objdir/$libname.* 724 else 725 $show "$mkdir $objdir" 726 $run $mkdir $objdir || exit $? 727 fi 728 729 # Check to see if the archive will have undefined symbols. 730 if test "$allow_undefined" = yes; then 731 if test "$allow_undefined_flag" = unsupported; then 732 echo "$progname: warning: undefined symbols not allowed in $host shared libraries" 1>&2 733 build_libtool_libs=no 734 fi 735 else 736 # Clear the flag. 737 allow_undefined_flag= 738 fi 739 740 if test "$build_libtool_libs" = yes; then 741 # Get the real and link names of the library. 742 library_names=`eval echo \"$library_names_spec\"` 743 set dummy $library_names 744 realname="$2" 745 shift; shift 746 747 if test -n "$soname_spec"; then 748 soname=`eval echo \"$soname_spec\"` 749 else 750 soname="$realname" 751 fi 752 753 lib="$objdir/$realname" 754 linknames= 755 for link 756 do 757 linknames="$linknames $link" 758 done 759 760 # Use standard objects if they are PIC. 761 test -z "$pic_flag" && libobjs=`echo "$libobjs " | sed 's/\.lo /.o /g; s/ $//g'` 762 763 # Do each of the archive commands. 764 cmds=`eval echo \"$archive_cmds\"` 765 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 766 for cmd in $cmds; do 767 IFS="$save_ifs" 768 $show "$cmd" 769 $run eval "$cmd" || exit $? 770 done 771 IFS="$save_ifs" 772 773 # Create links to the real library. 774 for link in $linknames; do 775 $show "(cd $objdir && $LN_S $realname $link)" 776 $run eval "(cd $objdir && $LN_S $realname $link)" || exit $? 777 done 778 779 # If -export-dynamic was specified, set the dlname. 780 if test "$export_dynamic" = yes; then 781 # On all known operating systems, these are identical. 782 dlname="$soname" 783 fi 784 fi 785 ;; 786 787 *.lo | *.o) 788 if test -n "$link_against_libtool_libs"; then 789 echo "$progname: error: cannot link libtool libraries into reloadable objects" 1>&2 790 exit 1 791 fi 792 793 if test -n "$deplibs"; then 794 echo "$progname: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2 795 fi 796 797 if test -n "$install_libdir"; then 798 echo "$progname: warning: \`-rpath' is ignored while creating objects" 1>&2 799 fi 800 801 if test -n "$vinfo"; then 802 echo "$progname: warning: \`-version-info' is ignored while creating objects" 1>&2 803 fi 804 805 case "$output" in 806 *.lo) 807 if test -n "$objs"; then 808 echo "$progname: cannot build library object \`$output' from non-libtool objects" 1>&2 809 exit 1 810 fi 811 libobj="$output" 812 obj=`echo "$output" | sed 's/\.lo$/.o/'` 813 ;; 814 *) 815 libobj= 816 obj="$output" 817 ;; 818 esac 819 820 # Delete the old objects. 821 $run $rm $obj $libobj 822 823 # Create the old-style object. 824 reload_objs="$objs"`echo "$libobjs " | sed 's/[^ ]*\.a //g; s/\.lo /.o /g; s/ $//g'` 825 826 output="$obj" 827 cmds=`eval echo \"$reload_cmds\"` 828 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 829 for cmd in $cmds; do 830 IFS="$save_ifs" 831 $show "$cmd" 832 $run eval "$cmd" || exit $? 833 done 834 IFS="$save_ifs" 835 836 # Exit if we aren't doing a library object file. 837 test -z "$libobj" && exit 0 838 839 if test "$build_libtool_libs" != yes; then 840 # Create an invalid libtool object if no PIC, so that we don't 841 # accidentally link it into a program. 842 $show "echo timestamp > $libobj" 843 $run eval "echo timestamp > $libobj" || exit $? 844 exit 0 845 fi 846 847 if test -n "$pic_flag"; then 848 # Only do commands if we really have different PIC objects. 849 reload_objs="$libobjs" 850 output="$libobj" 851 cmds=`eval echo \"$reload_cmds\"` 852 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 853 for cmd in $cmds; do 854 IFS="$save_ifs" 855 $show "$cmd" 856 $run eval "$cmd" || exit $? 857 done 858 IFS="$save_ifs" 859 else 860 # Just create a symlink. 861 $show "$LN_S $obj $libobj" 862 $run $LN_S $obj $libobj || exit 1 863 fi 864 865 exit 0 866 ;; 867 868 *) 869 if test -n "$install_libdir"; then 870 echo "$progname: warning: \`-rpath' is ignored while linking programs" 1>&2 871 fi 872 873 if test -n "$vinfo"; then 874 echo "$progname: warning: \`-version-info' is ignored while linking programs" 1>&2 875 fi 876 877 if test -n "$libobjs"; then 878 # Transform all the library objects into standard objects. 879 compile_command=`echo "$compile_command " | sed 's/\.lo /.o /g; s/ $//'` 880 finalize_command=`echo "$finalize_command " | sed 's/\.lo /.o /g; s/ $//'` 881 fi 882 883 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then 884 # Replace the output file specification. 885 compile_command=`echo "$compile_command" | sed 's%@OUTPUT@%'"$output"'%g'` 886 finalize_command=`echo "$finalize_command" | sed 's%@OUTPUT@%'"$output"'%g'` 887 888 # We have no uninstalled library dependencies, so finalize right now. 889 $show "$compile_command" 890 $run $compile_command 891 status=$? 892 893 # If we failed to link statically, then try again. 894 if test $status -ne 0 && test -n "$link_static"; then 895 echo "$progname: cannot link \`$output' statically; retrying semi-dynamically" 1>&2 896 compile_command=`echo "$compile_command " | sed "s% $link_static % %;s/ $//"` 897 $show "$finalize_command" 898 $run $finalize_command 899 status=$? 900 fi 901 exit $status 902 fi 903 904 # Replace the output file specification. 905 compile_command=`echo "$compile_command" | sed 's%@OUTPUT@%'"$objdir/$output"'%g'` 906 finalize_command=`echo "$finalize_command" | sed 's%@OUTPUT@%'"$objdir/$output"'T%g'` 907 908 # Create the binary in the object directory, then wrap it. 909 if test -d $objdir; then : 910 else 911 $show "$mkdir $objdir" 912 $run $mkdir $objdir || exit $? 913 fi 914 915 if test -n "$shlibpath_var"; then 916 # We should set the shlibpath_var 917 rpath= 918 for dir in $temp_rpath; do 919 case "$dir" in 920 /*) 921 # Absolute path. 922 rpath="$rpath$dir:" 923 ;; 924 *) 925 # Relative path: add a thisdir entry. 926 rpath="$rpath\$thisdir/$dir:" 927 ;; 928 esac 929 done 930 temp_rpath="$rpath" 931 fi 932 933 # Delete the old output file. 934 $run $rm $output 935 936 if test -n "$compile_shlibpath"; then 937 compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command" 938 fi 939 if test -n "$finalize_shlibpath"; then 940 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 941 fi 942 943 if test -n "$perm_rpath"; then 944 # We should set the runpath_var. 945 rpath= 946 for dir in $perm_rpath; do 947 rpath="$rpath$dir:" 948 done 949 compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command" 950 finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command" 951 fi 952 953 case "$hardcode_action" in 954 relink) 955 # AGH! Flame the AIX and HP-UX people for me, will ya? 956 echo "$progname: warning: using a buggy system linker" 1>&2 957 echo "$progname: relinking will be required before \`$output' can be installed" 1>&2 958 ;; 959 esac 960 961 $show "$compile_command" 962 $run eval "$compile_command" || exit $? 963 964 # Now create the wrapper script. 965 echo "creating $output" 966 967 # Only actually do things if our run command is non-null. 968 if test -z "$run"; then 969 $rm $output 970 trap "$rm $output; exit 1" 1 2 15 971 972 cat > $output <<EOF 973#! /bin/sh 974 975# $output - temporary wrapper script for $objdir/$output 976# Generated by $PROGRAM - GNU $PACKAGE $VERSION 977# 978# The $output program cannot be directly executed until all the libtool 979# libraries that it depends on are installed. 980# 981# This wrapper script should never be moved out of \``pwd`'. 982# If it is, it will not operate correctly. 983 984# This environment variable determines our operation mode. 985if test "\$libtool_install_magic" = "$magic"; then 986 # install mode needs the following variables: 987 link_against_libtool_libs='$link_against_libtool_libs' 988 finalize_command='$finalize_command' 989else 990 # Find the directory that this script lives in. 991 thisdir=\`echo \$0 | sed 's%/[^/]*$%%'\` 992 test "x\$thisdir" = "x\$0" && thisdir=. 993 994 # Try to get the absolute directory name. 995 absdir=\`cd "\$thisdir" && pwd\` 996 test -n "\$absdir" && thisdir="\$absdir" 997 998 progdir="\$thisdir/$objdir" 999 program="$output" 1000 1001 if test -f "\$progdir/\$program"; then 1002 # Run the actual program with our arguments. 1003 args= 1004 for arg 1005 do 1006 # Quote arguments (to preserve shell metacharacters). 1007 args="\$args '\$arg'" 1008 done 1009 1010 # Export the path to the program. 1011 PATH="\$progdir:\$PATH" 1012 export PATH 1013EOF 1014 1015 # Export our shlibpath_var if we have one. 1016 if test -n "$shlibpath_var" && test -n "$temp_rpath"; then 1017 cat >> $output <<EOF 1018 1019 # Add our own library path to $shlibpath_var 1020 $shlibpath_var="$temp_rpath\$$shlibpath_var" 1021 1022 # Some systems cannot cope with colon-terminated $shlibpath_var 1023 $shlibpath_var=\`echo \$$shlibpath_var | sed -e 's/:*\$//'\` 1024 1025 export $shlibpath_var 1026EOF 1027 fi 1028 1029 cat >> $output <<EOF 1030 1031 eval "exec \$program \$args" 1032 1033 echo "\$0: cannot exec \$program \$args" 1034 exit 1 1035 else 1036 # The program doesn't exist. 1037 echo "\$0: error: \$progdir/\$program does not exist" 1>&2 1038 echo "This script is just a wrapper for \$program." 1>&2 1039 echo "See the $PACKAGE documentation for more information." 1>&2 1040 exit 1 1041 fi 1042fi 1043EOF 1044 chmod +x $output 1045 fi 1046 exit 0 1047 ;; 1048 esac 1049 1050 1051 # See if we need to build an old-fashioned archive. 1052 if test "$build_old_libs" = "yes"; then 1053 # Now set the variables for building old libraries. 1054 oldlib="$objdir/$libname.a" 1055 1056 # Transform .lo files to .o files. 1057 oldobjs="$objs"`echo "$libobjs " | sed 's/[^ ]*\.a //g; s/\.lo /.o /g; s/ $//g'` 1058 1059 if test -d "$objdir"; then 1060 $show "$rm $oldlib" 1061 $run $rm $oldlib 1062 else 1063 $show "$mkdir $objdir" 1064 $run $mkdir $objdir 1065 fi 1066 1067 # Do each command in the archive commands. 1068 cmds=`eval echo \"$old_archive_cmds\"` 1069 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 1070 for cmd in $cmds; do 1071 IFS="$save_ifs" 1072 $show "$cmd" 1073 $run eval "$cmd" || exit $? 1074 done 1075 IFS="$save_ifs" 1076 fi 1077 1078 # Now create the libtool archive. 1079 case "$output" in 1080 *.la) 1081 old_library= 1082 test "$build_old_libs" = yes && old_library="$libname.a" 1083 1084 echo "creating $output" 1085 1086 # Only create the output if not a dry run. 1087 if test -z "$run"; then 1088 cat > $output <<EOF 1089# $output - a libtool library file 1090# Generated by $PROGRAM - GNU $PACKAGE $VERSION 1091 1092# The name that we can dlopen(3). 1093dlname='$dlname' 1094 1095# Names of this library. 1096library_names='$library_names' 1097 1098# The name of the static archive. 1099old_library='$old_library' 1100 1101# Version information for $libname. 1102current=$current 1103age=$age 1104revision=$revision 1105 1106# Directory that this library needs to be installed in: 1107libdir='$install_libdir' 1108EOF 1109 fi 1110 1111 # Do a symbolic link so that the libtool archive can be found in 1112 # LD_LIBRARY_PATH before the program is installed. 1113 $show "(cd $objdir && $LN_S ../$output $output)" 1114 $run eval "(cd $objdir && $LN_S ../$output $output)" || exit 1 1115 ;; 1116 esac 1117 exit 0 1118 ;; 1119 1120 # libtool install mode 1121 install) 1122 progname="$progname: install" 1123 1124 # The first argument is the name of the installation program. 1125 install_prog="$nonopt" 1126 1127 # We need to accept at least all the BSD install flags. 1128 dest= 1129 files= 1130 opts= 1131 prev= 1132 install_type= 1133 isdir= 1134 stripme= 1135 for arg 1136 do 1137 if test -n "$dest"; then 1138 files="$files $dest" 1139 dest="$arg" 1140 continue 1141 fi 1142 1143 case "$arg" in 1144 -d) isdir=yes ;; 1145 -f) prev="-f" ;; 1146 -g) prev="-g" ;; 1147 -m) prev="-m" ;; 1148 -o) prev="-o" ;; 1149 -s) 1150 stripme=" -s" 1151 continue 1152 ;; 1153 -*) ;; 1154 1155 *) 1156 # If the previous option needed an argument, then skip it. 1157 if test -n "$prev"; then 1158 prev= 1159 else 1160 dest="$arg" 1161 continue 1162 fi 1163 ;; 1164 esac 1165 install_prog="$install_prog $arg" 1166 done 1167 1168 if test -z "$install_prog"; then 1169 echo "$progname: you must specify an install program" 1>&2 1170 echo "$help" 1>&2 1171 exit 1 1172 fi 1173 1174 if test -n "$prev"; then 1175 echo "$progname: the \`$prev' option requires an argument" 1>&2 1176 echo "$help" 1>&2 1177 exit 1 1178 fi 1179 1180 if test -z "$files"; then 1181 if test -z "$dest"; then 1182 echo "$progname: no file or destination specified" 1>&2 1183 else 1184 echo "$progname: you must specify a destination" 1>&2 1185 fi 1186 echo "$help" 1>&2 1187 exit 1 1188 fi 1189 1190 # Strip any trailing slash from the destination. 1191 dest=`echo "$dest" | sed 's%/$%%'` 1192 1193 # Check to see that the destination is a directory. 1194 test -d "$dest" && isdir=yes 1195 if test -n "$isdir"; then 1196 destdir="$dest" 1197 destname= 1198 else 1199 destdir=`echo "$dest" | sed 's%/[^/]*$%%'` 1200 test "$destdir" = "$dest" && destdir=. 1201 destname=`echo "$dest" | sed 's%^.*/%%'` 1202 1203 # Not a directory, so check to see that there is only one file specified. 1204 set dummy $files 1205 if test $# -gt 2; then 1206 echo "$progname: \`$dest' is not a directory" 1>&2 1207 echo "$help" 1>&2 1208 exit 1 1209 fi 1210 fi 1211 case "$destdir" in 1212 /*) ;; 1213 *) 1214 for file in $files; do 1215 case "$file" in 1216 *.lo) ;; 1217 *) 1218 echo "$progname: \`$destdir' must be an absolute directory name" 1>&2 1219 echo "$help" 1>&2 1220 exit 1 1221 ;; 1222 esac 1223 done 1224 ;; 1225 esac 1226 1227 staticlibs= 1228 future_libdirs= 1229 current_libdirs= 1230 for file in $files; do 1231 1232 # Do each installation. 1233 case "$file" in 1234 *.a) 1235 # Do the static libraries later. 1236 staticlibs="$staticlibs $file" 1237 ;; 1238 1239 *.la) 1240 # Check to see that this really is a libtool archive. 1241 if egrep "^# Generated by $PROGRAM" $file >/dev/null 2>&1; then : 1242 else 1243 echo "$progname: \`$file' is not a valid libtool archive" 1>&2 1244 echo "$help" 1>&2 1245 exit 1 1246 fi 1247 1248 library_names= 1249 old_library= 1250 # If there is no directory component, then add one. 1251 case "$file" in 1252 */*) . $file ;; 1253 *) . ./$file ;; 1254 esac 1255 1256 # Add the libdir to current_libdirs if it is the destination. 1257 if test "$destdir" = "$libdir"; then 1258 case "$current_libdirs " in 1259 "* $libdir *") ;; 1260 *) current_libdirs="$current_libdirs $libdir" ;; 1261 esac 1262 else 1263 # Note the libdir as a future libdir. 1264 case "$future_libdirs " in 1265 "* $libdir *") ;; 1266 *) future_libdirs="$future_libdirs $libdir" ;; 1267 esac 1268 fi 1269 1270 dir="`echo "$file" | sed 's%/[^/]*$%%'`/" 1271 test "$dir" = "$file/" && dir= 1272 dir="$dir$objdir" 1273 1274 # See the names of the shared library. 1275 set dummy $library_names 1276 if test -n "$2"; then 1277 realname="$2" 1278 shift 1279 shift 1280 1281 # Install the shared library and build the symlinks. 1282 $show "$install_prog $dir/$realname $destdir/$realname" 1283 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? 1284 test "X$dlname" = "X$realname" && dlname= 1285 1286 # Support stripping libraries. 1287 if test -n "$stripme"; then 1288 if test -n "$striplib"; then 1289 $show "$striplib $destdir/$realname" 1290 $run $striplib $destdir/$realname || exit $? 1291 else 1292 echo "$progname: warning: no library stripping program" 1>&2 1293 fi 1294 fi 1295 1296 if test $# -gt 0; then 1297 # Delete the old symlinks. 1298 rmcmd="$rm" 1299 for linkname 1300 do 1301 rmcmd="$rmcmd $destdir/$linkname" 1302 done 1303 $show "$rmcmd" 1304 $run $rmcmd 1305 1306 # ... and create new ones. 1307 for linkname 1308 do 1309 test "X$dlname" = "X$linkname" && dlname= 1310 $show "(cd $destdir && $LN_S $realname $linkname)" 1311 $run eval "(cd $destdir && $LN_S $realname $linkname)" 1312 done 1313 fi 1314 1315 if test -n "$dlname"; then 1316 # Install the dynamically-loadable library. 1317 $show "$install_prog $dir/$dlname $destdir/$dlname" 1318 $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $? 1319 fi 1320 1321 # Do each command in the postinstall commands. 1322 lib="$destdir/$realname" 1323 cmds=`eval echo \"$postinstall_cmds\"` 1324 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 1325 for cmd in $cmds; do 1326 IFS="$save_ifs" 1327 $show "$cmd" 1328 $run eval "$cmd" || exit $? 1329 done 1330 IFS="$save_ifs" 1331 fi 1332 1333 # Install the pseudo-library for information purposes. 1334 name=`echo "$file" | sed 's%^.*/%%'` 1335 $show "$install_prog $file $destdir/$name" 1336 $run $install_prog $file $destdir/$name || exit $? 1337 1338 # Maybe install the static library, too. 1339 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 1340 ;; 1341 1342 *.lo) 1343 # Install (i.e. copy) a libtool object. 1344 1345 # Figure out destination file name, if it wasn't already specified. 1346 if test -n "$destname"; then 1347 destfile="$destdir/$destname" 1348 else 1349 destfile=`echo "$file" | sed 's%^.*/%%;'` 1350 destfile="$destdir/$destfile" 1351 fi 1352 1353 # Deduce the name of the destination old-style object file. 1354 case "$destfile" in 1355 *.lo) 1356 staticdest=`echo "$destfile" | sed 's/\.lo$/\.o/;'` 1357 ;; 1358 *.o) 1359 staticdest="$destfile" 1360 destfile= 1361 ;; 1362 *) 1363 echo "$progname: cannot copy a libtool object to \`$destfile'" 1>&2 1364 echo "$help" 1>&2 1365 exit 1 1366 ;; 1367 esac 1368 1369 # Install the libtool object if requested. 1370 if test -n "$destfile"; then 1371 $show "$install_prog $file $destfile" 1372 $run $install_prog $file $destfile || exit $? 1373 fi 1374 1375 # Install the old object if enabled. 1376 if test "$build_old_libs" = yes; then 1377 # Deduce the name of the old-style object file. 1378 staticobj=`echo "$file" | sed 's/\.lo$/\.o/;'` 1379 1380 $show "$install_prog $staticobj $staticdest" 1381 $run $install_prog $staticobj $staticdest || exit $? 1382 fi 1383 exit 0 1384 ;; 1385 1386 *) 1387 # Do a test to see if this is really a libtool program. 1388 if egrep "^# Generated by $PROGRAM" $file >/dev/null 2>&1; then 1389 # This variable tells wrapper scripts just to set variables rather 1390 # than running their programs. 1391 libtool_install_magic="$magic" 1392 link_against_libtool_libs= 1393 finalize_command= 1394 1395 # If there is no directory component, then add one. 1396 case "$file" in 1397 */*) . $file ;; 1398 *) . ./$file ;; 1399 esac 1400 1401 # Check the variables that should have been set. 1402 if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then 1403 echo "$progname: invalid libtool wrapper script \`$file'" 1>&2 1404 exit 1 1405 fi 1406 1407 finalize=yes 1408 for lib in $link_against_libtool_libs; do 1409 # Check to see that each library is installed. 1410 libdir= 1411 if test -f "$lib"; then 1412 # If there is no directory component, then add one. 1413 case "$lib" in 1414 */*) . $lib ;; 1415 *) . ./$lib ;; 1416 esac 1417 fi 1418 libfile="$libdir/`echo "$lib" | sed 's%^.*/%%g'`" 1419 if test -z "$libdir"; then 1420 echo "$progname: warning: \`$lib' contains no -rpath information" 1>&2 1421 elif test -f "$libfile"; then : 1422 else 1423 echo "$progname: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 1424 finalize=no 1425 fi 1426 done 1427 1428 if test "$hardcode_action" = relink; then 1429 if test "$finalize" = yes; then 1430 echo "$progname: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2 1431 $show "$finalize_command" 1432 if $run $finalize_command; then : 1433 else 1434 echo "$progname: error: relink \`$file' with the above command before installing it" 1>&2 1435 continue 1436 fi 1437 file="$objdir/$file"T 1438 else 1439 echo "$progname: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2 1440 fi 1441 else 1442 # Install the binary that we compiled earlier. 1443 dir=`echo "$file" | sed 's%/[^/]*$%%'` 1444 if test "$file" = "$dir"; then 1445 file="$objdir/$file" 1446 else 1447 file="$dir/$objdir/`echo "$file" | sed 's%^.*/%%'`" 1448 fi 1449 fi 1450 fi 1451 1452 $show "$install_prog$stripme $file $dest" 1453 $run $install_prog$stripme $file $dest || exit $? 1454 ;; 1455 esac 1456 done 1457 1458 for file in $staticlibs; do 1459 name=`echo "$file" | sed 's%^.*/%%'` 1460 1461 # Set up the ranlib parameters. 1462 oldlib="$destdir/$name" 1463 1464 $show "$install_prog $file $oldlib" 1465 $run $install_prog $file $oldlib || exit $? 1466 1467 # Support stripping libraries. 1468 if test -n "$stripme"; then 1469 if test -n "$old_striplib"; then 1470 $show "$old_striplib $oldlib" 1471 $run $old_striplib $oldlib || exit $? 1472 else 1473 echo "$progname: warning: no static library stripping program" 1>&2 1474 fi 1475 fi 1476 1477 # Do each command in the postinstall commands. 1478 cmds=`eval echo \"$old_postinstall_cmds\"` 1479 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 1480 for cmd in $cmds; do 1481 IFS="$save_ifs" 1482 $show "$cmd" 1483 $run eval "$cmd" || exit $? 1484 done 1485 IFS="$save_ifs" 1486 done 1487 1488 if test -n "$future_libdirs"; then 1489 echo "$progname: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 1490 fi 1491 1492 if test -n "$current_libdirs"; then 1493 # Maybe just do a dry run. 1494 test -n "$run" && current_libdirs=" -n$current_libdirs" 1495 exec $0 --finish$current_libdirs 1496 exit 1 1497 fi 1498 1499 exit 0 1500 ;; 1501 1502 # libtool dlname mode 1503 dlname) 1504 progname="$progname: dlname" 1505 ltlibs="$nonopt" 1506 for lib 1507 do 1508 ltlibs="$ltlibs $lib" 1509 done 1510 1511 if test -z "$ltlibs"; then 1512 echo "$progname: you must specify at least one LTLIBRARY" 1>&2 1513 echo "$help" 1>&2 1514 exit 1 1515 fi 1516 1517 # Now check to make sure each one is a valid libtool library. 1518 status=0 1519 for lib in $ltlibs; do 1520 dlname= 1521 libdir= 1522 library_names= 1523 1524 # Check to see that this really is a libtool archive. 1525 if egrep "^# Generated by $PROGRAM" $arg >/dev/null 2>&1; then : 1526 else 1527 echo "$progname: \`$arg' is not a valid libtool archive" 1>&2 1528 status=1 1529 continue 1530 fi 1531 1532 # If there is no directory component, then add one. 1533 case "$arg" in 1534 */*) . $arg ;; 1535 *) . ./$arg ;; 1536 esac 1537 1538 if test -z "$libdir"; then 1539 echo "$progname: \`$arg' contains no -rpath information" 1>&2 1540 status=1 1541 elif test -n "$dlname"; then 1542 echo "$libdir/$dlname" 1543 elif test -z "$library_names"; then 1544 echo "$progname: \`$arg' is not a shared library" 1>&2 1545 status=1 1546 else 1547 echo "$progname: \`$arg' was not linked with \`-export-dynamic'" 1>&2 1548 status=1 1549 fi 1550 done 1551 exit $status 1552 ;; 1553 1554 # libtool finish mode 1555 finish) 1556 progname="$progname: finish" 1557 libdirs="$nonopt" 1558 1559 if test -n "$finish_cmds" && test -n "$libdirs"; then 1560 for dir 1561 do 1562 libdirs="$libdirs $dir" 1563 done 1564 1565 for libdir in $libdirs; do 1566 # Do each command in the postinstall commands. 1567 cmds=`eval echo \"$finish_cmds\"` 1568 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' 1569 for cmd in $cmds; do 1570 IFS="$save_ifs" 1571 $show "$cmd" 1572 $run eval "$cmd" 1573 done 1574 IFS="$save_ifs" 1575 done 1576 fi 1577 1578 echo "To link against installed libraries in LIBDIR, users may have to:" 1579 if test -n "$shlibpath_var"; then 1580 echo " - add LIBDIR to their \`$shlibpath_var' environment variable" 1581 fi 1582 echo " - use the \`-LLIBDIR' linker flag" 1583 exit 0 1584 ;; 1585 1586 # libtool uninstall mode 1587 uninstall) 1588 progname="$progname: uninstall" 1589 rm="$nonopt" 1590 files= 1591 1592 for arg 1593 do 1594 case "$arg" in 1595 -*) rm="$rm $arg" ;; 1596 *) files="$files $arg" ;; 1597 esac 1598 done 1599 1600 if test -z "$rm"; then 1601 echo "$progname: you must specify an RM program" 1>&2 1602 echo "$help" 1>&2 1603 exit 1 1604 fi 1605 1606 for file in $files; do 1607 dir=`echo "$file" | sed -e 's%/[^/]*$%%'` 1608 test "$dir" = "$file" && dir=. 1609 name=`echo "$file" | sed -e 's%^.*/%%'` 1610 1611 rmfiles="$file" 1612 1613 case "$name" in 1614 *.la) 1615 # Possibly a libtool archive, so verify it. 1616 if egrep "^# Generated by $PROGRAM" $file >/dev/null 2>&1; then 1617 . $dir/$name 1618 1619 # Delete the libtool libraries and symlinks. 1620 for n in $library_names; do 1621 rmfiles="$rmfiles $dir/$n" 1622 test "X$n" = "X$dlname" && dlname= 1623 done 1624 test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname" 1625 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" 1626 1627 # FIXME: should reinstall the best remaining shared library. 1628 fi 1629 ;; 1630 1631 *.lo) 1632 if test "$build_old_libs" = yes; then 1633 oldobj=`echo "$name" | sed 's/\.lo$/\.o/'` 1634 rmfiles="$rmfiles $dir/$oldobj" 1635 fi 1636 ;; 1637 esac 1638 1639 $show "$rm $rmfiles" 1640 $run $rm $rmfiles 1641 done 1642 exit 0 1643 ;; 1644 1645 NONE) 1646 echo "$progname: you must specify a MODE" 1>&2 1647 echo "$generic_help" 1>&2 1648 exit 1 1649 ;; 1650 esac 1651 1652 echo "$progname: invalid operation mode \`$mode'" 1>&2 1653 echo "$generic_help" 1>&2 1654 exit 1 1655fi # test -z "$show_help" 1656 1657# We need to display help for each of the modes. 1658case "$mode" in 1659NONE) cat <<EOF 1660Usage: $progname [OPTION]... [MODE-ARG]... 1661 1662Provide generalized library-building support services. 1663 1664-n, --dry-run display commands without modifying any files 1665 --features display configuration information and exit 1666 --finish same as \`--mode=finish' 1667 --help display this help message and exit 1668 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] 1669 --version print version information 1670 1671MODE must be one of the following: 1672 1673 compile compile a source file into a libtool object 1674 dlname print filenames to use to \`dlopen' libtool libraries 1675 finish complete the installation of libtool libraries 1676 install install libraries or executables 1677 link create a library or an executable 1678 uninstall remove libraries from an installed directory 1679 1680MODE-ARGS vary depending on the MODE. Try \`$progname --help --mode=MODE' for 1681a more detailed description of MODE. 1682EOF 1683 ;; 1684 1685compile) 1686 cat <<EOF 1687Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 1688 1689Compile a source file into a libtool library object. 1690 1691COMPILE-COMMAND is a command to be used in creating a \`standard' object file 1692from the given SOURCEFILE. 1693 1694The output file name is determined by removing the directory component from 1695SOURCEFILE, then substituting the C source code suffix \`.c' with the 1696library object suffix, \`.lo'. 1697EOF 1698 ;; 1699 1700dlname) 1701 cat <<EOF 1702Usage: $progname [OPTION]... --mode=dlname LTLIBRARY... 1703 1704Print filenames to use to \`dlopen' libtool libraries. 1705 1706Each LTLIBRARY is the name of a dynamically loadable libtool library (one that 1707was linked using the \`-export-dynamic' option). 1708 1709The names to use are printed to standard output, one per line. 1710EOF 1711 ;; 1712 1713finish) 1714 cat <<EOF 1715Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 1716 1717Complete the installation of libtool libraries. 1718 1719Each LIBDIR is a directory that contains libtool libraries. 1720 1721The commands that this mode executes may require superuser privileges. Use 1722the \`--dry-run' option if you just want to see what would be executed. 1723EOF 1724 ;; 1725 1726install) 1727 cat <<EOF 1728Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 1729 1730Install executables or libraries. 1731 1732INSTALL-COMMAND is the installation command. The first component should be 1733either the \`install' or \`cp' program. 1734 1735The rest of the components are interpreted as arguments to that command (only 1736BSD-compatible install options are recognized). 1737EOF 1738 ;; 1739 1740link) 1741 cat <<EOF 1742Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 1743 1744Link object files or libraries together to form another library, or to 1745create an executable program. 1746 1747LINK-COMMAND is a command using the C compiler that you would use to create 1748a program from several object files. 1749 1750The following components of LINK-COMMAND are treated specially: 1751 1752 -allow-undefined allow a libtool library to reference undefined symbols 1753 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 1754 -LLIBDIR search LIBDIR for required installed libraries 1755 -lNAME OUTPUT-FILE requires the installed library libNAME 1756 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 1757 -rpath LIBDIR the created library will eventually be installed in LIBDIR 1758 -static do not do any dynamic linking or shared library creation 1759 -version-info CURRENT[:REVISION[:AGE]] 1760 specify library version info [each variable defaults to 0] 1761 1762All other options (arguments beginning with \`-') are ignored. 1763 1764Every other argument is treated as a filename. Files ending in \`.la' are 1765treated as uninstalled libtool libraries, other files are standard or library 1766object files. 1767 1768If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only 1769library objects (\`.lo' files) may be specified, and \`-rpath' is required. 1770 1771If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar' 1772and \`ranlib'. 1773 1774If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is 1775created, otherwise an executable program is created. 1776EOF 1777 ;; 1778 1779uninstall) 1780 cat <<EOF 1781Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 1782 1783Remove libraries from an installation directory. 1784 1785RM is the name of the program to use to delete files associated with each FILE 1786(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 1787to RM. 1788 1789If FILE is a libtool library, all the files associated with it are deleted. 1790Otherwise, only FILE itself is deleted using RM. 1791EOF 1792 ;; 1793 1794*) 1795 echo "$progname: invalid operation mode \`$mode'" 1>&2 1796 echo "$help" 1>&2 1797 exit 1 1798 ;; 1799esac 1800 1801case "$mode" in 1802archive|compile) 1803 echo 1804 echo "Try \`$progname --help' for more information about other modes." 1805 ;; 1806esac 1807 1808exit 0 1809 1810# Local Variables: 1811# mode:shell-script 1812# sh-indentation:2 1813# End: 1814