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