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