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