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