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