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