1 # Generated from ltmain.m4sh. 2 3 # libtool (GNU libtool) 2.2.10 4 # Written by Gordon Matzigkeit <gord (at] gnu.ai.mit.edu>, 1996 5 6 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 7 # 2007, 2008, 2009, 2010 Free Software Foundation, Inc. 8 # This is free software; see the source for copying conditions. There is NO 9 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 10 11 # GNU Libtool is free software; you can redistribute it and/or modify 12 # it under the terms of the GNU General Public License as published by 13 # the Free Software Foundation; either version 2 of the License, or 14 # (at your option) any later version. 15 # 16 # As a special exception to the GNU General Public License, 17 # if you distribute this file as part of a program or library that 18 # is built using GNU Libtool, you may include this file under the 19 # same distribution terms that you use for the rest of that program. 20 # 21 # GNU Libtool is distributed in the hope that it will be useful, but 22 # WITHOUT ANY WARRANTY; without even the implied warranty of 23 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 24 # General Public License for more details. 25 # 26 # You should have received a copy of the GNU General Public License 27 # along with GNU Libtool; see the file COPYING. If not, a copy 28 # can be downloaded from http://www.gnu.org/licenses/gpl.html, 29 # or obtained by writing to the Free Software Foundation, Inc., 30 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 31 32 # Usage: $progname [OPTION]... [MODE-ARG]... 33 # 34 # Provide generalized library-building support services. 35 # 36 # --config show all configuration variables 37 # --debug enable verbose shell tracing 38 # -n, --dry-run display commands without modifying any files 39 # --features display basic configuration information and exit 40 # --mode=MODE use operation mode MODE 41 # --preserve-dup-deps don't remove duplicate dependency libraries 42 # --quiet, --silent don't print informational messages 43 # --no-quiet, --no-silent 44 # print informational messages (default) 45 # --tag=TAG use configuration variables from tag TAG 46 # -v, --verbose print more informational messages than default 47 # --no-verbose don't print the extra informational messages 48 # --version print version information 49 # -h, --help, --help-all print short, long, or detailed help message 50 # 51 # MODE must be one of the following: 52 # 53 # clean remove files from the build directory 54 # compile compile a source file into a libtool object 55 # execute automatically set library path, then run a program 56 # finish complete the installation of libtool libraries 57 # install install libraries or executables 58 # link create a library or an executable 59 # uninstall remove libraries from an installed directory 60 # 61 # MODE-ARGS vary depending on the MODE. When passed as first option, 62 # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 63 # Try `$progname --help --mode=MODE' for a more detailed description of MODE. 64 # 65 # When reporting a bug, please describe a test case to reproduce it and 66 # include the following information: 67 # 68 # host-triplet: $host 69 # shell: $SHELL 70 # compiler: $LTCC 71 # compiler flags: $LTCFLAGS 72 # linker: $LD (gnu? $with_gnu_ld) 73 # $progname: (GNU libtool) 2.2.10 74 # automake: $automake_version 75 # autoconf: $autoconf_version 76 # 77 # Report bugs to <bug-libtool (at] gnu.org>. 78 79 PROGRAM=libtool 80 PACKAGE=libtool 81 VERSION=2.2.10 82 TIMESTAMP="" 83 package_revision=1.3175 84 85 # Be Bourne compatible 86 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 87 emulate sh 88 NULLCMD=: 89 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 90 # is contrary to our usage. Disable this feature. 91 alias -g '${1+"$@"}'='"$@"' 92 setopt NO_GLOB_SUBST 93 else 94 case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 95 fi 96 BIN_SH=xpg4; export BIN_SH # for Tru64 97 DUALCASE=1; export DUALCASE # for MKS sh 98 99 # A function that is used when there is no print builtin or printf. 100 func_fallback_echo () 101 { 102 eval 'cat <<_LTECHO_EOF 103 $1 104 _LTECHO_EOF' 105 } 106 107 # NLS nuisances: We save the old values to restore during execute mode. 108 lt_user_locale= 109 lt_safe_locale= 110 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 111 do 112 eval "if test \"\${$lt_var+set}\" = set; then 113 save_$lt_var=\$$lt_var 114 $lt_var=C 115 export $lt_var 116 lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 117 lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 118 fi" 119 done 120 LC_ALL=C 121 LANGUAGE=C 122 export LANGUAGE LC_ALL 123 124 $lt_unset CDPATH 125 126 127 # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 128 # is ksh but when the shell is invoked as "sh" and the current value of 129 # the _XPG environment variable is not equal to 1 (one), the special 130 # positional parameter $0, within a function call, is the name of the 131 # function. 132 progpath="$0" 133 134 135 136 : ${CP="cp -f"} 137 test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 138 : ${EGREP="grep -E"} 139 : ${FGREP="grep -F"} 140 : ${GREP="grep"} 141 : ${LN_S="ln -s"} 142 : ${MAKE="make"} 143 : ${MKDIR="mkdir"} 144 : ${MV="mv -f"} 145 : ${RM="rm -f"} 146 : ${SED="sed"} 147 : ${SHELL="${CONFIG_SHELL-/bin/sh}"} 148 : ${Xsed="$SED -e 1s/^X//"} 149 150 # Global variables: 151 EXIT_SUCCESS=0 152 EXIT_FAILURE=1 153 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 154 EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 155 156 exit_status=$EXIT_SUCCESS 157 158 # Make sure IFS has a sensible default 159 lt_nl=' 160 ' 161 IFS=" $lt_nl" 162 163 dirname="s,/[^/]*$,," 164 basename="s,^.*/,," 165 166 # func_dirname_and_basename file append nondir_replacement 167 # perform func_basename and func_dirname in a single function 168 # call: 169 # dirname: Compute the dirname of FILE. If nonempty, 170 # add APPEND to the result, otherwise set result 171 # to NONDIR_REPLACEMENT. 172 # value returned in "$func_dirname_result" 173 # basename: Compute filename of FILE. 174 # value retuned in "$func_basename_result" 175 # Implementation must be kept synchronized with func_dirname 176 # and func_basename. For efficiency, we do not delegate to 177 # those functions but instead duplicate the functionality here. 178 func_dirname_and_basename () 179 { 180 # Extract subdirectory from the argument. 181 func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 182 if test "X$func_dirname_result" = "X${1}"; then 183 func_dirname_result="${3}" 184 else 185 func_dirname_result="$func_dirname_result${2}" 186 fi 187 func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 188 } 189 190 # Generated shell functions inserted here. 191 192 # These SED scripts presuppose an absolute path with a trailing slash. 193 pathcar='s,^/\([^/]*\).*$,\1,' 194 pathcdr='s,^/[^/]*,,' 195 removedotparts=':dotsl 196 s@/\./@/@g 197 t dotsl 198 s,/\.$,/,' 199 collapseslashes='s@/\{1,\}@/@g' 200 finalslash='s,/*$,/,' 201 202 # func_normal_abspath PATH 203 # Remove doubled-up and trailing slashes, "." path components, 204 # and cancel out any ".." path components in PATH after making 205 # it an absolute path. 206 # value returned in "$func_normal_abspath_result" 207 func_normal_abspath () 208 { 209 # Start from root dir and reassemble the path. 210 func_normal_abspath_result= 211 func_normal_abspath_tpath=$1 212 func_normal_abspath_altnamespace= 213 case $func_normal_abspath_tpath in 214 "") 215 # Empty path, that just means $cwd. 216 func_stripname '' '/' "`pwd`" 217 func_normal_abspath_result=$func_stripname_result 218 return 219 ;; 220 # The next three entries are used to spot a run of precisely 221 # two leading slashes without using negated character classes; 222 # we take advantage of case's first-match behaviour. 223 ///*) 224 # Unusual form of absolute path, do nothing. 225 ;; 226 //*) 227 # Not necessarily an ordinary path; POSIX reserves leading '//' 228 # and for example Cygwin uses it to access remote file shares 229 # over CIFS/SMB, so we conserve a leading double slash if found. 230 func_normal_abspath_altnamespace=/ 231 ;; 232 /*) 233 # Absolute path, do nothing. 234 ;; 235 *) 236 # Relative path, prepend $cwd. 237 func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 238 ;; 239 esac 240 # Cancel out all the simple stuff to save iterations. We also want 241 # the path to end with a slash for ease of parsing, so make sure 242 # there is one (and only one) here. 243 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 244 -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 245 while :; do 246 # Processed it all yet? 247 if test "$func_normal_abspath_tpath" = / ; then 248 # If we ascended to the root using ".." the result may be empty now. 249 if test -z "$func_normal_abspath_result" ; then 250 func_normal_abspath_result=/ 251 fi 252 break 253 fi 254 func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 255 -e "$pathcar"` 256 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 257 -e "$pathcdr"` 258 # Figure out what to do with it 259 case $func_normal_abspath_tcomponent in 260 "") 261 # Trailing empty path component, ignore it. 262 ;; 263 ..) 264 # Parent dir; strip last assembled component from result. 265 func_dirname "$func_normal_abspath_result" 266 func_normal_abspath_result=$func_dirname_result 267 ;; 268 *) 269 # Actual path component, append it. 270 func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 271 ;; 272 esac 273 done 274 # Restore leading double-slash if one was found on entry. 275 func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 276 } 277 278 # func_relative_path SRCDIR DSTDIR 279 # generates a relative path from SRCDIR to DSTDIR, with a trailing 280 # slash if non-empty, suitable for immediately appending a filename 281 # without needing to append a separator. 282 # value returned in "$func_relative_path_result" 283 func_relative_path () 284 { 285 func_relative_path_result= 286 func_normal_abspath "$1" 287 func_relative_path_tlibdir=$func_normal_abspath_result 288 func_normal_abspath "$2" 289 func_relative_path_tbindir=$func_normal_abspath_result 290 291 # Ascend the tree starting from libdir 292 while :; do 293 # check if we have found a prefix of bindir 294 case $func_relative_path_tbindir in 295 $func_relative_path_tlibdir) 296 # found an exact match 297 func_relative_path_tcancelled= 298 break 299 ;; 300 $func_relative_path_tlibdir*) 301 # found a matching prefix 302 func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 303 func_relative_path_tcancelled=$func_stripname_result 304 if test -z "$func_relative_path_result"; then 305 func_relative_path_result=. 306 fi 307 break 308 ;; 309 *) 310 func_dirname $func_relative_path_tlibdir 311 func_relative_path_tlibdir=${func_dirname_result} 312 if test "x$func_relative_path_tlibdir" = x ; then 313 # Have to descend all the way to the root! 314 func_relative_path_result=../$func_relative_path_result 315 func_relative_path_tcancelled=$func_relative_path_tbindir 316 break 317 fi 318 func_relative_path_result=../$func_relative_path_result 319 ;; 320 esac 321 done 322 323 # Now calculate path; take care to avoid doubling-up slashes. 324 func_stripname '' '/' "$func_relative_path_result" 325 func_relative_path_result=$func_stripname_result 326 func_stripname '/' '/' "$func_relative_path_tcancelled" 327 if test "x$func_stripname_result" != x ; then 328 func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 329 fi 330 331 # Normalisation. If bindir is libdir, return empty string, 332 # else relative path ending with a slash; either way, target 333 # file name can be directly appended. 334 if test ! -z "$func_relative_path_result"; then 335 func_stripname './' '' "$func_relative_path_result/" 336 func_relative_path_result=$func_stripname_result 337 fi 338 } 339 340 # The name of this program: 341 func_dirname_and_basename "$progpath" 342 progname=$func_basename_result 343 344 # Make sure we have an absolute path for reexecution: 345 case $progpath in 346 [\\/]*|[A-Za-z]:\\*) ;; 347 *[\\/]*) 348 progdir=$func_dirname_result 349 progdir=`cd "$progdir" && pwd` 350 progpath="$progdir/$progname" 351 ;; 352 *) 353 save_IFS="$IFS" 354 IFS=: 355 for progdir in $PATH; do 356 IFS="$save_IFS" 357 test -x "$progdir/$progname" && break 358 done 359 IFS="$save_IFS" 360 test -n "$progdir" || progdir=`pwd` 361 progpath="$progdir/$progname" 362 ;; 363 esac 364 365 # Sed substitution that helps us do robust quoting. It backslashifies 366 # metacharacters that are still active within double-quoted strings. 367 Xsed="${SED}"' -e 1s/^X//' 368 sed_quote_subst='s/\([`"$\\]\)/\\\1/g' 369 370 # Same as above, but do not quote variable references. 371 double_quote_subst='s/\(["`\\]\)/\\\1/g' 372 373 # Re-`\' parameter expansions in output of double_quote_subst that were 374 # `\'-ed in input to the same. If an odd number of `\' preceded a '$' 375 # in input to double_quote_subst, that '$' was protected from expansion. 376 # Since each input `\' is now two `\'s, look for any number of runs of 377 # four `\'s followed by two `\'s and then a '$'. `\' that '$'. 378 bs='\\' 379 bs2='\\\\' 380 bs4='\\\\\\\\' 381 dollar='\$' 382 sed_double_backslash="\ 383 s/$bs4/&\\ 384 /g 385 s/^$bs2$dollar/$bs&/ 386 s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 387 s/\n//g" 388 389 # Standard options: 390 opt_dry_run=false 391 opt_help=false 392 opt_quiet=false 393 opt_verbose=false 394 opt_warning=: 395 396 # func_echo arg... 397 # Echo program name prefixed message, along with the current mode 398 # name if it has been set yet. 399 func_echo () 400 { 401 $ECHO "$progname${mode+: }$mode: $*" 402 } 403 404 # func_verbose arg... 405 # Echo program name prefixed message in verbose mode only. 406 func_verbose () 407 { 408 $opt_verbose && func_echo ${1+"$@"} 409 410 # A bug in bash halts the script if the last line of a function 411 # fails when set -e is in force, so we need another command to 412 # work around that: 413 : 414 } 415 416 # func_echo_all arg... 417 # Invoke $ECHO with all args, space-separated. 418 func_echo_all () 419 { 420 $ECHO "$*" 421 } 422 423 # func_error arg... 424 # Echo program name prefixed message to standard error. 425 func_error () 426 { 427 $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 428 } 429 430 # func_warning arg... 431 # Echo program name prefixed warning message to standard error. 432 func_warning () 433 { 434 $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 435 436 # bash bug again: 437 : 438 } 439 440 # func_fatal_error arg... 441 # Echo program name prefixed message to standard error, and exit. 442 func_fatal_error () 443 { 444 func_error ${1+"$@"} 445 exit $EXIT_FAILURE 446 } 447 448 # func_fatal_help arg... 449 # Echo program name prefixed message to standard error, followed by 450 # a help hint, and exit. 451 func_fatal_help () 452 { 453 func_error ${1+"$@"} 454 func_fatal_error "$help" 455 } 456 help="Try \`$progname --help' for more information." ## default 457 458 459 # func_grep expression filename 460 # Check whether EXPRESSION matches any line of FILENAME, without output. 461 func_grep () 462 { 463 $GREP "$1" "$2" >/dev/null 2>&1 464 } 465 466 467 # func_mkdir_p directory-path 468 # Make sure the entire path to DIRECTORY-PATH is available. 469 func_mkdir_p () 470 { 471 my_directory_path="$1" 472 my_dir_list= 473 474 if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 475 476 # Protect directory names starting with `-' 477 case $my_directory_path in 478 -*) my_directory_path="./$my_directory_path" ;; 479 esac 480 481 # While some portion of DIR does not yet exist... 482 while test ! -d "$my_directory_path"; do 483 # ...make a list in topmost first order. Use a colon delimited 484 # list incase some portion of path contains whitespace. 485 my_dir_list="$my_directory_path:$my_dir_list" 486 487 # If the last portion added has no slash in it, the list is done 488 case $my_directory_path in */*) ;; *) break ;; esac 489 490 # ...otherwise throw away the child directory and loop 491 my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 492 done 493 my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 494 495 save_mkdir_p_IFS="$IFS"; IFS=':' 496 for my_dir in $my_dir_list; do 497 IFS="$save_mkdir_p_IFS" 498 # mkdir can fail with a `File exist' error if two processes 499 # try to create one of the directories concurrently. Don't 500 # stop in that case! 501 $MKDIR "$my_dir" 2>/dev/null || : 502 done 503 IFS="$save_mkdir_p_IFS" 504 505 # Bail out if we (or some other process) failed to create a directory. 506 test -d "$my_directory_path" || \ 507 func_fatal_error "Failed to create \`$1'" 508 fi 509 } 510 511 512 # func_mktempdir [string] 513 # Make a temporary directory that won't clash with other running 514 # libtool processes, and avoids race conditions if possible. If 515 # given, STRING is the basename for that directory. 516 func_mktempdir () 517 { 518 my_template="${TMPDIR-/tmp}/${1-$progname}" 519 520 if test "$opt_dry_run" = ":"; then 521 # Return a directory name, but don't create it in dry-run mode 522 my_tmpdir="${my_template}-$$" 523 else 524 525 # If mktemp works, use that first and foremost 526 my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 527 528 if test ! -d "$my_tmpdir"; then 529 # Failing that, at least try and use $RANDOM to avoid a race 530 my_tmpdir="${my_template}-${RANDOM-0}$$" 531 532 save_mktempdir_umask=`umask` 533 umask 0077 534 $MKDIR "$my_tmpdir" 535 umask $save_mktempdir_umask 536 fi 537 538 # If we're not in dry-run mode, bomb out on failure 539 test -d "$my_tmpdir" || \ 540 func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 541 fi 542 543 $ECHO "$my_tmpdir" 544 } 545 546 547 # func_quote_for_eval arg 548 # Aesthetically quote ARG to be evaled later. 549 # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 550 # is double-quoted, suitable for a subsequent eval, whereas 551 # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 552 # which are still active within double quotes backslashified. 553 func_quote_for_eval () 554 { 555 case $1 in 556 *[\\\`\"\$]*) 557 func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 558 *) 559 func_quote_for_eval_unquoted_result="$1" ;; 560 esac 561 562 case $func_quote_for_eval_unquoted_result in 563 # Double-quote args containing shell metacharacters to delay 564 # word splitting, command substitution and and variable 565 # expansion for a subsequent eval. 566 # Many Bourne shells cannot handle close brackets correctly 567 # in scan sets, so we specify it separately. 568 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 569 func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 570 ;; 571 *) 572 func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 573 esac 574 } 575 576 577 # func_quote_for_expand arg 578 # Aesthetically quote ARG to be evaled later; same as above, 579 # but do not quote variable references. 580 func_quote_for_expand () 581 { 582 case $1 in 583 *[\\\`\"]*) 584 my_arg=`$ECHO "$1" | $SED \ 585 -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 586 *) 587 my_arg="$1" ;; 588 esac 589 590 case $my_arg in 591 # Double-quote args containing shell metacharacters to delay 592 # word splitting and command substitution for a subsequent eval. 593 # Many Bourne shells cannot handle close brackets correctly 594 # in scan sets, so we specify it separately. 595 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 596 my_arg="\"$my_arg\"" 597 ;; 598 esac 599 600 func_quote_for_expand_result="$my_arg" 601 } 602 603 604 # func_show_eval cmd [fail_exp] 605 # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 606 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 607 # is given, then evaluate it. 608 func_show_eval () 609 { 610 my_cmd="$1" 611 my_fail_exp="${2-:}" 612 613 ${opt_silent-false} || { 614 func_quote_for_expand "$my_cmd" 615 eval "func_echo $func_quote_for_expand_result" 616 } 617 618 if ${opt_dry_run-false}; then :; else 619 eval "$my_cmd" 620 my_status=$? 621 if test "$my_status" -eq 0; then :; else 622 eval "(exit $my_status); $my_fail_exp" 623 fi 624 fi 625 } 626 627 628 # func_show_eval_locale cmd [fail_exp] 629 # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 630 # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 631 # is given, then evaluate it. Use the saved locale for evaluation. 632 func_show_eval_locale () 633 { 634 my_cmd="$1" 635 my_fail_exp="${2-:}" 636 637 ${opt_silent-false} || { 638 func_quote_for_expand "$my_cmd" 639 eval "func_echo $func_quote_for_expand_result" 640 } 641 642 if ${opt_dry_run-false}; then :; else 643 eval "$lt_user_locale 644 $my_cmd" 645 my_status=$? 646 eval "$lt_safe_locale" 647 if test "$my_status" -eq 0; then :; else 648 eval "(exit $my_status); $my_fail_exp" 649 fi 650 fi 651 } 652 653 654 # func_version 655 # Echo version message to standard output and exit. 656 func_version () 657 { 658 $SED -n '/(C)/!b go 659 :more 660 /\./!{ 661 N 662 s/\n# / / 663 b more 664 } 665 :go 666 /^# '$PROGRAM' (GNU /,/# warranty; / { 667 s/^# // 668 s/^# *$// 669 s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 670 p 671 }' < "$progpath" 672 exit $? 673 } 674 675 # func_usage 676 # Echo short help message to standard output and exit. 677 func_usage () 678 { 679 $SED -n '/^# Usage:/,/^# *.*--help/ { 680 s/^# // 681 s/^# *$// 682 s/\$progname/'$progname'/ 683 p 684 }' < "$progpath" 685 echo 686 $ECHO "run \`$progname --help | more' for full usage" 687 exit $? 688 } 689 690 # func_help [NOEXIT] 691 # Echo long help message to standard output and exit, 692 # unless 'noexit' is passed as argument. 693 func_help () 694 { 695 $SED -n '/^# Usage:/,/# Report bugs to/ { 696 s/^# // 697 s/^# *$// 698 s*\$progname*'$progname'* 699 s*\$host*'"$host"'* 700 s*\$SHELL*'"$SHELL"'* 701 s*\$LTCC*'"$LTCC"'* 702 s*\$LTCFLAGS*'"$LTCFLAGS"'* 703 s*\$LD*'"$LD"'* 704 s/\$with_gnu_ld/'"$with_gnu_ld"'/ 705 s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 706 s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 707 p 708 }' < "$progpath" 709 ret=$? 710 if test -z "$1"; then 711 exit $ret 712 fi 713 } 714 715 # func_missing_arg argname 716 # Echo program name prefixed message to standard error and set global 717 # exit_cmd. 718 func_missing_arg () 719 { 720 func_error "missing argument for $1." 721 exit_cmd=exit 722 } 723 724 exit_cmd=: 725 726 727 728 729 730 731 magic="%%%MAGIC variable%%%" 732 magic_exe="%%%MAGIC EXE variable%%%" 733 734 # Global variables. 735 # $mode is unset 736 nonopt= 737 execute_dlfiles= 738 preserve_args= 739 lo2o="s/\\.lo\$/.${objext}/" 740 o2lo="s/\\.${objext}\$/.lo/" 741 extracted_archives= 742 extracted_serial=0 743 744 opt_dry_run=false 745 opt_duplicate_deps=false 746 opt_silent=false 747 opt_debug=: 748 749 # If this variable is set in any of the actions, the command in it 750 # will be execed at the end. This prevents here-documents from being 751 # left over by shells. 752 exec_cmd= 753 754 # func_fatal_configuration arg... 755 # Echo program name prefixed message to standard error, followed by 756 # a configuration failure hint, and exit. 757 func_fatal_configuration () 758 { 759 func_error ${1+"$@"} 760 func_error "See the $PACKAGE documentation for more information." 761 func_fatal_error "Fatal configuration error." 762 } 763 764 765 # func_config 766 # Display the configuration for all the tags in this script. 767 func_config () 768 { 769 re_begincf='^# ### BEGIN LIBTOOL' 770 re_endcf='^# ### END LIBTOOL' 771 772 # Default configuration. 773 $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 774 775 # Now print the configurations for the tags. 776 for tagname in $taglist; do 777 $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 778 done 779 780 exit $? 781 } 782 783 # func_features 784 # Display the features supported by this script. 785 func_features () 786 { 787 echo "host: $host" 788 if test "$build_libtool_libs" = yes; then 789 echo "enable shared libraries" 790 else 791 echo "disable shared libraries" 792 fi 793 if test "$build_old_libs" = yes; then 794 echo "enable static libraries" 795 else 796 echo "disable static libraries" 797 fi 798 799 exit $? 800 } 801 802 # func_enable_tag tagname 803 # Verify that TAGNAME is valid, and either flag an error and exit, or 804 # enable the TAGNAME tag. We also add TAGNAME to the global $taglist 805 # variable here. 806 func_enable_tag () 807 { 808 # Global variable: 809 tagname="$1" 810 811 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 812 re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 813 sed_extractcf="/$re_begincf/,/$re_endcf/p" 814 815 # Validate tagname. 816 case $tagname in 817 *[!-_A-Za-z0-9,/]*) 818 func_fatal_error "invalid tag name: $tagname" 819 ;; 820 esac 821 822 # Don't test for the "default" C tag, as we know it's 823 # there but not specially marked. 824 case $tagname in 825 CC) ;; 826 *) 827 if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 828 taglist="$taglist $tagname" 829 830 # Evaluate the configuration. Be careful to quote the path 831 # and the sed script, to avoid splitting on whitespace, but 832 # also don't use non-portable quotes within backquotes within 833 # quotes we have to do it in 2 steps: 834 extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 835 eval "$extractedcf" 836 else 837 func_error "ignoring unknown tag $tagname" 838 fi 839 ;; 840 esac 841 } 842 843 # Parse options once, thoroughly. This comes as soon as possible in 844 # the script to make things like `libtool --version' happen quickly. 845 { 846 847 # Shorthand for --mode=foo, only valid as the first argument 848 case $1 in 849 clean|clea|cle|cl) 850 shift; set dummy --mode clean ${1+"$@"}; shift 851 ;; 852 compile|compil|compi|comp|com|co|c) 853 shift; set dummy --mode compile ${1+"$@"}; shift 854 ;; 855 execute|execut|execu|exec|exe|ex|e) 856 shift; set dummy --mode execute ${1+"$@"}; shift 857 ;; 858 finish|finis|fini|fin|fi|f) 859 shift; set dummy --mode finish ${1+"$@"}; shift 860 ;; 861 install|instal|insta|inst|ins|in|i) 862 shift; set dummy --mode install ${1+"$@"}; shift 863 ;; 864 link|lin|li|l) 865 shift; set dummy --mode link ${1+"$@"}; shift 866 ;; 867 uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 868 shift; set dummy --mode uninstall ${1+"$@"}; shift 869 ;; 870 esac 871 872 # Parse non-mode specific arguments: 873 while test "$#" -gt 0; do 874 opt="$1" 875 shift 876 877 case $opt in 878 --config) func_config ;; 879 880 --debug) preserve_args="$preserve_args $opt" 881 func_echo "enabling shell trace mode" 882 opt_debug='set -x' 883 $opt_debug 884 ;; 885 886 -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break 887 execute_dlfiles="$execute_dlfiles $1" 888 shift 889 ;; 890 891 --dry-run | -n) opt_dry_run=: ;; 892 --features) func_features ;; 893 --finish) mode="finish" ;; 894 895 --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 896 case $1 in 897 # Valid mode arguments: 898 clean) ;; 899 compile) ;; 900 execute) ;; 901 finish) ;; 902 install) ;; 903 link) ;; 904 relink) ;; 905 uninstall) ;; 906 907 # Catch anything else as an error 908 *) func_error "invalid argument for $opt" 909 exit_cmd=exit 910 break 911 ;; 912 esac 913 914 mode="$1" 915 shift 916 ;; 917 918 --preserve-dup-deps) 919 opt_duplicate_deps=: ;; 920 921 --quiet|--silent) preserve_args="$preserve_args $opt" 922 opt_silent=: 923 opt_verbose=false 924 ;; 925 926 --no-quiet|--no-silent) 927 preserve_args="$preserve_args $opt" 928 opt_silent=false 929 ;; 930 931 --verbose| -v) preserve_args="$preserve_args $opt" 932 opt_silent=false 933 opt_verbose=: 934 ;; 935 936 --no-verbose) preserve_args="$preserve_args $opt" 937 opt_verbose=false 938 ;; 939 940 --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break 941 preserve_args="$preserve_args $opt $1" 942 func_enable_tag "$1" # tagname is set here 943 shift 944 ;; 945 946 # Separate optargs to long options: 947 -dlopen=*|--mode=*|--tag=*) 948 func_opt_split "$opt" 949 set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} 950 shift 951 ;; 952 953 -\?|-h) func_usage ;; 954 --help) opt_help=: ;; 955 --help-all) opt_help=': help-all' ;; 956 --version) func_version ;; 957 958 -*) func_fatal_help "unrecognized option \`$opt'" ;; 959 960 *) nonopt="$opt" 961 break 962 ;; 963 esac 964 done 965 966 967 case $host in 968 *cygwin* | *mingw* | *pw32* | *cegcc*) 969 # don't eliminate duplications in $postdeps and $predeps 970 opt_duplicate_compiler_generated_deps=: 971 ;; 972 *) 973 opt_duplicate_compiler_generated_deps=$opt_duplicate_deps 974 ;; 975 esac 976 977 # Having warned about all mis-specified options, bail out if 978 # anything was wrong. 979 $exit_cmd $EXIT_FAILURE 980 } 981 982 # func_check_version_match 983 # Ensure that we are using m4 macros, and libtool script from the same 984 # release of libtool. 985 func_check_version_match () 986 { 987 if test "$package_revision" != "$macro_revision"; then 988 if test "$VERSION" != "$macro_version"; then 989 if test -z "$macro_version"; then 990 cat >&2 <<_LT_EOF 991 $progname: Version mismatch error. This is $PACKAGE $VERSION, but the 992 $progname: definition of this LT_INIT comes from an older release. 993 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 994 $progname: and run autoconf again. 995 _LT_EOF 996 else 997 cat >&2 <<_LT_EOF 998 $progname: Version mismatch error. This is $PACKAGE $VERSION, but the 999 $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 1000 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 1001 $progname: and run autoconf again. 1002 _LT_EOF 1003 fi 1004 else 1005 cat >&2 <<_LT_EOF 1006 $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1007 $progname: but the definition of this LT_INIT comes from revision $macro_revision. 1008 $progname: You should recreate aclocal.m4 with macros from revision $package_revision 1009 $progname: of $PACKAGE $VERSION and run autoconf again. 1010 _LT_EOF 1011 fi 1012 1013 exit $EXIT_MISMATCH 1014 fi 1015 } 1016 1017 1018 ## ----------- ## 1019 ## Main. ## 1020 ## ----------- ## 1021 1022 $opt_help || { 1023 # Sanity checks first: 1024 func_check_version_match 1025 1026 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1027 func_fatal_configuration "not configured to build any kind of library" 1028 fi 1029 1030 test -z "$mode" && func_fatal_error "error: you must specify a MODE." 1031 1032 1033 # Darwin sucks 1034 eval std_shrext=\"$shrext_cmds\" 1035 1036 1037 # Only execute mode is allowed to have -dlopen flags. 1038 if test -n "$execute_dlfiles" && test "$mode" != execute; then 1039 func_error "unrecognized option \`-dlopen'" 1040 $ECHO "$help" 1>&2 1041 exit $EXIT_FAILURE 1042 fi 1043 1044 # Change the help message to a mode-specific one. 1045 generic_help="$help" 1046 help="Try \`$progname --help --mode=$mode' for more information." 1047 } 1048 1049 1050 # func_lalib_p file 1051 # True iff FILE is a libtool `.la' library or `.lo' object file. 1052 # This function is only a basic sanity check; it will hardly flush out 1053 # determined imposters. 1054 func_lalib_p () 1055 { 1056 test -f "$1" && 1057 $SED -e 4q "$1" 2>/dev/null \ 1058 | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 1059 } 1060 1061 # func_lalib_unsafe_p file 1062 # True iff FILE is a libtool `.la' library or `.lo' object file. 1063 # This function implements the same check as func_lalib_p without 1064 # resorting to external programs. To this end, it redirects stdin and 1065 # closes it afterwards, without saving the original file descriptor. 1066 # As a safety measure, use it only where a negative result would be 1067 # fatal anyway. Works if `file' does not exist. 1068 func_lalib_unsafe_p () 1069 { 1070 lalib_p=no 1071 if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 1072 for lalib_p_l in 1 2 3 4 1073 do 1074 read lalib_p_line 1075 case "$lalib_p_line" in 1076 \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 1077 esac 1078 done 1079 exec 0<&5 5<&- 1080 fi 1081 test "$lalib_p" = yes 1082 } 1083 1084 # func_ltwrapper_script_p file 1085 # True iff FILE is a libtool wrapper script 1086 # This function is only a basic sanity check; it will hardly flush out 1087 # determined imposters. 1088 func_ltwrapper_script_p () 1089 { 1090 func_lalib_p "$1" 1091 } 1092 1093 # func_ltwrapper_executable_p file 1094 # True iff FILE is a libtool wrapper executable 1095 # This function is only a basic sanity check; it will hardly flush out 1096 # determined imposters. 1097 func_ltwrapper_executable_p () 1098 { 1099 func_ltwrapper_exec_suffix= 1100 case $1 in 1101 *.exe) ;; 1102 *) func_ltwrapper_exec_suffix=.exe ;; 1103 esac 1104 $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 1105 } 1106 1107 # func_ltwrapper_scriptname file 1108 # Assumes file is an ltwrapper_executable 1109 # uses $file to determine the appropriate filename for a 1110 # temporary ltwrapper_script. 1111 func_ltwrapper_scriptname () 1112 { 1113 func_ltwrapper_scriptname_result="" 1114 if func_ltwrapper_executable_p "$1"; then 1115 func_dirname_and_basename "$1" "" "." 1116 func_stripname '' '.exe' "$func_basename_result" 1117 func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 1118 fi 1119 } 1120 1121 # func_ltwrapper_p file 1122 # True iff FILE is a libtool wrapper script or wrapper executable 1123 # This function is only a basic sanity check; it will hardly flush out 1124 # determined imposters. 1125 func_ltwrapper_p () 1126 { 1127 func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 1128 } 1129 1130 1131 # func_execute_cmds commands fail_cmd 1132 # Execute tilde-delimited COMMANDS. 1133 # If FAIL_CMD is given, eval that upon failure. 1134 # FAIL_CMD may read-access the current command in variable CMD! 1135 func_execute_cmds () 1136 { 1137 $opt_debug 1138 save_ifs=$IFS; IFS='~' 1139 for cmd in $1; do 1140 IFS=$save_ifs 1141 eval cmd=\"$cmd\" 1142 func_show_eval "$cmd" "${2-:}" 1143 done 1144 IFS=$save_ifs 1145 } 1146 1147 1148 # func_source file 1149 # Source FILE, adding directory component if necessary. 1150 # Note that it is not necessary on cygwin/mingw to append a dot to 1151 # FILE even if both FILE and FILE.exe exist: automatic-append-.exe 1152 # behavior happens only for exec(3), not for open(2)! Also, sourcing 1153 # `FILE.' does not work on cygwin managed mounts. 1154 func_source () 1155 { 1156 $opt_debug 1157 case $1 in 1158 */* | *\\*) . "$1" ;; 1159 *) . "./$1" ;; 1160 esac 1161 } 1162 1163 1164 # func_infer_tag arg 1165 # Infer tagged configuration to use if any are available and 1166 # if one wasn't chosen via the "--tag" command line option. 1167 # Only attempt this if the compiler in the base compile 1168 # command doesn't match the default compiler. 1169 # arg is usually of the form 'gcc ...' 1170 func_infer_tag () 1171 { 1172 $opt_debug 1173 if test -n "$available_tags" && test -z "$tagname"; then 1174 CC_quoted= 1175 for arg in $CC; do 1176 func_quote_for_eval "$arg" 1177 CC_quoted="$CC_quoted $func_quote_for_eval_result" 1178 done 1179 CC_expanded=`func_echo_all $CC` 1180 CC_quoted_expanded=`func_echo_all $CC_quoted` 1181 case $@ in 1182 # Blanks in the command may have been stripped by the calling shell, 1183 # but not from the CC environment variable when configure was run. 1184 " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1185 " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 1186 # Blanks at the start of $base_compile will cause this to fail 1187 # if we don't check for them as well. 1188 *) 1189 for z in $available_tags; do 1190 if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1191 # Evaluate the configuration. 1192 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1193 CC_quoted= 1194 for arg in $CC; do 1195 # Double-quote args containing other shell metacharacters. 1196 func_quote_for_eval "$arg" 1197 CC_quoted="$CC_quoted $func_quote_for_eval_result" 1198 done 1199 CC_expanded=`func_echo_all $CC` 1200 CC_quoted_expanded=`func_echo_all $CC_quoted` 1201 case "$@ " in 1202 " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1203 " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 1204 # The compiler in the base compile command matches 1205 # the one in the tagged configuration. 1206 # Assume this is the tagged configuration we want. 1207 tagname=$z 1208 break 1209 ;; 1210 esac 1211 fi 1212 done 1213 # If $tagname still isn't set, then no tagged configuration 1214 # was found and let the user know that the "--tag" command 1215 # line option must be used. 1216 if test -z "$tagname"; then 1217 func_echo "unable to infer tagged configuration" 1218 func_fatal_error "specify a tag with \`--tag'" 1219 # else 1220 # func_verbose "using $tagname tagged configuration" 1221 fi 1222 ;; 1223 esac 1224 fi 1225 } 1226 1227 1228 1229 # func_write_libtool_object output_name pic_name nonpic_name 1230 # Create a libtool object file (analogous to a ".la" file), 1231 # but don't create it if we're doing a dry run. 1232 func_write_libtool_object () 1233 { 1234 write_libobj=${1} 1235 if test "$build_libtool_libs" = yes; then 1236 write_lobj=\'${2}\' 1237 else 1238 write_lobj=none 1239 fi 1240 1241 if test "$build_old_libs" = yes; then 1242 write_oldobj=\'${3}\' 1243 else 1244 write_oldobj=none 1245 fi 1246 1247 $opt_dry_run || { 1248 cat >${write_libobj}T <<EOF 1249 # $write_libobj - a libtool object file 1250 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1251 # 1252 # Please DO NOT delete this file! 1253 # It is necessary for linking the library. 1254 1255 # Name of the PIC object. 1256 pic_object=$write_lobj 1257 1258 # Name of the non-PIC object 1259 non_pic_object=$write_oldobj 1260 1261 EOF 1262 $MV "${write_libobj}T" "${write_libobj}" 1263 } 1264 } 1265 1266 # func_mode_compile arg... 1267 func_mode_compile () 1268 { 1269 $opt_debug 1270 # Get the compilation command and the source file. 1271 base_compile= 1272 srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1273 suppress_opt=yes 1274 suppress_output= 1275 arg_mode=normal 1276 libobj= 1277 later= 1278 pie_flag= 1279 1280 for arg 1281 do 1282 case $arg_mode in 1283 arg ) 1284 # do not "continue". Instead, add this to base_compile 1285 lastarg="$arg" 1286 arg_mode=normal 1287 ;; 1288 1289 target ) 1290 libobj="$arg" 1291 arg_mode=normal 1292 continue 1293 ;; 1294 1295 normal ) 1296 # Accept any command-line options. 1297 case $arg in 1298 -o) 1299 test -n "$libobj" && \ 1300 func_fatal_error "you cannot specify \`-o' more than once" 1301 arg_mode=target 1302 continue 1303 ;; 1304 1305 -pie | -fpie | -fPIE) 1306 pie_flag="$pie_flag $arg" 1307 continue 1308 ;; 1309 1310 -shared | -static | -prefer-pic | -prefer-non-pic) 1311 later="$later $arg" 1312 continue 1313 ;; 1314 1315 -no-suppress) 1316 suppress_opt=no 1317 continue 1318 ;; 1319 1320 -Xcompiler) 1321 arg_mode=arg # the next one goes into the "base_compile" arg list 1322 continue # The current "srcfile" will either be retained or 1323 ;; # replaced later. I would guess that would be a bug. 1324 1325 -Wc,*) 1326 func_stripname '-Wc,' '' "$arg" 1327 args=$func_stripname_result 1328 lastarg= 1329 save_ifs="$IFS"; IFS=',' 1330 for arg in $args; do 1331 IFS="$save_ifs" 1332 func_quote_for_eval "$arg" 1333 lastarg="$lastarg $func_quote_for_eval_result" 1334 done 1335 IFS="$save_ifs" 1336 func_stripname ' ' '' "$lastarg" 1337 lastarg=$func_stripname_result 1338 1339 # Add the arguments to base_compile. 1340 base_compile="$base_compile $lastarg" 1341 continue 1342 ;; 1343 1344 *) 1345 # Accept the current argument as the source file. 1346 # The previous "srcfile" becomes the current argument. 1347 # 1348 lastarg="$srcfile" 1349 srcfile="$arg" 1350 ;; 1351 esac # case $arg 1352 ;; 1353 esac # case $arg_mode 1354 1355 # Aesthetically quote the previous argument. 1356 func_quote_for_eval "$lastarg" 1357 base_compile="$base_compile $func_quote_for_eval_result" 1358 done # for arg 1359 1360 case $arg_mode in 1361 arg) 1362 func_fatal_error "you must specify an argument for -Xcompile" 1363 ;; 1364 target) 1365 func_fatal_error "you must specify a target with \`-o'" 1366 ;; 1367 *) 1368 # Get the name of the library object. 1369 test -z "$libobj" && { 1370 func_basename "$srcfile" 1371 libobj="$func_basename_result" 1372 } 1373 ;; 1374 esac 1375 1376 # Recognize several different file suffixes. 1377 # If the user specifies -o file.o, it is replaced with file.lo 1378 case $libobj in 1379 *.[cCFSifmso] | \ 1380 *.ada | *.adb | *.ads | *.asm | \ 1381 *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 1382 *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) 1383 func_xform "$libobj" 1384 libobj=$func_xform_result 1385 ;; 1386 esac 1387 1388 case $libobj in 1389 *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 1390 *) 1391 func_fatal_error "cannot determine name of library object from \`$libobj'" 1392 ;; 1393 esac 1394 1395 func_infer_tag $base_compile 1396 1397 for arg in $later; do 1398 case $arg in 1399 -shared) 1400 test "$build_libtool_libs" != yes && \ 1401 func_fatal_configuration "can not build a shared library" 1402 build_old_libs=no 1403 continue 1404 ;; 1405 1406 -static) 1407 build_libtool_libs=no 1408 build_old_libs=yes 1409 continue 1410 ;; 1411 1412 -prefer-pic) 1413 pic_mode=yes 1414 continue 1415 ;; 1416 1417 -prefer-non-pic) 1418 pic_mode=no 1419 continue 1420 ;; 1421 esac 1422 done 1423 1424 func_quote_for_eval "$libobj" 1425 test "X$libobj" != "X$func_quote_for_eval_result" \ 1426 && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 1427 && func_warning "libobj name \`$libobj' may not contain shell special characters." 1428 func_dirname_and_basename "$obj" "/" "" 1429 objname="$func_basename_result" 1430 xdir="$func_dirname_result" 1431 lobj=${xdir}$objdir/$objname 1432 1433 test -z "$base_compile" && \ 1434 func_fatal_help "you must specify a compilation command" 1435 1436 # Delete any leftover library objects. 1437 if test "$build_old_libs" = yes; then 1438 removelist="$obj $lobj $libobj ${libobj}T" 1439 else 1440 removelist="$lobj $libobj ${libobj}T" 1441 fi 1442 1443 # On Cygwin there's no "real" PIC flag so we must build both object types 1444 case $host_os in 1445 cygwin* | mingw* | pw32* | os2* | cegcc*) 1446 pic_mode=default 1447 ;; 1448 esac 1449 if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 1450 # non-PIC code in shared libraries is not supported 1451 pic_mode=default 1452 fi 1453 1454 # Calculate the filename of the output object if compiler does 1455 # not support -o with -c 1456 if test "$compiler_c_o" = no; then 1457 output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 1458 lockfile="$output_obj.lock" 1459 else 1460 output_obj= 1461 need_locks=no 1462 lockfile= 1463 fi 1464 1465 # Lock this critical section if it is needed 1466 # We use this script file to make the link, it avoids creating a new file 1467 if test "$need_locks" = yes; then 1468 until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 1469 func_echo "Waiting for $lockfile to be removed" 1470 sleep 2 1471 done 1472 elif test "$need_locks" = warn; then 1473 if test -f "$lockfile"; then 1474 $ECHO "\ 1475 *** ERROR, $lockfile exists and contains: 1476 `cat $lockfile 2>/dev/null` 1477 1478 This indicates that another process is trying to use the same 1479 temporary object file, and libtool could not work around it because 1480 your compiler does not support \`-c' and \`-o' together. If you 1481 repeat this compilation, it may succeed, by chance, but you had better 1482 avoid parallel builds (make -j) in this platform, or get a better 1483 compiler." 1484 1485 $opt_dry_run || $RM $removelist 1486 exit $EXIT_FAILURE 1487 fi 1488 removelist="$removelist $output_obj" 1489 $ECHO "$srcfile" > "$lockfile" 1490 fi 1491 1492 $opt_dry_run || $RM $removelist 1493 removelist="$removelist $lockfile" 1494 trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 1495 1496 if test -n "$fix_srcfile_path"; then 1497 eval srcfile=\"$fix_srcfile_path\" 1498 fi 1499 func_quote_for_eval "$srcfile" 1500 qsrcfile=$func_quote_for_eval_result 1501 1502 # Only build a PIC object if we are building libtool libraries. 1503 if test "$build_libtool_libs" = yes; then 1504 # Without this assignment, base_compile gets emptied. 1505 fbsd_hideous_sh_bug=$base_compile 1506 1507 if test "$pic_mode" != no; then 1508 command="$base_compile $qsrcfile $pic_flag" 1509 else 1510 # Don't build PIC code 1511 command="$base_compile $qsrcfile" 1512 fi 1513 1514 func_mkdir_p "$xdir$objdir" 1515 1516 if test -z "$output_obj"; then 1517 # Place PIC objects in $objdir 1518 command="$command -o $lobj" 1519 fi 1520 1521 func_show_eval_locale "$command" \ 1522 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 1523 1524 if test "$need_locks" = warn && 1525 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1526 $ECHO "\ 1527 *** ERROR, $lockfile contains: 1528 `cat $lockfile 2>/dev/null` 1529 1530 but it should contain: 1531 $srcfile 1532 1533 This indicates that another process is trying to use the same 1534 temporary object file, and libtool could not work around it because 1535 your compiler does not support \`-c' and \`-o' together. If you 1536 repeat this compilation, it may succeed, by chance, but you had better 1537 avoid parallel builds (make -j) in this platform, or get a better 1538 compiler." 1539 1540 $opt_dry_run || $RM $removelist 1541 exit $EXIT_FAILURE 1542 fi 1543 1544 # Just move the object if needed, then go on to compile the next one 1545 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 1546 func_show_eval '$MV "$output_obj" "$lobj"' \ 1547 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 1548 fi 1549 1550 # Allow error messages only from the first compilation. 1551 if test "$suppress_opt" = yes; then 1552 suppress_output=' >/dev/null 2>&1' 1553 fi 1554 fi 1555 1556 # Only build a position-dependent object if we build old libraries. 1557 if test "$build_old_libs" = yes; then 1558 if test "$pic_mode" != yes; then 1559 # Don't build PIC code 1560 command="$base_compile $qsrcfile$pie_flag" 1561 else 1562 command="$base_compile $qsrcfile $pic_flag" 1563 fi 1564 if test "$compiler_c_o" = yes; then 1565 command="$command -o $obj" 1566 fi 1567 1568 # Suppress compiler output if we already did a PIC compilation. 1569 command="$command$suppress_output" 1570 func_show_eval_locale "$command" \ 1571 '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1572 1573 if test "$need_locks" = warn && 1574 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 1575 $ECHO "\ 1576 *** ERROR, $lockfile contains: 1577 `cat $lockfile 2>/dev/null` 1578 1579 but it should contain: 1580 $srcfile 1581 1582 This indicates that another process is trying to use the same 1583 temporary object file, and libtool could not work around it because 1584 your compiler does not support \`-c' and \`-o' together. If you 1585 repeat this compilation, it may succeed, by chance, but you had better 1586 avoid parallel builds (make -j) in this platform, or get a better 1587 compiler." 1588 1589 $opt_dry_run || $RM $removelist 1590 exit $EXIT_FAILURE 1591 fi 1592 1593 # Just move the object if needed 1594 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 1595 func_show_eval '$MV "$output_obj" "$obj"' \ 1596 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 1597 fi 1598 fi 1599 1600 $opt_dry_run || { 1601 func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 1602 1603 # Unlock the critical section if it was locked 1604 if test "$need_locks" != no; then 1605 removelist=$lockfile 1606 $RM "$lockfile" 1607 fi 1608 } 1609 1610 exit $EXIT_SUCCESS 1611 } 1612 1613 $opt_help || { 1614 test "$mode" = compile && func_mode_compile ${1+"$@"} 1615 } 1616 1617 func_mode_help () 1618 { 1619 # We need to display help for each of the modes. 1620 case $mode in 1621 "") 1622 # Generic help is extracted from the usage comments 1623 # at the start of this file. 1624 func_help 1625 ;; 1626 1627 clean) 1628 $ECHO \ 1629 "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 1630 1631 Remove files from the build directory. 1632 1633 RM is the name of the program to use to delete files associated with each FILE 1634 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 1635 to RM. 1636 1637 If FILE is a libtool library, object or program, all the files associated 1638 with it are deleted. Otherwise, only FILE itself is deleted using RM." 1639 ;; 1640 1641 compile) 1642 $ECHO \ 1643 "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 1644 1645 Compile a source file into a libtool library object. 1646 1647 This mode accepts the following additional options: 1648 1649 -o OUTPUT-FILE set the output file name to OUTPUT-FILE 1650 -no-suppress do not suppress compiler output for multiple passes 1651 -prefer-pic try to build PIC objects only 1652 -prefer-non-pic try to build non-PIC objects only 1653 -shared do not build a \`.o' file suitable for static linking 1654 -static only build a \`.o' file suitable for static linking 1655 -Wc,FLAG pass FLAG directly to the compiler 1656 1657 COMPILE-COMMAND is a command to be used in creating a \`standard' object file 1658 from the given SOURCEFILE. 1659 1660 The output file name is determined by removing the directory component from 1661 SOURCEFILE, then substituting the C source code suffix \`.c' with the 1662 library object suffix, \`.lo'." 1663 ;; 1664 1665 execute) 1666 $ECHO \ 1667 "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 1668 1669 Automatically set library path, then run a program. 1670 1671 This mode accepts the following additional options: 1672 1673 -dlopen FILE add the directory containing FILE to the library path 1674 1675 This mode sets the library path environment variable according to \`-dlopen' 1676 flags. 1677 1678 If any of the ARGS are libtool executable wrappers, then they are translated 1679 into their corresponding uninstalled binary, and any of their required library 1680 directories are added to the library path. 1681 1682 Then, COMMAND is executed, with ARGS as arguments." 1683 ;; 1684 1685 finish) 1686 $ECHO \ 1687 "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 1688 1689 Complete the installation of libtool libraries. 1690 1691 Each LIBDIR is a directory that contains libtool libraries. 1692 1693 The commands that this mode executes may require superuser privileges. Use 1694 the \`--dry-run' option if you just want to see what would be executed." 1695 ;; 1696 1697 install) 1698 $ECHO \ 1699 "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 1700 1701 Install executables or libraries. 1702 1703 INSTALL-COMMAND is the installation command. The first component should be 1704 either the \`install' or \`cp' program. 1705 1706 The following components of INSTALL-COMMAND are treated specially: 1707 1708 -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 1709 1710 The rest of the components are interpreted as arguments to that command (only 1711 BSD-compatible install options are recognized)." 1712 ;; 1713 1714 link) 1715 $ECHO \ 1716 "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 1717 1718 Link object files or libraries together to form another library, or to 1719 create an executable program. 1720 1721 LINK-COMMAND is a command using the C compiler that you would use to create 1722 a program from several object files. 1723 1724 The following components of LINK-COMMAND are treated specially: 1725 1726 -all-static do not do any dynamic linking at all 1727 -avoid-version do not add a version suffix if possible 1728 -bindir BINDIR specify path to binaries directory (for systems where 1729 libraries must be found in the PATH setting at runtime) 1730 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 1731 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 1732 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 1733 -export-symbols SYMFILE 1734 try to export only the symbols listed in SYMFILE 1735 -export-symbols-regex REGEX 1736 try to export only the symbols matching REGEX 1737 -LLIBDIR search LIBDIR for required installed libraries 1738 -lNAME OUTPUT-FILE requires the installed library libNAME 1739 -module build a library that can dlopened 1740 -no-fast-install disable the fast-install mode 1741 -no-install link a not-installable executable 1742 -no-undefined declare that a library does not refer to external symbols 1743 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 1744 -objectlist FILE Use a list of object files found in FILE to specify objects 1745 -precious-files-regex REGEX 1746 don't remove output files matching REGEX 1747 -release RELEASE specify package release information 1748 -rpath LIBDIR the created library will eventually be installed in LIBDIR 1749 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 1750 -shared only do dynamic linking of libtool libraries 1751 -shrext SUFFIX override the standard shared library file extension 1752 -static do not do any dynamic linking of uninstalled libtool libraries 1753 -static-libtool-libs 1754 do not do any dynamic linking of libtool libraries 1755 -version-info CURRENT[:REVISION[:AGE]] 1756 specify library version info [each variable defaults to 0] 1757 -weak LIBNAME declare that the target provides the LIBNAME interface 1758 -Wc,FLAG 1759 -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 1760 -Wl,FLAG 1761 -Xlinker FLAG pass linker-specific FLAG directly to the linker 1762 -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 1763 1764 All other options (arguments beginning with \`-') are ignored. 1765 1766 Every other argument is treated as a filename. Files ending in \`.la' are 1767 treated as uninstalled libtool libraries, other files are standard or library 1768 object files. 1769 1770 If the OUTPUT-FILE ends in \`.la', then a libtool library is created, 1771 only library objects (\`.lo' files) may be specified, and \`-rpath' is 1772 required, except when creating a convenience library. 1773 1774 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 1775 using \`ar' and \`ranlib', or on Windows using \`lib'. 1776 1777 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 1778 is created, otherwise an executable program is created." 1779 ;; 1780 1781 uninstall) 1782 $ECHO \ 1783 "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 1784 1785 Remove libraries from an installation directory. 1786 1787 RM is the name of the program to use to delete files associated with each FILE 1788 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 1789 to RM. 1790 1791 If FILE is a libtool library, all the files associated with it are deleted. 1792 Otherwise, only FILE itself is deleted using RM." 1793 ;; 1794 1795 *) 1796 func_fatal_help "invalid operation mode \`$mode'" 1797 ;; 1798 esac 1799 1800 echo 1801 $ECHO "Try \`$progname --help' for more information about other modes." 1802 } 1803 1804 # Now that we've collected a possible --mode arg, show help if necessary 1805 if $opt_help; then 1806 if test "$opt_help" = :; then 1807 func_mode_help 1808 else 1809 { 1810 func_help noexit 1811 for mode in compile link execute install finish uninstall clean; do 1812 func_mode_help 1813 done 1814 } | sed -n '1p; 2,$s/^Usage:/ or: /p' 1815 { 1816 func_help noexit 1817 for mode in compile link execute install finish uninstall clean; do 1818 echo 1819 func_mode_help 1820 done 1821 } | 1822 sed '1d 1823 /^When reporting/,/^Report/{ 1824 H 1825 d 1826 } 1827 $x 1828 /information about other modes/d 1829 /more detailed .*MODE/d 1830 s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 1831 fi 1832 exit $? 1833 fi 1834 1835 1836 # func_mode_execute arg... 1837 func_mode_execute () 1838 { 1839 $opt_debug 1840 # The first argument is the command name. 1841 cmd="$nonopt" 1842 test -z "$cmd" && \ 1843 func_fatal_help "you must specify a COMMAND" 1844 1845 # Handle -dlopen flags immediately. 1846 for file in $execute_dlfiles; do 1847 test -f "$file" \ 1848 || func_fatal_help "\`$file' is not a file" 1849 1850 dir= 1851 case $file in 1852 *.la) 1853 # Check to see that this really is a libtool archive. 1854 func_lalib_unsafe_p "$file" \ 1855 || func_fatal_help "\`$lib' is not a valid libtool archive" 1856 1857 # Read the libtool library. 1858 dlname= 1859 library_names= 1860 func_source "$file" 1861 1862 # Skip this library if it cannot be dlopened. 1863 if test -z "$dlname"; then 1864 # Warn if it was a shared library. 1865 test -n "$library_names" && \ 1866 func_warning "\`$file' was not linked with \`-export-dynamic'" 1867 continue 1868 fi 1869 1870 func_dirname "$file" "" "." 1871 dir="$func_dirname_result" 1872 1873 if test -f "$dir/$objdir/$dlname"; then 1874 dir="$dir/$objdir" 1875 else 1876 if test ! -f "$dir/$dlname"; then 1877 func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1878 fi 1879 fi 1880 ;; 1881 1882 *.lo) 1883 # Just add the directory containing the .lo file. 1884 func_dirname "$file" "" "." 1885 dir="$func_dirname_result" 1886 ;; 1887 1888 *) 1889 func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 1890 continue 1891 ;; 1892 esac 1893 1894 # Get the absolute pathname. 1895 absdir=`cd "$dir" && pwd` 1896 test -n "$absdir" && dir="$absdir" 1897 1898 # Now add the directory to shlibpath_var. 1899 if eval "test -z \"\$$shlibpath_var\""; then 1900 eval "$shlibpath_var=\"\$dir\"" 1901 else 1902 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 1903 fi 1904 done 1905 1906 # This variable tells wrapper scripts just to set shlibpath_var 1907 # rather than running their programs. 1908 libtool_execute_magic="$magic" 1909 1910 # Check if any of the arguments is a wrapper script. 1911 args= 1912 for file 1913 do 1914 case $file in 1915 -* | *.la | *.lo ) ;; 1916 *) 1917 # Do a test to see if this is really a libtool program. 1918 if func_ltwrapper_script_p "$file"; then 1919 func_source "$file" 1920 # Transform arg to wrapped name. 1921 file="$progdir/$program" 1922 elif func_ltwrapper_executable_p "$file"; then 1923 func_ltwrapper_scriptname "$file" 1924 func_source "$func_ltwrapper_scriptname_result" 1925 # Transform arg to wrapped name. 1926 file="$progdir/$program" 1927 fi 1928 ;; 1929 esac 1930 # Quote arguments (to preserve shell metacharacters). 1931 func_quote_for_eval "$file" 1932 args="$args $func_quote_for_eval_result" 1933 done 1934 1935 if test "X$opt_dry_run" = Xfalse; then 1936 if test -n "$shlibpath_var"; then 1937 # Export the shlibpath_var. 1938 eval "export $shlibpath_var" 1939 fi 1940 1941 # Restore saved environment variables 1942 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 1943 do 1944 eval "if test \"\${save_$lt_var+set}\" = set; then 1945 $lt_var=\$save_$lt_var; export $lt_var 1946 else 1947 $lt_unset $lt_var 1948 fi" 1949 done 1950 1951 # Now prepare to actually exec the command. 1952 exec_cmd="\$cmd$args" 1953 else 1954 # Display what would be done. 1955 if test -n "$shlibpath_var"; then 1956 eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 1957 echo "export $shlibpath_var" 1958 fi 1959 $ECHO "$cmd$args" 1960 exit $EXIT_SUCCESS 1961 fi 1962 } 1963 1964 test "$mode" = execute && func_mode_execute ${1+"$@"} 1965 1966 1967 # func_mode_finish arg... 1968 func_mode_finish () 1969 { 1970 $opt_debug 1971 libdirs="$nonopt" 1972 admincmds= 1973 1974 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 1975 for dir 1976 do 1977 libdirs="$libdirs $dir" 1978 done 1979 1980 for libdir in $libdirs; do 1981 if test -n "$finish_cmds"; then 1982 # Do each command in the finish commands. 1983 func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 1984 '"$cmd"'"' 1985 fi 1986 if test -n "$finish_eval"; then 1987 # Do the single finish_eval. 1988 eval cmds=\"$finish_eval\" 1989 $opt_dry_run || eval "$cmds" || admincmds="$admincmds 1990 $cmds" 1991 fi 1992 done 1993 fi 1994 1995 # Exit here if they wanted silent mode. 1996 $opt_silent && exit $EXIT_SUCCESS 1997 1998 echo "----------------------------------------------------------------------" 1999 echo "Libraries have been installed in:" 2000 for libdir in $libdirs; do 2001 $ECHO " $libdir" 2002 done 2003 echo 2004 echo "If you ever happen to want to link against installed libraries" 2005 echo "in a given directory, LIBDIR, you must either use libtool, and" 2006 echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 2007 echo "flag during linking and do at least one of the following:" 2008 if test -n "$shlibpath_var"; then 2009 echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2010 echo " during execution" 2011 fi 2012 if test -n "$runpath_var"; then 2013 echo " - add LIBDIR to the \`$runpath_var' environment variable" 2014 echo " during linking" 2015 fi 2016 if test -n "$hardcode_libdir_flag_spec"; then 2017 libdir=LIBDIR 2018 eval flag=\"$hardcode_libdir_flag_spec\" 2019 2020 $ECHO " - use the \`$flag' linker flag" 2021 fi 2022 if test -n "$admincmds"; then 2023 $ECHO " - have your system administrator run these commands:$admincmds" 2024 fi 2025 if test -f /etc/ld.so.conf; then 2026 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2027 fi 2028 echo 2029 2030 echo "See any operating system documentation about shared libraries for" 2031 case $host in 2032 solaris2.[6789]|solaris2.1[0-9]) 2033 echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 2034 echo "pages." 2035 ;; 2036 *) 2037 echo "more information, such as the ld(1) and ld.so(8) manual pages." 2038 ;; 2039 esac 2040 echo "----------------------------------------------------------------------" 2041 exit $EXIT_SUCCESS 2042 } 2043 2044 test "$mode" = finish && func_mode_finish ${1+"$@"} 2045 2046 2047 # func_mode_install arg... 2048 func_mode_install () 2049 { 2050 $opt_debug 2051 # There may be an optional sh(1) argument at the beginning of 2052 # install_prog (especially on Windows NT). 2053 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 2054 # Allow the use of GNU shtool's install command. 2055 case $nonopt in *shtool*) :;; *) false;; esac; then 2056 # Aesthetically quote it. 2057 func_quote_for_eval "$nonopt" 2058 install_prog="$func_quote_for_eval_result " 2059 arg=$1 2060 shift 2061 else 2062 install_prog= 2063 arg=$nonopt 2064 fi 2065 2066 # The real first argument should be the name of the installation program. 2067 # Aesthetically quote it. 2068 func_quote_for_eval "$arg" 2069 install_prog="$install_prog$func_quote_for_eval_result" 2070 install_shared_prog=$install_prog 2071 case " $install_prog " in 2072 *[\\\ /]cp\ *) install_cp=: ;; 2073 *) install_cp=false ;; 2074 esac 2075 2076 # We need to accept at least all the BSD install flags. 2077 dest= 2078 files= 2079 opts= 2080 prev= 2081 install_type= 2082 isdir=no 2083 stripme= 2084 no_mode=: 2085 for arg 2086 do 2087 arg2= 2088 if test -n "$dest"; then 2089 files="$files $dest" 2090 dest=$arg 2091 continue 2092 fi 2093 2094 case $arg in 2095 -d) isdir=yes ;; 2096 -f) 2097 if $install_cp; then :; else 2098 prev=$arg 2099 fi 2100 ;; 2101 -g | -m | -o) 2102 prev=$arg 2103 ;; 2104 -s) 2105 stripme=" -s" 2106 continue 2107 ;; 2108 -*) 2109 ;; 2110 *) 2111 # If the previous option needed an argument, then skip it. 2112 if test -n "$prev"; then 2113 if test "x$prev" = x-m && test -n "$install_override_mode"; then 2114 arg2=$install_override_mode 2115 no_mode=false 2116 fi 2117 prev= 2118 else 2119 dest=$arg 2120 continue 2121 fi 2122 ;; 2123 esac 2124 2125 # Aesthetically quote the argument. 2126 func_quote_for_eval "$arg" 2127 install_prog="$install_prog $func_quote_for_eval_result" 2128 if test -n "$arg2"; then 2129 func_quote_for_eval "$arg2" 2130 fi 2131 install_shared_prog="$install_shared_prog $func_quote_for_eval_result" 2132 done 2133 2134 test -z "$install_prog" && \ 2135 func_fatal_help "you must specify an install program" 2136 2137 test -n "$prev" && \ 2138 func_fatal_help "the \`$prev' option requires an argument" 2139 2140 if test -n "$install_override_mode" && $no_mode; then 2141 if $install_cp; then :; else 2142 func_quote_for_eval "$install_override_mode" 2143 install_shared_prog="$install_shared_prog -m $func_quote_for_eval_result" 2144 fi 2145 fi 2146 2147 if test -z "$files"; then 2148 if test -z "$dest"; then 2149 func_fatal_help "no file or destination specified" 2150 else 2151 func_fatal_help "you must specify a destination" 2152 fi 2153 fi 2154 2155 # Strip any trailing slash from the destination. 2156 func_stripname '' '/' "$dest" 2157 dest=$func_stripname_result 2158 2159 # Check to see that the destination is a directory. 2160 test -d "$dest" && isdir=yes 2161 if test "$isdir" = yes; then 2162 destdir="$dest" 2163 destname= 2164 else 2165 func_dirname_and_basename "$dest" "" "." 2166 destdir="$func_dirname_result" 2167 destname="$func_basename_result" 2168 2169 # Not a directory, so check to see that there is only one file specified. 2170 set dummy $files; shift 2171 test "$#" -gt 1 && \ 2172 func_fatal_help "\`$dest' is not a directory" 2173 fi 2174 case $destdir in 2175 [\\/]* | [A-Za-z]:[\\/]*) ;; 2176 *) 2177 for file in $files; do 2178 case $file in 2179 *.lo) ;; 2180 *) 2181 func_fatal_help "\`$destdir' must be an absolute directory name" 2182 ;; 2183 esac 2184 done 2185 ;; 2186 esac 2187 2188 # This variable tells wrapper scripts just to set variables rather 2189 # than running their programs. 2190 libtool_install_magic="$magic" 2191 2192 staticlibs= 2193 future_libdirs= 2194 current_libdirs= 2195 for file in $files; do 2196 2197 # Do each installation. 2198 case $file in 2199 *.$libext) 2200 # Do the static libraries later. 2201 staticlibs="$staticlibs $file" 2202 ;; 2203 2204 *.la) 2205 # Check to see that this really is a libtool archive. 2206 func_lalib_unsafe_p "$file" \ 2207 || func_fatal_help "\`$file' is not a valid libtool archive" 2208 2209 library_names= 2210 old_library= 2211 relink_command= 2212 func_source "$file" 2213 2214 # Add the libdir to current_libdirs if it is the destination. 2215 if test "X$destdir" = "X$libdir"; then 2216 case "$current_libdirs " in 2217 *" $libdir "*) ;; 2218 *) current_libdirs="$current_libdirs $libdir" ;; 2219 esac 2220 else 2221 # Note the libdir as a future libdir. 2222 case "$future_libdirs " in 2223 *" $libdir "*) ;; 2224 *) future_libdirs="$future_libdirs $libdir" ;; 2225 esac 2226 fi 2227 2228 func_dirname "$file" "/" "" 2229 dir="$func_dirname_result" 2230 dir="$dir$objdir" 2231 2232 if test -n "$relink_command"; then 2233 # Determine the prefix the user has applied to our future dir. 2234 inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 2235 2236 # Don't allow the user to place us outside of our expected 2237 # location b/c this prevents finding dependent libraries that 2238 # are installed to the same prefix. 2239 # At present, this check doesn't affect windows .dll's that 2240 # are installed into $libdir/../bin (currently, that works fine) 2241 # but it's something to keep an eye on. 2242 test "$inst_prefix_dir" = "$destdir" && \ 2243 func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2244 2245 if test -n "$inst_prefix_dir"; then 2246 # Stick the inst_prefix_dir data into the link command. 2247 relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2248 else 2249 relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2250 fi 2251 2252 func_warning "relinking \`$file'" 2253 func_show_eval "$relink_command" \ 2254 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2255 fi 2256 2257 # See the names of the shared library. 2258 set dummy $library_names; shift 2259 if test -n "$1"; then 2260 realname="$1" 2261 shift 2262 2263 srcname="$realname" 2264 test -n "$relink_command" && srcname="$realname"T 2265 2266 # Install the shared library and build the symlinks. 2267 func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 2268 'exit $?' 2269 tstripme="$stripme" 2270 case $host_os in 2271 cygwin* | mingw* | pw32* | cegcc*) 2272 case $realname in 2273 *.dll.a) 2274 tstripme="" 2275 ;; 2276 esac 2277 ;; 2278 esac 2279 if test -n "$tstripme" && test -n "$striplib"; then 2280 func_show_eval "$striplib $destdir/$realname" 'exit $?' 2281 fi 2282 2283 if test "$#" -gt 0; then 2284 # Delete the old symlinks, and create new ones. 2285 # Try `ln -sf' first, because the `ln' binary might depend on 2286 # the symlink we replace! Solaris /bin/ln does not understand -f, 2287 # so we also need to try rm && ln -s. 2288 for linkname 2289 do 2290 test "$linkname" != "$realname" \ 2291 && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 2292 done 2293 fi 2294 2295 # Do each command in the postinstall commands. 2296 lib="$destdir/$realname" 2297 func_execute_cmds "$postinstall_cmds" 'exit $?' 2298 fi 2299 2300 # Install the pseudo-library for information purposes. 2301 func_basename "$file" 2302 name="$func_basename_result" 2303 instname="$dir/$name"i 2304 func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 2305 2306 # Maybe install the static library, too. 2307 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" 2308 ;; 2309 2310 *.lo) 2311 # Install (i.e. copy) a libtool object. 2312 2313 # Figure out destination file name, if it wasn't already specified. 2314 if test -n "$destname"; then 2315 destfile="$destdir/$destname" 2316 else 2317 func_basename "$file" 2318 destfile="$func_basename_result" 2319 destfile="$destdir/$destfile" 2320 fi 2321 2322 # Deduce the name of the destination old-style object file. 2323 case $destfile in 2324 *.lo) 2325 func_lo2o "$destfile" 2326 staticdest=$func_lo2o_result 2327 ;; 2328 *.$objext) 2329 staticdest="$destfile" 2330 destfile= 2331 ;; 2332 *) 2333 func_fatal_help "cannot copy a libtool object to \`$destfile'" 2334 ;; 2335 esac 2336 2337 # Install the libtool object if requested. 2338 test -n "$destfile" && \ 2339 func_show_eval "$install_prog $file $destfile" 'exit $?' 2340 2341 # Install the old object if enabled. 2342 if test "$build_old_libs" = yes; then 2343 # Deduce the name of the old-style object file. 2344 func_lo2o "$file" 2345 staticobj=$func_lo2o_result 2346 func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 2347 fi 2348 exit $EXIT_SUCCESS 2349 ;; 2350 2351 *) 2352 # Figure out destination file name, if it wasn't already specified. 2353 if test -n "$destname"; then 2354 destfile="$destdir/$destname" 2355 else 2356 func_basename "$file" 2357 destfile="$func_basename_result" 2358 destfile="$destdir/$destfile" 2359 fi 2360 2361 # If the file is missing, and there is a .exe on the end, strip it 2362 # because it is most likely a libtool script we actually want to 2363 # install 2364 stripped_ext="" 2365 case $file in 2366 *.exe) 2367 if test ! -f "$file"; then 2368 func_stripname '' '.exe' "$file" 2369 file=$func_stripname_result 2370 stripped_ext=".exe" 2371 fi 2372 ;; 2373 esac 2374 2375 # Do a test to see if this is really a libtool program. 2376 case $host in 2377 *cygwin* | *mingw*) 2378 if func_ltwrapper_executable_p "$file"; then 2379 func_ltwrapper_scriptname "$file" 2380 wrapper=$func_ltwrapper_scriptname_result 2381 else 2382 func_stripname '' '.exe' "$file" 2383 wrapper=$func_stripname_result 2384 fi 2385 ;; 2386 *) 2387 wrapper=$file 2388 ;; 2389 esac 2390 if func_ltwrapper_script_p "$wrapper"; then 2391 notinst_deplibs= 2392 relink_command= 2393 2394 func_source "$wrapper" 2395 2396 # Check the variables that should have been set. 2397 test -z "$generated_by_libtool_version" && \ 2398 func_fatal_error "invalid libtool wrapper script \`$wrapper'" 2399 2400 finalize=yes 2401 for lib in $notinst_deplibs; do 2402 # Check to see that each library is installed. 2403 libdir= 2404 if test -f "$lib"; then 2405 func_source "$lib" 2406 fi 2407 libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 2408 if test -n "$libdir" && test ! -f "$libfile"; then 2409 func_warning "\`$lib' has not been installed in \`$libdir'" 2410 finalize=no 2411 fi 2412 done 2413 2414 relink_command= 2415 func_source "$wrapper" 2416 2417 outputname= 2418 if test "$fast_install" = no && test -n "$relink_command"; then 2419 $opt_dry_run || { 2420 if test "$finalize" = yes; then 2421 tmpdir=`func_mktempdir` 2422 func_basename "$file$stripped_ext" 2423 file="$func_basename_result" 2424 outputname="$tmpdir/$file" 2425 # Replace the output file specification. 2426 relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 2427 2428 $opt_silent || { 2429 func_quote_for_expand "$relink_command" 2430 eval "func_echo $func_quote_for_expand_result" 2431 } 2432 if eval "$relink_command"; then : 2433 else 2434 func_error "error: relink \`$file' with the above command before installing it" 2435 $opt_dry_run || ${RM}r "$tmpdir" 2436 continue 2437 fi 2438 file="$outputname" 2439 else 2440 func_warning "cannot relink \`$file'" 2441 fi 2442 } 2443 else 2444 # Install the binary that we compiled earlier. 2445 file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 2446 fi 2447 fi 2448 2449 # remove .exe since cygwin /usr/bin/install will append another 2450 # one anyway 2451 case $install_prog,$host in 2452 */usr/bin/install*,*cygwin*) 2453 case $file:$destfile in 2454 *.exe:*.exe) 2455 # this is ok 2456 ;; 2457 *.exe:*) 2458 destfile=$destfile.exe 2459 ;; 2460 *:*.exe) 2461 func_stripname '' '.exe' "$destfile" 2462 destfile=$func_stripname_result 2463 ;; 2464 esac 2465 ;; 2466 esac 2467 func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 2468 $opt_dry_run || if test -n "$outputname"; then 2469 ${RM}r "$tmpdir" 2470 fi 2471 ;; 2472 esac 2473 done 2474 2475 for file in $staticlibs; do 2476 func_basename "$file" 2477 name="$func_basename_result" 2478 2479 # Set up the ranlib parameters. 2480 oldlib="$destdir/$name" 2481 2482 func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 2483 2484 if test -n "$stripme" && test -n "$old_striplib"; then 2485 func_show_eval "$old_striplib $oldlib" 'exit $?' 2486 fi 2487 2488 # Do each command in the postinstall commands. 2489 func_execute_cmds "$old_postinstall_cmds" 'exit $?' 2490 done 2491 2492 test -n "$future_libdirs" && \ 2493 func_warning "remember to run \`$progname --finish$future_libdirs'" 2494 2495 if test -n "$current_libdirs"; then 2496 # Maybe just do a dry run. 2497 $opt_dry_run && current_libdirs=" -n$current_libdirs" 2498 exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 2499 else 2500 exit $EXIT_SUCCESS 2501 fi 2502 } 2503 2504 test "$mode" = install && func_mode_install ${1+"$@"} 2505 2506 2507 # func_generate_dlsyms outputname originator pic_p 2508 # Extract symbols from dlprefiles and create ${outputname}S.o with 2509 # a dlpreopen symbol table. 2510 func_generate_dlsyms () 2511 { 2512 $opt_debug 2513 my_outputname="$1" 2514 my_originator="$2" 2515 my_pic_p="${3-no}" 2516 my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 2517 my_dlsyms= 2518 2519 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 2520 if test -n "$NM" && test -n "$global_symbol_pipe"; then 2521 my_dlsyms="${my_outputname}S.c" 2522 else 2523 func_error "not configured to extract global symbols from dlpreopened files" 2524 fi 2525 fi 2526 2527 if test -n "$my_dlsyms"; then 2528 case $my_dlsyms in 2529 "") ;; 2530 *.c) 2531 # Discover the nlist of each of the dlfiles. 2532 nlist="$output_objdir/${my_outputname}.nm" 2533 2534 func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 2535 2536 # Parse the name list into a source file. 2537 func_verbose "creating $output_objdir/$my_dlsyms" 2538 2539 $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 2540 /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 2541 /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 2542 2543 #ifdef __cplusplus 2544 extern \"C\" { 2545 #endif 2546 2547 #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 2548 #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 2549 #endif 2550 2551 /* External symbol declarations for the compiler. */\ 2552 " 2553 2554 if test "$dlself" = yes; then 2555 func_verbose "generating symbol list for \`$output'" 2556 2557 $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 2558 2559 # Add our own program objects to the symbol list. 2560 progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 2561 for progfile in $progfiles; do 2562 func_verbose "extracting global C symbols from \`$progfile'" 2563 $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" 2564 done 2565 2566 if test -n "$exclude_expsyms"; then 2567 $opt_dry_run || { 2568 eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 2569 eval '$MV "$nlist"T "$nlist"' 2570 } 2571 fi 2572 2573 if test -n "$export_symbols_regex"; then 2574 $opt_dry_run || { 2575 eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 2576 eval '$MV "$nlist"T "$nlist"' 2577 } 2578 fi 2579 2580 # Prepare the list of exported symbols 2581 if test -z "$export_symbols"; then 2582 export_symbols="$output_objdir/$outputname.exp" 2583 $opt_dry_run || { 2584 $RM $export_symbols 2585 eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 2586 case $host in 2587 *cygwin* | *mingw* | *cegcc* ) 2588 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 2589 eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 2590 ;; 2591 esac 2592 } 2593 else 2594 $opt_dry_run || { 2595 eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 2596 eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 2597 eval '$MV "$nlist"T "$nlist"' 2598 case $host in 2599 *cygwin* | *mingw* | *cegcc* ) 2600 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 2601 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 2602 ;; 2603 esac 2604 } 2605 fi 2606 fi 2607 2608 for dlprefile in $dlprefiles; do 2609 func_verbose "extracting global C symbols from \`$dlprefile'" 2610 func_basename "$dlprefile" 2611 name="$func_basename_result" 2612 $opt_dry_run || { 2613 eval '$ECHO ": $name " >> "$nlist"' 2614 eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" 2615 } 2616 done 2617 2618 $opt_dry_run || { 2619 # Make sure we have at least an empty file. 2620 test -f "$nlist" || : > "$nlist" 2621 2622 if test -n "$exclude_expsyms"; then 2623 $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 2624 $MV "$nlist"T "$nlist" 2625 fi 2626 2627 # Try sorting and uniquifying the output. 2628 if $GREP -v "^: " < "$nlist" | 2629 if sort -k 3 </dev/null >/dev/null 2>&1; then 2630 sort -k 3 2631 else 2632 sort +2 2633 fi | 2634 uniq > "$nlist"S; then 2635 : 2636 else 2637 $GREP -v "^: " < "$nlist" > "$nlist"S 2638 fi 2639 2640 if test -f "$nlist"S; then 2641 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 2642 else 2643 echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 2644 fi 2645 2646 echo >> "$output_objdir/$my_dlsyms" "\ 2647 2648 /* The mapping between symbol names and symbols. */ 2649 typedef struct { 2650 const char *name; 2651 void *address; 2652 } lt_dlsymlist; 2653 " 2654 case $host in 2655 *cygwin* | *mingw* | *cegcc* ) 2656 echo >> "$output_objdir/$my_dlsyms" "\ 2657 /* DATA imports from DLLs on WIN32 con't be const, because 2658 runtime relocations are performed -- see ld's documentation 2659 on pseudo-relocs. */" 2660 lt_dlsym_const= ;; 2661 *osf5*) 2662 echo >> "$output_objdir/$my_dlsyms" "\ 2663 /* This system does not cope well with relocations in const data */" 2664 lt_dlsym_const= ;; 2665 *) 2666 lt_dlsym_const=const ;; 2667 esac 2668 2669 echo >> "$output_objdir/$my_dlsyms" "\ 2670 extern $lt_dlsym_const lt_dlsymlist 2671 lt_${my_prefix}_LTX_preloaded_symbols[]; 2672 $lt_dlsym_const lt_dlsymlist 2673 lt_${my_prefix}_LTX_preloaded_symbols[] = 2674 {\ 2675 { \"$my_originator\", (void *) 0 }," 2676 2677 case $need_lib_prefix in 2678 no) 2679 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 2680 ;; 2681 *) 2682 eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 2683 ;; 2684 esac 2685 echo >> "$output_objdir/$my_dlsyms" "\ 2686 {0, (void *) 0} 2687 }; 2688 2689 /* This works around a problem in FreeBSD linker */ 2690 #ifdef FREEBSD_WORKAROUND 2691 static const void *lt_preloaded_setup() { 2692 return lt_${my_prefix}_LTX_preloaded_symbols; 2693 } 2694 #endif 2695 2696 #ifdef __cplusplus 2697 } 2698 #endif\ 2699 " 2700 } # !$opt_dry_run 2701 2702 pic_flag_for_symtable= 2703 case "$compile_command " in 2704 *" -static "*) ;; 2705 *) 2706 case $host in 2707 # compiling the symbol table file with pic_flag works around 2708 # a FreeBSD bug that causes programs to crash when -lm is 2709 # linked before any other PIC object. But we must not use 2710 # pic_flag when linking with -static. The problem exists in 2711 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 2712 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 2713 pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 2714 *-*-hpux*) 2715 pic_flag_for_symtable=" $pic_flag" ;; 2716 *) 2717 if test "X$my_pic_p" != Xno; then 2718 pic_flag_for_symtable=" $pic_flag" 2719 fi 2720 ;; 2721 esac 2722 ;; 2723 esac 2724 symtab_cflags= 2725 for arg in $LTCFLAGS; do 2726 case $arg in 2727 -pie | -fpie | -fPIE) ;; 2728 *) symtab_cflags="$symtab_cflags $arg" ;; 2729 esac 2730 done 2731 2732 # Now compile the dynamic symbol file. 2733 func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 2734 2735 # Clean up the generated files. 2736 func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 2737 2738 # Transform the symbol file into the correct name. 2739 symfileobj="$output_objdir/${my_outputname}S.$objext" 2740 case $host in 2741 *cygwin* | *mingw* | *cegcc* ) 2742 if test -f "$output_objdir/$my_outputname.def"; then 2743 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 2744 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 2745 else 2746 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 2747 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 2748 fi 2749 ;; 2750 *) 2751 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 2752 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 2753 ;; 2754 esac 2755 ;; 2756 *) 2757 func_fatal_error "unknown suffix for \`$my_dlsyms'" 2758 ;; 2759 esac 2760 else 2761 # We keep going just in case the user didn't refer to 2762 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 2763 # really was required. 2764 2765 # Nullify the symbol file. 2766 compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 2767 finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 2768 fi 2769 } 2770 2771 # func_win32_libid arg 2772 # return the library type of file 'arg' 2773 # 2774 # Need a lot of goo to handle *both* DLLs and import libs 2775 # Has to be a shell function in order to 'eat' the argument 2776 # that is supplied when $file_magic_command is called. 2777 # Despite the name, also deal with 64 bit binaries. 2778 func_win32_libid () 2779 { 2780 $opt_debug 2781 win32_libid_type="unknown" 2782 win32_fileres=`file -L $1 2>/dev/null` 2783 case $win32_fileres in 2784 *ar\ archive\ import\ library*) # definitely import 2785 win32_libid_type="x86 archive import" 2786 ;; 2787 *ar\ archive*) # could be an import, or static 2788 # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 2789 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 2790 $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 2791 win32_nmres=`eval $NM -f posix -A $1 | 2792 $SED -n -e ' 2793 1,100{ 2794 / I /{ 2795 s,.*,import, 2796 p 2797 q 2798 } 2799 }'` 2800 case $win32_nmres in 2801 import*) win32_libid_type="x86 archive import";; 2802 *) win32_libid_type="x86 archive static";; 2803 esac 2804 fi 2805 ;; 2806 *DLL*) 2807 win32_libid_type="x86 DLL" 2808 ;; 2809 *executable*) # but shell scripts are "executable" too... 2810 case $win32_fileres in 2811 *MS\ Windows\ PE\ Intel*) 2812 win32_libid_type="x86 DLL" 2813 ;; 2814 esac 2815 ;; 2816 esac 2817 $ECHO "$win32_libid_type" 2818 } 2819 2820 2821 2822 # func_extract_an_archive dir oldlib 2823 func_extract_an_archive () 2824 { 2825 $opt_debug 2826 f_ex_an_ar_dir="$1"; shift 2827 f_ex_an_ar_oldlib="$1" 2828 if test "$lock_old_archive_extraction" = yes; then 2829 lockfile=$f_ex_an_ar_oldlib.lock 2830 until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 2831 func_echo "Waiting for $lockfile to be removed" 2832 sleep 2 2833 done 2834 fi 2835 func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 2836 'stat=$?; rm -f "$lockfile"; exit $stat' 2837 if test "$lock_old_archive_extraction" = yes; then 2838 $opt_dry_run || rm -f "$lockfile" 2839 fi 2840 if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 2841 : 2842 else 2843 func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 2844 fi 2845 } 2846 2847 2848 # func_extract_archives gentop oldlib ... 2849 func_extract_archives () 2850 { 2851 $opt_debug 2852 my_gentop="$1"; shift 2853 my_oldlibs=${1+"$@"} 2854 my_oldobjs="" 2855 my_xlib="" 2856 my_xabs="" 2857 my_xdir="" 2858 2859 for my_xlib in $my_oldlibs; do 2860 # Extract the objects. 2861 case $my_xlib in 2862 [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 2863 *) my_xabs=`pwd`"/$my_xlib" ;; 2864 esac 2865 func_basename "$my_xlib" 2866 my_xlib="$func_basename_result" 2867 my_xlib_u=$my_xlib 2868 while :; do 2869 case " $extracted_archives " in 2870 *" $my_xlib_u "*) 2871 func_arith $extracted_serial + 1 2872 extracted_serial=$func_arith_result 2873 my_xlib_u=lt$extracted_serial-$my_xlib ;; 2874 *) break ;; 2875 esac 2876 done 2877 extracted_archives="$extracted_archives $my_xlib_u" 2878 my_xdir="$my_gentop/$my_xlib_u" 2879 2880 func_mkdir_p "$my_xdir" 2881 2882 case $host in 2883 *-darwin*) 2884 func_verbose "Extracting $my_xabs" 2885 # Do not bother doing anything if just a dry run 2886 $opt_dry_run || { 2887 darwin_orig_dir=`pwd` 2888 cd $my_xdir || exit $? 2889 darwin_archive=$my_xabs 2890 darwin_curdir=`pwd` 2891 darwin_base_archive=`basename "$darwin_archive"` 2892 darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 2893 if test -n "$darwin_arches"; then 2894 darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 2895 darwin_arch= 2896 func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 2897 for darwin_arch in $darwin_arches ; do 2898 func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 2899 $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 2900 cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 2901 func_extract_an_archive "`pwd`" "${darwin_base_archive}" 2902 cd "$darwin_curdir" 2903 $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 2904 done # $darwin_arches 2905 ## Okay now we've a bunch of thin objects, gotta fatten them up :) 2906 darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 2907 darwin_file= 2908 darwin_files= 2909 for darwin_file in $darwin_filelist; do 2910 darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 2911 $LIPO -create -output "$darwin_file" $darwin_files 2912 done # $darwin_filelist 2913 $RM -rf unfat-$$ 2914 cd "$darwin_orig_dir" 2915 else 2916 cd $darwin_orig_dir 2917 func_extract_an_archive "$my_xdir" "$my_xabs" 2918 fi # $darwin_arches 2919 } # !$opt_dry_run 2920 ;; 2921 *) 2922 func_extract_an_archive "$my_xdir" "$my_xabs" 2923 ;; 2924 esac 2925 my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 2926 done 2927 2928 func_extract_archives_result="$my_oldobjs" 2929 } 2930 2931 2932 # func_emit_wrapper [arg=no] 2933 # 2934 # Emit a libtool wrapper script on stdout. 2935 # Don't directly open a file because we may want to 2936 # incorporate the script contents within a cygwin/mingw 2937 # wrapper executable. Must ONLY be called from within 2938 # func_mode_link because it depends on a number of variables 2939 # set therein. 2940 # 2941 # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 2942 # variable will take. If 'yes', then the emitted script 2943 # will assume that the directory in which it is stored is 2944 # the $objdir directory. This is a cygwin/mingw-specific 2945 # behavior. 2946 func_emit_wrapper () 2947 { 2948 func_emit_wrapper_arg1=${1-no} 2949 2950 $ECHO "\ 2951 #! $SHELL 2952 2953 # $output - temporary wrapper script for $objdir/$outputname 2954 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 2955 # 2956 # The $output program cannot be directly executed until all the libtool 2957 # libraries that it depends on are installed. 2958 # 2959 # This wrapper script should never be moved out of the build directory. 2960 # If it is, it will not operate correctly. 2961 2962 # Sed substitution that helps us do robust quoting. It backslashifies 2963 # metacharacters that are still active within double-quoted strings. 2964 sed_quote_subst='$sed_quote_subst' 2965 2966 # Be Bourne compatible 2967 if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 2968 emulate sh 2969 NULLCMD=: 2970 # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 2971 # is contrary to our usage. Disable this feature. 2972 alias -g '\${1+\"\$@\"}'='\"\$@\"' 2973 setopt NO_GLOB_SUBST 2974 else 2975 case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 2976 fi 2977 BIN_SH=xpg4; export BIN_SH # for Tru64 2978 DUALCASE=1; export DUALCASE # for MKS sh 2979 2980 # The HP-UX ksh and POSIX shell print the target directory to stdout 2981 # if CDPATH is set. 2982 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH 2983 2984 relink_command=\"$relink_command\" 2985 2986 # This environment variable determines our operation mode. 2987 if test \"\$libtool_install_magic\" = \"$magic\"; then 2988 # install mode needs the following variables: 2989 generated_by_libtool_version='$macro_version' 2990 notinst_deplibs='$notinst_deplibs' 2991 else 2992 # When we are sourced in execute mode, \$file and \$ECHO are already set. 2993 if test \"\$libtool_execute_magic\" != \"$magic\"; then 2994 file=\"\$0\"" 2995 2996 qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 2997 $ECHO "\ 2998 2999 # A function that is used when there is no print builtin or printf. 3000 func_fallback_echo () 3001 { 3002 eval 'cat <<_LTECHO_EOF 3003 \$1 3004 _LTECHO_EOF' 3005 } 3006 ECHO=\"$qECHO\" 3007 fi 3008 3009 # Very basic option parsing. These options are (a) specific to 3010 # the libtool wrapper, (b) are identical between the wrapper 3011 # /script/ and the wrapper /executable/ which is used only on 3012 # windows platforms, and (c) all begin with the string "--lt-" 3013 # (application programs are unlikely to have options which match 3014 # this pattern). 3015 # 3016 # There are only two supported options: --lt-debug and 3017 # --lt-dump-script. There is, deliberately, no --lt-help. 3018 # 3019 # The first argument to this parsing function should be the 3020 # script's $0 value, followed by "$@". 3021 lt_option_debug= 3022 func_parse_lt_options () 3023 { 3024 lt_script_arg0=\$0 3025 shift 3026 for lt_opt 3027 do 3028 case \"\$lt_opt\" in 3029 --lt-debug) lt_option_debug=1 ;; 3030 --lt-dump-script) 3031 lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 3032 test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 3033 lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 3034 cat \"\$lt_dump_D/\$lt_dump_F\" 3035 exit 0 3036 ;; 3037 --lt-*) 3038 \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 3039 exit 1 3040 ;; 3041 esac 3042 done 3043 3044 # Print the debug banner immediately: 3045 if test -n \"\$lt_option_debug\"; then 3046 echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 3047 fi 3048 } 3049 3050 # Used when --lt-debug. Prints its arguments to stdout 3051 # (redirection is the responsibility of the caller) 3052 func_lt_dump_args () 3053 { 3054 lt_dump_args_N=1; 3055 for lt_arg 3056 do 3057 \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 3058 lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 3059 done 3060 } 3061 3062 # Core function for launching the target application 3063 func_exec_program_core () 3064 { 3065 " 3066 case $host in 3067 # Backslashes separate directories on plain windows 3068 *-*-mingw | *-*-os2* | *-cegcc*) 3069 $ECHO "\ 3070 if test -n \"\$lt_option_debug\"; then 3071 \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 3072 func_lt_dump_args \${1+\"\$@\"} 1>&2 3073 fi 3074 exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 3075 " 3076 ;; 3077 3078 *) 3079 $ECHO "\ 3080 if test -n \"\$lt_option_debug\"; then 3081 \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 3082 func_lt_dump_args \${1+\"\$@\"} 1>&2 3083 fi 3084 exec \"\$progdir/\$program\" \${1+\"\$@\"} 3085 " 3086 ;; 3087 esac 3088 $ECHO "\ 3089 \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 3090 exit 1 3091 } 3092 3093 # A function to encapsulate launching the target application 3094 # Strips options in the --lt-* namespace from \$@ and 3095 # launches target application with the remaining arguments. 3096 func_exec_program () 3097 { 3098 for lt_wr_arg 3099 do 3100 case \$lt_wr_arg in 3101 --lt-*) ;; 3102 *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 3103 esac 3104 shift 3105 done 3106 func_exec_program_core \${1+\"\$@\"} 3107 } 3108 3109 # Parse options 3110 func_parse_lt_options \"\$0\" \${1+\"\$@\"} 3111 3112 # Find the directory that this script lives in. 3113 thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 3114 test \"x\$thisdir\" = \"x\$file\" && thisdir=. 3115 3116 # Follow symbolic links until we get to the real thisdir. 3117 file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 3118 while test -n \"\$file\"; do 3119 destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 3120 3121 # If there was a directory component, then change thisdir. 3122 if test \"x\$destdir\" != \"x\$file\"; then 3123 case \"\$destdir\" in 3124 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 3125 *) thisdir=\"\$thisdir/\$destdir\" ;; 3126 esac 3127 fi 3128 3129 file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 3130 file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 3131 done 3132 3133 # Usually 'no', except on cygwin/mingw when embedded into 3134 # the cwrapper. 3135 WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 3136 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 3137 # special case for '.' 3138 if test \"\$thisdir\" = \".\"; then 3139 thisdir=\`pwd\` 3140 fi 3141 # remove .libs from thisdir 3142 case \"\$thisdir\" in 3143 *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 3144 $objdir ) thisdir=. ;; 3145 esac 3146 fi 3147 3148 # Try to get the absolute directory name. 3149 absdir=\`cd \"\$thisdir\" && pwd\` 3150 test -n \"\$absdir\" && thisdir=\"\$absdir\" 3151 " 3152 3153 if test "$fast_install" = yes; then 3154 $ECHO "\ 3155 program=lt-'$outputname'$exeext 3156 progdir=\"\$thisdir/$objdir\" 3157 3158 if test ! -f \"\$progdir/\$program\" || 3159 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 3160 test \"X\$file\" != \"X\$progdir/\$program\"; }; then 3161 3162 file=\"\$\$-\$program\" 3163 3164 if test ! -d \"\$progdir\"; then 3165 $MKDIR \"\$progdir\" 3166 else 3167 $RM \"\$progdir/\$file\" 3168 fi" 3169 3170 $ECHO "\ 3171 3172 # relink executable if necessary 3173 if test -n \"\$relink_command\"; then 3174 if relink_command_output=\`eval \$relink_command 2>&1\`; then : 3175 else 3176 $ECHO \"\$relink_command_output\" >&2 3177 $RM \"\$progdir/\$file\" 3178 exit 1 3179 fi 3180 fi 3181 3182 $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 3183 { $RM \"\$progdir/\$program\"; 3184 $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 3185 $RM \"\$progdir/\$file\" 3186 fi" 3187 else 3188 $ECHO "\ 3189 program='$outputname' 3190 progdir=\"\$thisdir/$objdir\" 3191 " 3192 fi 3193 3194 $ECHO "\ 3195 3196 if test -f \"\$progdir/\$program\"; then" 3197 3198 # Export our shlibpath_var if we have one. 3199 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 3200 $ECHO "\ 3201 # Add our own library path to $shlibpath_var 3202 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 3203 3204 # Some systems cannot cope with colon-terminated $shlibpath_var 3205 # The second colon is a workaround for a bug in BeOS R4 sed 3206 $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 3207 3208 export $shlibpath_var 3209 " 3210 fi 3211 3212 # fixup the dll searchpath if we need to. 3213 if test -n "$dllsearchpath"; then 3214 $ECHO "\ 3215 # Add the dll search path components to the executable PATH 3216 PATH=$dllsearchpath:\$PATH 3217 " 3218 fi 3219 3220 $ECHO "\ 3221 if test \"\$libtool_execute_magic\" != \"$magic\"; then 3222 # Run the actual program with our arguments. 3223 func_exec_program \${1+\"\$@\"} 3224 fi 3225 else 3226 # The program doesn't exist. 3227 \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 3228 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 3229 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 3230 exit 1 3231 fi 3232 fi\ 3233 " 3234 } 3235 3236 3237 # func_to_host_path arg 3238 # 3239 # Convert paths to host format when used with build tools. 3240 # Intended for use with "native" mingw (where libtool itself 3241 # is running under the msys shell), or in the following cross- 3242 # build environments: 3243 # $build $host 3244 # mingw (msys) mingw [e.g. native] 3245 # cygwin mingw 3246 # *nix + wine mingw 3247 # where wine is equipped with the `winepath' executable. 3248 # In the native mingw case, the (msys) shell automatically 3249 # converts paths for any non-msys applications it launches, 3250 # but that facility isn't available from inside the cwrapper. 3251 # Similar accommodations are necessary for $host mingw and 3252 # $build cygwin. Calling this function does no harm for other 3253 # $host/$build combinations not listed above. 3254 # 3255 # ARG is the path (on $build) that should be converted to 3256 # the proper representation for $host. The result is stored 3257 # in $func_to_host_path_result. 3258 func_to_host_path () 3259 { 3260 func_to_host_path_result="$1" 3261 if test -n "$1"; then 3262 case $host in 3263 *mingw* ) 3264 lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 3265 case $build in 3266 *mingw* ) # actually, msys 3267 # awkward: cmd appends spaces to result 3268 func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null | 3269 $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 3270 ;; 3271 *cygwin* ) 3272 func_to_host_path_result=`cygpath -w "$1" | 3273 $SED -e "$lt_sed_naive_backslashify"` 3274 ;; 3275 * ) 3276 # Unfortunately, winepath does not exit with a non-zero 3277 # error code, so we are forced to check the contents of 3278 # stdout. On the other hand, if the command is not 3279 # found, the shell will set an exit code of 127 and print 3280 # *an error message* to stdout. So we must check for both 3281 # error code of zero AND non-empty stdout, which explains 3282 # the odd construction: 3283 func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` 3284 if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then 3285 func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" | 3286 $SED -e "$lt_sed_naive_backslashify"` 3287 else 3288 # Allow warning below. 3289 func_to_host_path_result= 3290 fi 3291 ;; 3292 esac 3293 if test -z "$func_to_host_path_result" ; then 3294 func_error "Could not determine host path corresponding to" 3295 func_error " \`$1'" 3296 func_error "Continuing, but uninstalled executables may not work." 3297 # Fallback: 3298 func_to_host_path_result="$1" 3299 fi 3300 ;; 3301 esac 3302 fi 3303 } 3304 # end: func_to_host_path 3305 3306 # func_to_host_pathlist arg 3307 # 3308 # Convert pathlists to host format when used with build tools. 3309 # See func_to_host_path(), above. This function supports the 3310 # following $build/$host combinations (but does no harm for 3311 # combinations not listed here): 3312 # $build $host 3313 # mingw (msys) mingw [e.g. native] 3314 # cygwin mingw 3315 # *nix + wine mingw 3316 # 3317 # Path separators are also converted from $build format to 3318 # $host format. If ARG begins or ends with a path separator 3319 # character, it is preserved (but converted to $host format) 3320 # on output. 3321 # 3322 # ARG is a pathlist (on $build) that should be converted to 3323 # the proper representation on $host. The result is stored 3324 # in $func_to_host_pathlist_result. 3325 func_to_host_pathlist () 3326 { 3327 func_to_host_pathlist_result="$1" 3328 if test -n "$1"; then 3329 case $host in 3330 *mingw* ) 3331 lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 3332 # Remove leading and trailing path separator characters from 3333 # ARG. msys behavior is inconsistent here, cygpath turns them 3334 # into '.;' and ';.', and winepath ignores them completely. 3335 func_stripname : : "$1" 3336 func_to_host_pathlist_tmp1=$func_stripname_result 3337 case $build in 3338 *mingw* ) # Actually, msys. 3339 # Awkward: cmd appends spaces to result. 3340 func_to_host_pathlist_result=` 3341 ( cmd //c echo "$func_to_host_pathlist_tmp1" ) 2>/dev/null | 3342 $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 3343 ;; 3344 *cygwin* ) 3345 func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" | 3346 $SED -e "$lt_sed_naive_backslashify"` 3347 ;; 3348 * ) 3349 # unfortunately, winepath doesn't convert pathlists 3350 func_to_host_pathlist_result="" 3351 func_to_host_pathlist_oldIFS=$IFS 3352 IFS=: 3353 for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do 3354 IFS=$func_to_host_pathlist_oldIFS 3355 if test -n "$func_to_host_pathlist_f" ; then 3356 func_to_host_path "$func_to_host_pathlist_f" 3357 if test -n "$func_to_host_path_result" ; then 3358 if test -z "$func_to_host_pathlist_result" ; then 3359 func_to_host_pathlist_result="$func_to_host_path_result" 3360 else 3361 func_append func_to_host_pathlist_result ";$func_to_host_path_result" 3362 fi 3363 fi 3364 fi 3365 done 3366 IFS=$func_to_host_pathlist_oldIFS 3367 ;; 3368 esac 3369 if test -z "$func_to_host_pathlist_result"; then 3370 func_error "Could not determine the host path(s) corresponding to" 3371 func_error " \`$1'" 3372 func_error "Continuing, but uninstalled executables may not work." 3373 # Fallback. This may break if $1 contains DOS-style drive 3374 # specifications. The fix is not to complicate the expression 3375 # below, but for the user to provide a working wine installation 3376 # with winepath so that path translation in the cross-to-mingw 3377 # case works properly. 3378 lt_replace_pathsep_nix_to_dos="s|:|;|g" 3379 func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ 3380 $SED -e "$lt_replace_pathsep_nix_to_dos"` 3381 fi 3382 # Now, add the leading and trailing path separators back 3383 case "$1" in 3384 :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" 3385 ;; 3386 esac 3387 case "$1" in 3388 *: ) func_append func_to_host_pathlist_result ";" 3389 ;; 3390 esac 3391 ;; 3392 esac 3393 fi 3394 } 3395 # end: func_to_host_pathlist 3396 3397 # func_emit_cwrapperexe_src 3398 # emit the source code for a wrapper executable on stdout 3399 # Must ONLY be called from within func_mode_link because 3400 # it depends on a number of variable set therein. 3401 func_emit_cwrapperexe_src () 3402 { 3403 cat <<EOF 3404 3405 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname 3406 Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3407 3408 The $output program cannot be directly executed until all the libtool 3409 libraries that it depends on are installed. 3410 3411 This wrapper executable should never be moved out of the build directory. 3412 If it is, it will not operate correctly. 3413 */ 3414 EOF 3415 cat <<"EOF" 3416 #ifdef _MSC_VER 3417 # define _CRT_SECURE_NO_DEPRECATE 1 3418 #endif 3419 #include <stdio.h> 3420 #include <stdlib.h> 3421 #ifdef _MSC_VER 3422 # include <direct.h> 3423 # include <process.h> 3424 # include <io.h> 3425 #else 3426 # include <unistd.h> 3427 # include <stdint.h> 3428 # ifdef __CYGWIN__ 3429 # include <io.h> 3430 # endif 3431 #endif 3432 #include <malloc.h> 3433 #include <stdarg.h> 3434 #include <assert.h> 3435 #include <string.h> 3436 #include <ctype.h> 3437 #include <errno.h> 3438 #include <fcntl.h> 3439 #include <sys/stat.h> 3440 3441 /* declarations of non-ANSI functions */ 3442 #if defined(__MINGW32__) 3443 # ifdef __STRICT_ANSI__ 3444 int _putenv (const char *); 3445 # endif 3446 #elif defined(__CYGWIN__) 3447 # ifdef __STRICT_ANSI__ 3448 char *realpath (const char *, char *); 3449 int putenv (char *); 3450 int setenv (const char *, const char *, int); 3451 # endif 3452 /* #elif defined (other platforms) ... */ 3453 #endif 3454 3455 /* portability defines, excluding path handling macros */ 3456 #if defined(_MSC_VER) 3457 # define setmode _setmode 3458 # define stat _stat 3459 # define chmod _chmod 3460 # define getcwd _getcwd 3461 # define putenv _putenv 3462 # define S_IXUSR _S_IEXEC 3463 # ifndef _INTPTR_T_DEFINED 3464 # define _INTPTR_T_DEFINED 3465 # define intptr_t int 3466 # endif 3467 #elif defined(__MINGW32__) 3468 # define setmode _setmode 3469 # define stat _stat 3470 # define chmod _chmod 3471 # define getcwd _getcwd 3472 # define putenv _putenv 3473 #elif defined(__CYGWIN__) 3474 # define HAVE_SETENV 3475 # define FOPEN_WB "wb" 3476 /* #elif defined (other platforms) ... */ 3477 #endif 3478 3479 #if defined(PATH_MAX) 3480 # define LT_PATHMAX PATH_MAX 3481 #elif defined(MAXPATHLEN) 3482 # define LT_PATHMAX MAXPATHLEN 3483 #else 3484 # define LT_PATHMAX 1024 3485 #endif 3486 3487 #ifndef S_IXOTH 3488 # define S_IXOTH 0 3489 #endif 3490 #ifndef S_IXGRP 3491 # define S_IXGRP 0 3492 #endif 3493 3494 /* path handling portability macros */ 3495 #ifndef DIR_SEPARATOR 3496 # define DIR_SEPARATOR '/' 3497 # define PATH_SEPARATOR ':' 3498 #endif 3499 3500 #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 3501 defined (__OS2__) 3502 # define HAVE_DOS_BASED_FILE_SYSTEM 3503 # define FOPEN_WB "wb" 3504 # ifndef DIR_SEPARATOR_2 3505 # define DIR_SEPARATOR_2 '\\' 3506 # endif 3507 # ifndef PATH_SEPARATOR_2 3508 # define PATH_SEPARATOR_2 ';' 3509 # endif 3510 #endif 3511 3512 #ifndef DIR_SEPARATOR_2 3513 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 3514 #else /* DIR_SEPARATOR_2 */ 3515 # define IS_DIR_SEPARATOR(ch) \ 3516 (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 3517 #endif /* DIR_SEPARATOR_2 */ 3518 3519 #ifndef PATH_SEPARATOR_2 3520 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 3521 #else /* PATH_SEPARATOR_2 */ 3522 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 3523 #endif /* PATH_SEPARATOR_2 */ 3524 3525 #ifndef FOPEN_WB 3526 # define FOPEN_WB "w" 3527 #endif 3528 #ifndef _O_BINARY 3529 # define _O_BINARY 0 3530 #endif 3531 3532 #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 3533 #define XFREE(stale) do { \ 3534 if (stale) { free ((void *) stale); stale = 0; } \ 3535 } while (0) 3536 3537 #if defined(LT_DEBUGWRAPPER) 3538 static int lt_debug = 1; 3539 #else 3540 static int lt_debug = 0; 3541 #endif 3542 3543 const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 3544 3545 void *xmalloc (size_t num); 3546 char *xstrdup (const char *string); 3547 const char *base_name (const char *name); 3548 char *find_executable (const char *wrapper); 3549 char *chase_symlinks (const char *pathspec); 3550 int make_executable (const char *path); 3551 int check_executable (const char *path); 3552 char *strendzap (char *str, const char *pat); 3553 void lt_debugprintf (const char *file, int line, const char *fmt, ...); 3554 void lt_fatal (const char *file, int line, const char *message, ...); 3555 static const char *nonnull (const char *s); 3556 static const char *nonempty (const char *s); 3557 void lt_setenv (const char *name, const char *value); 3558 char *lt_extend_str (const char *orig_value, const char *add, int to_end); 3559 void lt_update_exe_path (const char *name, const char *value); 3560 void lt_update_lib_path (const char *name, const char *value); 3561 char **prepare_spawn (char **argv); 3562 void lt_dump_script (FILE *f); 3563 EOF 3564 3565 cat <<EOF 3566 const char * MAGIC_EXE = "$magic_exe"; 3567 const char * LIB_PATH_VARNAME = "$shlibpath_var"; 3568 EOF 3569 3570 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 3571 func_to_host_pathlist "$temp_rpath" 3572 cat <<EOF 3573 const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; 3574 EOF 3575 else 3576 cat <<"EOF" 3577 const char * LIB_PATH_VALUE = ""; 3578 EOF 3579 fi 3580 3581 if test -n "$dllsearchpath"; then 3582 func_to_host_pathlist "$dllsearchpath:" 3583 cat <<EOF 3584 const char * EXE_PATH_VARNAME = "PATH"; 3585 const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; 3586 EOF 3587 else 3588 cat <<"EOF" 3589 const char * EXE_PATH_VARNAME = ""; 3590 const char * EXE_PATH_VALUE = ""; 3591 EOF 3592 fi 3593 3594 if test "$fast_install" = yes; then 3595 cat <<EOF 3596 const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 3597 EOF 3598 else 3599 cat <<EOF 3600 const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 3601 EOF 3602 fi 3603 3604 3605 cat <<"EOF" 3606 3607 #define LTWRAPPER_OPTION_PREFIX "--lt-" 3608 3609 static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 3610 static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 3611 static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 3612 3613 int 3614 main (int argc, char *argv[]) 3615 { 3616 char **newargz; 3617 int newargc; 3618 char *tmp_pathspec; 3619 char *actual_cwrapper_path; 3620 char *actual_cwrapper_name; 3621 char *target_name; 3622 char *lt_argv_zero; 3623 intptr_t rval = 127; 3624 3625 int i; 3626 3627 program_name = (char *) xstrdup (base_name (argv[0])); 3628 newargz = XMALLOC (char *, argc + 1); 3629 3630 /* very simple arg parsing; don't want to rely on getopt 3631 * also, copy all non cwrapper options to newargz, except 3632 * argz[0], which is handled differently 3633 */ 3634 newargc=0; 3635 for (i = 1; i < argc; i++) 3636 { 3637 if (strcmp (argv[i], dumpscript_opt) == 0) 3638 { 3639 EOF 3640 case "$host" in 3641 *mingw* | *cygwin* ) 3642 # make stdout use "unix" line endings 3643 echo " setmode(1,_O_BINARY);" 3644 ;; 3645 esac 3646 3647 cat <<"EOF" 3648 lt_dump_script (stdout); 3649 return 0; 3650 } 3651 if (strcmp (argv[i], debug_opt) == 0) 3652 { 3653 lt_debug = 1; 3654 continue; 3655 } 3656 if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 3657 { 3658 /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 3659 namespace, but it is not one of the ones we know about and 3660 have already dealt with, above (inluding dump-script), then 3661 report an error. Otherwise, targets might begin to believe 3662 they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 3663 namespace. The first time any user complains about this, we'll 3664 need to make LTWRAPPER_OPTION_PREFIX a configure-time option 3665 or a configure.ac-settable value. 3666 */ 3667 lt_fatal (__FILE__, __LINE__, 3668 "unrecognized %s option: '%s'", 3669 ltwrapper_option_prefix, argv[i]); 3670 } 3671 /* otherwise ... */ 3672 newargz[++newargc] = xstrdup (argv[i]); 3673 } 3674 newargz[++newargc] = NULL; 3675 3676 EOF 3677 cat <<EOF 3678 /* The GNU banner must be the first non-error debug message */ 3679 lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 3680 EOF 3681 cat <<"EOF" 3682 lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 3683 lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 3684 3685 tmp_pathspec = find_executable (argv[0]); 3686 if (tmp_pathspec == NULL) 3687 lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 3688 lt_debugprintf (__FILE__, __LINE__, 3689 "(main) found exe (before symlink chase) at: %s\n", 3690 tmp_pathspec); 3691 3692 actual_cwrapper_path = chase_symlinks (tmp_pathspec); 3693 lt_debugprintf (__FILE__, __LINE__, 3694 "(main) found exe (after symlink chase) at: %s\n", 3695 actual_cwrapper_path); 3696 XFREE (tmp_pathspec); 3697 3698 actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 3699 strendzap (actual_cwrapper_path, actual_cwrapper_name); 3700 3701 /* wrapper name transforms */ 3702 strendzap (actual_cwrapper_name, ".exe"); 3703 tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 3704 XFREE (actual_cwrapper_name); 3705 actual_cwrapper_name = tmp_pathspec; 3706 tmp_pathspec = 0; 3707 3708 /* target_name transforms -- use actual target program name; might have lt- prefix */ 3709 target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 3710 strendzap (target_name, ".exe"); 3711 tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 3712 XFREE (target_name); 3713 target_name = tmp_pathspec; 3714 tmp_pathspec = 0; 3715 3716 lt_debugprintf (__FILE__, __LINE__, 3717 "(main) libtool target name: %s\n", 3718 target_name); 3719 EOF 3720 3721 cat <<EOF 3722 newargz[0] = 3723 XMALLOC (char, (strlen (actual_cwrapper_path) + 3724 strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 3725 strcpy (newargz[0], actual_cwrapper_path); 3726 strcat (newargz[0], "$objdir"); 3727 strcat (newargz[0], "/"); 3728 EOF 3729 3730 cat <<"EOF" 3731 /* stop here, and copy so we don't have to do this twice */ 3732 tmp_pathspec = xstrdup (newargz[0]); 3733 3734 /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 3735 strcat (newargz[0], actual_cwrapper_name); 3736 3737 /* DO want the lt- prefix here if it exists, so use target_name */ 3738 lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 3739 XFREE (tmp_pathspec); 3740 tmp_pathspec = NULL; 3741 EOF 3742 3743 case $host_os in 3744 mingw*) 3745 cat <<"EOF" 3746 { 3747 char* p; 3748 while ((p = strchr (newargz[0], '\\')) != NULL) 3749 { 3750 *p = '/'; 3751 } 3752 while ((p = strchr (lt_argv_zero, '\\')) != NULL) 3753 { 3754 *p = '/'; 3755 } 3756 } 3757 EOF 3758 ;; 3759 esac 3760 3761 cat <<"EOF" 3762 XFREE (target_name); 3763 XFREE (actual_cwrapper_path); 3764 XFREE (actual_cwrapper_name); 3765 3766 lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 3767 lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 3768 lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 3769 lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 3770 3771 lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 3772 nonnull (lt_argv_zero)); 3773 for (i = 0; i < newargc; i++) 3774 { 3775 lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 3776 i, nonnull (newargz[i])); 3777 } 3778 3779 EOF 3780 3781 case $host_os in 3782 mingw*) 3783 cat <<"EOF" 3784 /* execv doesn't actually work on mingw as expected on unix */ 3785 newargz = prepare_spawn (newargz); 3786 rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 3787 if (rval == -1) 3788 { 3789 /* failed to start process */ 3790 lt_debugprintf (__FILE__, __LINE__, 3791 "(main) failed to launch target \"%s\": %s\n", 3792 lt_argv_zero, nonnull (strerror (errno))); 3793 return 127; 3794 } 3795 return rval; 3796 EOF 3797 ;; 3798 *) 3799 cat <<"EOF" 3800 execv (lt_argv_zero, newargz); 3801 return rval; /* =127, but avoids unused variable warning */ 3802 EOF 3803 ;; 3804 esac 3805 3806 cat <<"EOF" 3807 } 3808 3809 void * 3810 xmalloc (size_t num) 3811 { 3812 void *p = (void *) malloc (num); 3813 if (!p) 3814 lt_fatal (__FILE__, __LINE__, "memory exhausted"); 3815 3816 return p; 3817 } 3818 3819 char * 3820 xstrdup (const char *string) 3821 { 3822 return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 3823 string) : NULL; 3824 } 3825 3826 const char * 3827 base_name (const char *name) 3828 { 3829 const char *base; 3830 3831 #if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3832 /* Skip over the disk name in MSDOS pathnames. */ 3833 if (isalpha ((unsigned char) name[0]) && name[1] == ':') 3834 name += 2; 3835 #endif 3836 3837 for (base = name; *name; name++) 3838 if (IS_DIR_SEPARATOR (*name)) 3839 base = name + 1; 3840 return base; 3841 } 3842 3843 int 3844 check_executable (const char *path) 3845 { 3846 struct stat st; 3847 3848 lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 3849 nonempty (path)); 3850 if ((!path) || (!*path)) 3851 return 0; 3852 3853 if ((stat (path, &st) >= 0) 3854 && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 3855 return 1; 3856 else 3857 return 0; 3858 } 3859 3860 int 3861 make_executable (const char *path) 3862 { 3863 int rval = 0; 3864 struct stat st; 3865 3866 lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 3867 nonempty (path)); 3868 if ((!path) || (!*path)) 3869 return 0; 3870 3871 if (stat (path, &st) >= 0) 3872 { 3873 rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 3874 } 3875 return rval; 3876 } 3877 3878 /* Searches for the full path of the wrapper. Returns 3879 newly allocated full path name if found, NULL otherwise 3880 Does not chase symlinks, even on platforms that support them. 3881 */ 3882 char * 3883 find_executable (const char *wrapper) 3884 { 3885 int has_slash = 0; 3886 const char *p; 3887 const char *p_next; 3888 /* static buffer for getcwd */ 3889 char tmp[LT_PATHMAX + 1]; 3890 int tmp_len; 3891 char *concat_name; 3892 3893 lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 3894 nonempty (wrapper)); 3895 3896 if ((wrapper == NULL) || (*wrapper == '\0')) 3897 return NULL; 3898 3899 /* Absolute path? */ 3900 #if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3901 if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 3902 { 3903 concat_name = xstrdup (wrapper); 3904 if (check_executable (concat_name)) 3905 return concat_name; 3906 XFREE (concat_name); 3907 } 3908 else 3909 { 3910 #endif 3911 if (IS_DIR_SEPARATOR (wrapper[0])) 3912 { 3913 concat_name = xstrdup (wrapper); 3914 if (check_executable (concat_name)) 3915 return concat_name; 3916 XFREE (concat_name); 3917 } 3918 #if defined (HAVE_DOS_BASED_FILE_SYSTEM) 3919 } 3920 #endif 3921 3922 for (p = wrapper; *p; p++) 3923 if (*p == '/') 3924 { 3925 has_slash = 1; 3926 break; 3927 } 3928 if (!has_slash) 3929 { 3930 /* no slashes; search PATH */ 3931 const char *path = getenv ("PATH"); 3932 if (path != NULL) 3933 { 3934 for (p = path; *p; p = p_next) 3935 { 3936 const char *q; 3937 size_t p_len; 3938 for (q = p; *q; q++) 3939 if (IS_PATH_SEPARATOR (*q)) 3940 break; 3941 p_len = q - p; 3942 p_next = (*q == '\0' ? q : q + 1); 3943 if (p_len == 0) 3944 { 3945 /* empty path: current directory */ 3946 if (getcwd (tmp, LT_PATHMAX) == NULL) 3947 lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 3948 nonnull (strerror (errno))); 3949 tmp_len = strlen (tmp); 3950 concat_name = 3951 XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 3952 memcpy (concat_name, tmp, tmp_len); 3953 concat_name[tmp_len] = '/'; 3954 strcpy (concat_name + tmp_len + 1, wrapper); 3955 } 3956 else 3957 { 3958 concat_name = 3959 XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 3960 memcpy (concat_name, p, p_len); 3961 concat_name[p_len] = '/'; 3962 strcpy (concat_name + p_len + 1, wrapper); 3963 } 3964 if (check_executable (concat_name)) 3965 return concat_name; 3966 XFREE (concat_name); 3967 } 3968 } 3969 /* not found in PATH; assume curdir */ 3970 } 3971 /* Relative path | not found in path: prepend cwd */ 3972 if (getcwd (tmp, LT_PATHMAX) == NULL) 3973 lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 3974 nonnull (strerror (errno))); 3975 tmp_len = strlen (tmp); 3976 concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 3977 memcpy (concat_name, tmp, tmp_len); 3978 concat_name[tmp_len] = '/'; 3979 strcpy (concat_name + tmp_len + 1, wrapper); 3980 3981 if (check_executable (concat_name)) 3982 return concat_name; 3983 XFREE (concat_name); 3984 return NULL; 3985 } 3986 3987 char * 3988 chase_symlinks (const char *pathspec) 3989 { 3990 #ifndef S_ISLNK 3991 return xstrdup (pathspec); 3992 #else 3993 char buf[LT_PATHMAX]; 3994 struct stat s; 3995 char *tmp_pathspec = xstrdup (pathspec); 3996 char *p; 3997 int has_symlinks = 0; 3998 while (strlen (tmp_pathspec) && !has_symlinks) 3999 { 4000 lt_debugprintf (__FILE__, __LINE__, 4001 "checking path component for symlinks: %s\n", 4002 tmp_pathspec); 4003 if (lstat (tmp_pathspec, &s) == 0) 4004 { 4005 if (S_ISLNK (s.st_mode) != 0) 4006 { 4007 has_symlinks = 1; 4008 break; 4009 } 4010 4011 /* search backwards for last DIR_SEPARATOR */ 4012 p = tmp_pathspec + strlen (tmp_pathspec) - 1; 4013 while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4014 p--; 4015 if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4016 { 4017 /* no more DIR_SEPARATORS left */ 4018 break; 4019 } 4020 *p = '\0'; 4021 } 4022 else 4023 { 4024 lt_fatal (__FILE__, __LINE__, 4025 "error accessing file \"%s\": %s", 4026 tmp_pathspec, nonnull (strerror (errno))); 4027 } 4028 } 4029 XFREE (tmp_pathspec); 4030 4031 if (!has_symlinks) 4032 { 4033 return xstrdup (pathspec); 4034 } 4035 4036 tmp_pathspec = realpath (pathspec, buf); 4037 if (tmp_pathspec == 0) 4038 { 4039 lt_fatal (__FILE__, __LINE__, 4040 "could not follow symlinks for %s", pathspec); 4041 } 4042 return xstrdup (tmp_pathspec); 4043 #endif 4044 } 4045 4046 char * 4047 strendzap (char *str, const char *pat) 4048 { 4049 size_t len, patlen; 4050 4051 assert (str != NULL); 4052 assert (pat != NULL); 4053 4054 len = strlen (str); 4055 patlen = strlen (pat); 4056 4057 if (patlen <= len) 4058 { 4059 str += len - patlen; 4060 if (strcmp (str, pat) == 0) 4061 *str = '\0'; 4062 } 4063 return str; 4064 } 4065 4066 void 4067 lt_debugprintf (const char *file, int line, const char *fmt, ...) 4068 { 4069 va_list args; 4070 if (lt_debug) 4071 { 4072 (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 4073 va_start (args, fmt); 4074 (void) vfprintf (stderr, fmt, args); 4075 va_end (args); 4076 } 4077 } 4078 4079 static void 4080 lt_error_core (int exit_status, const char *file, 4081 int line, const char *mode, 4082 const char *message, va_list ap) 4083 { 4084 fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 4085 vfprintf (stderr, message, ap); 4086 fprintf (stderr, ".\n"); 4087 4088 if (exit_status >= 0) 4089 exit (exit_status); 4090 } 4091 4092 void 4093 lt_fatal (const char *file, int line, const char *message, ...) 4094 { 4095 va_list ap; 4096 va_start (ap, message); 4097 lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 4098 va_end (ap); 4099 } 4100 4101 static const char * 4102 nonnull (const char *s) 4103 { 4104 return s ? s : "(null)"; 4105 } 4106 4107 static const char * 4108 nonempty (const char *s) 4109 { 4110 return (s && !*s) ? "(empty)" : nonnull (s); 4111 } 4112 4113 void 4114 lt_setenv (const char *name, const char *value) 4115 { 4116 lt_debugprintf (__FILE__, __LINE__, 4117 "(lt_setenv) setting '%s' to '%s'\n", 4118 nonnull (name), nonnull (value)); 4119 { 4120 #ifdef HAVE_SETENV 4121 /* always make a copy, for consistency with !HAVE_SETENV */ 4122 char *str = xstrdup (value); 4123 setenv (name, str, 1); 4124 #else 4125 int len = strlen (name) + 1 + strlen (value) + 1; 4126 char *str = XMALLOC (char, len); 4127 sprintf (str, "%s=%s", name, value); 4128 if (putenv (str) != EXIT_SUCCESS) 4129 { 4130 XFREE (str); 4131 } 4132 #endif 4133 } 4134 } 4135 4136 char * 4137 lt_extend_str (const char *orig_value, const char *add, int to_end) 4138 { 4139 char *new_value; 4140 if (orig_value && *orig_value) 4141 { 4142 int orig_value_len = strlen (orig_value); 4143 int add_len = strlen (add); 4144 new_value = XMALLOC (char, add_len + orig_value_len + 1); 4145 if (to_end) 4146 { 4147 strcpy (new_value, orig_value); 4148 strcpy (new_value + orig_value_len, add); 4149 } 4150 else 4151 { 4152 strcpy (new_value, add); 4153 strcpy (new_value + add_len, orig_value); 4154 } 4155 } 4156 else 4157 { 4158 new_value = xstrdup (add); 4159 } 4160 return new_value; 4161 } 4162 4163 void 4164 lt_update_exe_path (const char *name, const char *value) 4165 { 4166 lt_debugprintf (__FILE__, __LINE__, 4167 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 4168 nonnull (name), nonnull (value)); 4169 4170 if (name && *name && value && *value) 4171 { 4172 char *new_value = lt_extend_str (getenv (name), value, 0); 4173 /* some systems can't cope with a ':'-terminated path #' */ 4174 int len = strlen (new_value); 4175 while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 4176 { 4177 new_value[len-1] = '\0'; 4178 } 4179 lt_setenv (name, new_value); 4180 XFREE (new_value); 4181 } 4182 } 4183 4184 void 4185 lt_update_lib_path (const char *name, const char *value) 4186 { 4187 lt_debugprintf (__FILE__, __LINE__, 4188 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4189 nonnull (name), nonnull (value)); 4190 4191 if (name && *name && value && *value) 4192 { 4193 char *new_value = lt_extend_str (getenv (name), value, 0); 4194 lt_setenv (name, new_value); 4195 XFREE (new_value); 4196 } 4197 } 4198 4199 EOF 4200 case $host_os in 4201 mingw*) 4202 cat <<"EOF" 4203 4204 /* Prepares an argument vector before calling spawn(). 4205 Note that spawn() does not by itself call the command interpreter 4206 (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 4207 ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 4208 GetVersionEx(&v); 4209 v.dwPlatformId == VER_PLATFORM_WIN32_NT; 4210 }) ? "cmd.exe" : "command.com"). 4211 Instead it simply concatenates the arguments, separated by ' ', and calls 4212 CreateProcess(). We must quote the arguments since Win32 CreateProcess() 4213 interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 4214 special way: 4215 - Space and tab are interpreted as delimiters. They are not treated as 4216 delimiters if they are surrounded by double quotes: "...". 4217 - Unescaped double quotes are removed from the input. Their only effect is 4218 that within double quotes, space and tab are treated like normal 4219 characters. 4220 - Backslashes not followed by double quotes are not special. 4221 - But 2*n+1 backslashes followed by a double quote become 4222 n backslashes followed by a double quote (n >= 0): 4223 \" -> " 4224 \\\" -> \" 4225 \\\\\" -> \\" 4226 */ 4227 #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 4228 #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 4229 char ** 4230 prepare_spawn (char **argv) 4231 { 4232 size_t argc; 4233 char **new_argv; 4234 size_t i; 4235 4236 /* Count number of arguments. */ 4237 for (argc = 0; argv[argc] != NULL; argc++) 4238 ; 4239 4240 /* Allocate new argument vector. */ 4241 new_argv = XMALLOC (char *, argc + 1); 4242 4243 /* Put quoted arguments into the new argument vector. */ 4244 for (i = 0; i < argc; i++) 4245 { 4246 const char *string = argv[i]; 4247 4248 if (string[0] == '\0') 4249 new_argv[i] = xstrdup ("\"\""); 4250 else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 4251 { 4252 int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 4253 size_t length; 4254 unsigned int backslashes; 4255 const char *s; 4256 char *quoted_string; 4257 char *p; 4258 4259 length = 0; 4260 backslashes = 0; 4261 if (quote_around) 4262 length++; 4263 for (s = string; *s != '\0'; s++) 4264 { 4265 char c = *s; 4266 if (c == '"') 4267 length += backslashes + 1; 4268 length++; 4269 if (c == '\\') 4270 backslashes++; 4271 else 4272 backslashes = 0; 4273 } 4274 if (quote_around) 4275 length += backslashes + 1; 4276 4277 quoted_string = XMALLOC (char, length + 1); 4278 4279 p = quoted_string; 4280 backslashes = 0; 4281 if (quote_around) 4282 *p++ = '"'; 4283 for (s = string; *s != '\0'; s++) 4284 { 4285 char c = *s; 4286 if (c == '"') 4287 { 4288 unsigned int j; 4289 for (j = backslashes + 1; j > 0; j--) 4290 *p++ = '\\'; 4291 } 4292 *p++ = c; 4293 if (c == '\\') 4294 backslashes++; 4295 else 4296 backslashes = 0; 4297 } 4298 if (quote_around) 4299 { 4300 unsigned int j; 4301 for (j = backslashes; j > 0; j--) 4302 *p++ = '\\'; 4303 *p++ = '"'; 4304 } 4305 *p = '\0'; 4306 4307 new_argv[i] = quoted_string; 4308 } 4309 else 4310 new_argv[i] = (char *) string; 4311 } 4312 new_argv[argc] = NULL; 4313 4314 return new_argv; 4315 } 4316 EOF 4317 ;; 4318 esac 4319 4320 cat <<"EOF" 4321 void lt_dump_script (FILE* f) 4322 { 4323 EOF 4324 func_emit_wrapper yes | 4325 $SED -e 's/\([\\"]\)/\\\1/g' \ 4326 -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' 4327 4328 cat <<"EOF" 4329 } 4330 EOF 4331 } 4332 # end: func_emit_cwrapperexe_src 4333 4334 # func_win32_import_lib_p ARG 4335 # True if ARG is an import lib, as indicated by $file_magic_cmd 4336 func_win32_import_lib_p () 4337 { 4338 $opt_debug 4339 case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 4340 *import*) : ;; 4341 *) false ;; 4342 esac 4343 } 4344 4345 # func_mode_link arg... 4346 func_mode_link () 4347 { 4348 $opt_debug 4349 case $host in 4350 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 4351 # It is impossible to link a dll without this setting, and 4352 # we shouldn't force the makefile maintainer to figure out 4353 # which system we are compiling for in order to pass an extra 4354 # flag for every libtool invocation. 4355 # allow_undefined=no 4356 4357 # FIXME: Unfortunately, there are problems with the above when trying 4358 # to make a dll which has undefined symbols, in which case not 4359 # even a static library is built. For now, we need to specify 4360 # -no-undefined on the libtool link line when we can be certain 4361 # that all symbols are satisfied, otherwise we get a static library. 4362 allow_undefined=yes 4363 ;; 4364 *) 4365 allow_undefined=yes 4366 ;; 4367 esac 4368 libtool_args=$nonopt 4369 base_compile="$nonopt $@" 4370 compile_command=$nonopt 4371 finalize_command=$nonopt 4372 4373 compile_rpath= 4374 finalize_rpath= 4375 compile_shlibpath= 4376 finalize_shlibpath= 4377 convenience= 4378 old_convenience= 4379 deplibs= 4380 old_deplibs= 4381 compiler_flags= 4382 linker_flags= 4383 dllsearchpath= 4384 lib_search_path=`pwd` 4385 inst_prefix_dir= 4386 new_inherited_linker_flags= 4387 4388 avoid_version=no 4389 bindir= 4390 dlfiles= 4391 dlprefiles= 4392 dlself=no 4393 export_dynamic=no 4394 export_symbols= 4395 export_symbols_regex= 4396 generated= 4397 libobjs= 4398 ltlibs= 4399 module=no 4400 no_install=no 4401 objs= 4402 non_pic_objects= 4403 precious_files_regex= 4404 prefer_static_libs=no 4405 preload=no 4406 prev= 4407 prevarg= 4408 release= 4409 rpath= 4410 xrpath= 4411 perm_rpath= 4412 temp_rpath= 4413 thread_safe=no 4414 vinfo= 4415 vinfo_number=no 4416 weak_libs= 4417 single_module="${wl}-single_module" 4418 func_infer_tag $base_compile 4419 4420 # We need to know -static, to get the right output filenames. 4421 for arg 4422 do 4423 case $arg in 4424 -shared) 4425 test "$build_libtool_libs" != yes && \ 4426 func_fatal_configuration "can not build a shared library" 4427 build_old_libs=no 4428 break 4429 ;; 4430 -all-static | -static | -static-libtool-libs) 4431 case $arg in 4432 -all-static) 4433 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 4434 func_warning "complete static linking is impossible in this configuration" 4435 fi 4436 if test -n "$link_static_flag"; then 4437 dlopen_self=$dlopen_self_static 4438 fi 4439 prefer_static_libs=yes 4440 ;; 4441 -static) 4442 if test -z "$pic_flag" && test -n "$link_static_flag"; then 4443 dlopen_self=$dlopen_self_static 4444 fi 4445 prefer_static_libs=built 4446 ;; 4447 -static-libtool-libs) 4448 if test -z "$pic_flag" && test -n "$link_static_flag"; then 4449 dlopen_self=$dlopen_self_static 4450 fi 4451 prefer_static_libs=yes 4452 ;; 4453 esac 4454 build_libtool_libs=no 4455 build_old_libs=yes 4456 break 4457 ;; 4458 esac 4459 done 4460 4461 # See if our shared archives depend on static archives. 4462 test -n "$old_archive_from_new_cmds" && build_old_libs=yes 4463 4464 # Go through the arguments, transforming them on the way. 4465 while test "$#" -gt 0; do 4466 arg="$1" 4467 shift 4468 func_quote_for_eval "$arg" 4469 qarg=$func_quote_for_eval_unquoted_result 4470 func_append libtool_args " $func_quote_for_eval_result" 4471 4472 # If the previous option needs an argument, assign it. 4473 if test -n "$prev"; then 4474 case $prev in 4475 output) 4476 func_append compile_command " @OUTPUT@" 4477 func_append finalize_command " @OUTPUT@" 4478 ;; 4479 esac 4480 4481 case $prev in 4482 bindir) 4483 bindir="$arg" 4484 prev= 4485 continue 4486 ;; 4487 dlfiles|dlprefiles) 4488 if test "$preload" = no; then 4489 # Add the symbol object into the linking commands. 4490 func_append compile_command " @SYMFILE@" 4491 func_append finalize_command " @SYMFILE@" 4492 preload=yes 4493 fi 4494 case $arg in 4495 *.la | *.lo) ;; # We handle these cases below. 4496 force) 4497 if test "$dlself" = no; then 4498 dlself=needless 4499 export_dynamic=yes 4500 fi 4501 prev= 4502 continue 4503 ;; 4504 self) 4505 if test "$prev" = dlprefiles; then 4506 dlself=yes 4507 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 4508 dlself=yes 4509 else 4510 dlself=needless 4511 export_dynamic=yes 4512 fi 4513 prev= 4514 continue 4515 ;; 4516 *) 4517 if test "$prev" = dlfiles; then 4518 dlfiles="$dlfiles $arg" 4519 else 4520 dlprefiles="$dlprefiles $arg" 4521 fi 4522 prev= 4523 continue 4524 ;; 4525 esac 4526 ;; 4527 expsyms) 4528 export_symbols="$arg" 4529 test -f "$arg" \ 4530 || func_fatal_error "symbol file \`$arg' does not exist" 4531 prev= 4532 continue 4533 ;; 4534 expsyms_regex) 4535 export_symbols_regex="$arg" 4536 prev= 4537 continue 4538 ;; 4539 framework) 4540 case $host in 4541 *-*-darwin*) 4542 case "$deplibs " in 4543 *" $qarg.ltframework "*) ;; 4544 *) deplibs="$deplibs $qarg.ltframework" # this is fixed later 4545 ;; 4546 esac 4547 ;; 4548 esac 4549 prev= 4550 continue 4551 ;; 4552 inst_prefix) 4553 inst_prefix_dir="$arg" 4554 prev= 4555 continue 4556 ;; 4557 objectlist) 4558 if test -f "$arg"; then 4559 save_arg=$arg 4560 moreargs= 4561 for fil in `cat "$save_arg"` 4562 do 4563 # moreargs="$moreargs $fil" 4564 arg=$fil 4565 # A libtool-controlled object. 4566 4567 # Check to see that this really is a libtool object. 4568 if func_lalib_unsafe_p "$arg"; then 4569 pic_object= 4570 non_pic_object= 4571 4572 # Read the .lo file 4573 func_source "$arg" 4574 4575 if test -z "$pic_object" || 4576 test -z "$non_pic_object" || 4577 test "$pic_object" = none && 4578 test "$non_pic_object" = none; then 4579 func_fatal_error "cannot find name of object for \`$arg'" 4580 fi 4581 4582 # Extract subdirectory from the argument. 4583 func_dirname "$arg" "/" "" 4584 xdir="$func_dirname_result" 4585 4586 if test "$pic_object" != none; then 4587 # Prepend the subdirectory the object is found in. 4588 pic_object="$xdir$pic_object" 4589 4590 if test "$prev" = dlfiles; then 4591 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 4592 dlfiles="$dlfiles $pic_object" 4593 prev= 4594 continue 4595 else 4596 # If libtool objects are unsupported, then we need to preload. 4597 prev=dlprefiles 4598 fi 4599 fi 4600 4601 # CHECK ME: I think I busted this. -Ossama 4602 if test "$prev" = dlprefiles; then 4603 # Preload the old-style object. 4604 dlprefiles="$dlprefiles $pic_object" 4605 prev= 4606 fi 4607 4608 # A PIC object. 4609 func_append libobjs " $pic_object" 4610 arg="$pic_object" 4611 fi 4612 4613 # Non-PIC object. 4614 if test "$non_pic_object" != none; then 4615 # Prepend the subdirectory the object is found in. 4616 non_pic_object="$xdir$non_pic_object" 4617 4618 # A standard non-PIC object 4619 func_append non_pic_objects " $non_pic_object" 4620 if test -z "$pic_object" || test "$pic_object" = none ; then 4621 arg="$non_pic_object" 4622 fi 4623 else 4624 # If the PIC object exists, use it instead. 4625 # $xdir was prepended to $pic_object above. 4626 non_pic_object="$pic_object" 4627 func_append non_pic_objects " $non_pic_object" 4628 fi 4629 else 4630 # Only an error if not doing a dry-run. 4631 if $opt_dry_run; then 4632 # Extract subdirectory from the argument. 4633 func_dirname "$arg" "/" "" 4634 xdir="$func_dirname_result" 4635 4636 func_lo2o "$arg" 4637 pic_object=$xdir$objdir/$func_lo2o_result 4638 non_pic_object=$xdir$func_lo2o_result 4639 func_append libobjs " $pic_object" 4640 func_append non_pic_objects " $non_pic_object" 4641 else 4642 func_fatal_error "\`$arg' is not a valid libtool object" 4643 fi 4644 fi 4645 done 4646 else 4647 func_fatal_error "link input file \`$arg' does not exist" 4648 fi 4649 arg=$save_arg 4650 prev= 4651 continue 4652 ;; 4653 precious_regex) 4654 precious_files_regex="$arg" 4655 prev= 4656 continue 4657 ;; 4658 release) 4659 release="-$arg" 4660 prev= 4661 continue 4662 ;; 4663 rpath | xrpath) 4664 # We need an absolute path. 4665 case $arg in 4666 [\\/]* | [A-Za-z]:[\\/]*) ;; 4667 *) 4668 func_fatal_error "only absolute run-paths are allowed" 4669 ;; 4670 esac 4671 if test "$prev" = rpath; then 4672 case "$rpath " in 4673 *" $arg "*) ;; 4674 *) rpath="$rpath $arg" ;; 4675 esac 4676 else 4677 case "$xrpath " in 4678 *" $arg "*) ;; 4679 *) xrpath="$xrpath $arg" ;; 4680 esac 4681 fi 4682 prev= 4683 continue 4684 ;; 4685 shrext) 4686 shrext_cmds="$arg" 4687 prev= 4688 continue 4689 ;; 4690 weak) 4691 weak_libs="$weak_libs $arg" 4692 prev= 4693 continue 4694 ;; 4695 xcclinker) 4696 linker_flags="$linker_flags $qarg" 4697 compiler_flags="$compiler_flags $qarg" 4698 prev= 4699 func_append compile_command " $qarg" 4700 func_append finalize_command " $qarg" 4701 continue 4702 ;; 4703 xcompiler) 4704 compiler_flags="$compiler_flags $qarg" 4705 prev= 4706 func_append compile_command " $qarg" 4707 func_append finalize_command " $qarg" 4708 continue 4709 ;; 4710 xlinker) 4711 linker_flags="$linker_flags $qarg" 4712 compiler_flags="$compiler_flags $wl$qarg" 4713 prev= 4714 func_append compile_command " $wl$qarg" 4715 func_append finalize_command " $wl$qarg" 4716 continue 4717 ;; 4718 *) 4719 eval "$prev=\"\$arg\"" 4720 prev= 4721 continue 4722 ;; 4723 esac 4724 fi # test -n "$prev" 4725 4726 prevarg="$arg" 4727 4728 case $arg in 4729 -all-static) 4730 if test -n "$link_static_flag"; then 4731 # See comment for -static flag below, for more details. 4732 func_append compile_command " $link_static_flag" 4733 func_append finalize_command " $link_static_flag" 4734 fi 4735 continue 4736 ;; 4737 4738 -allow-undefined) 4739 # FIXME: remove this flag sometime in the future. 4740 func_fatal_error "\`-allow-undefined' must not be used because it is the default" 4741 ;; 4742 4743 -avoid-version) 4744 avoid_version=yes 4745 continue 4746 ;; 4747 4748 -bindir) 4749 prev=bindir 4750 continue 4751 ;; 4752 4753 -dlopen) 4754 prev=dlfiles 4755 continue 4756 ;; 4757 4758 -dlpreopen) 4759 prev=dlprefiles 4760 continue 4761 ;; 4762 4763 -export-dynamic) 4764 export_dynamic=yes 4765 continue 4766 ;; 4767 4768 -export-symbols | -export-symbols-regex) 4769 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 4770 func_fatal_error "more than one -exported-symbols argument is not allowed" 4771 fi 4772 if test "X$arg" = "X-export-symbols"; then 4773 prev=expsyms 4774 else 4775 prev=expsyms_regex 4776 fi 4777 continue 4778 ;; 4779 4780 -framework) 4781 prev=framework 4782 continue 4783 ;; 4784 4785 -inst-prefix-dir) 4786 prev=inst_prefix 4787 continue 4788 ;; 4789 4790 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 4791 # so, if we see these flags be careful not to treat them like -L 4792 -L[A-Z][A-Z]*:*) 4793 case $with_gcc/$host in 4794 no/*-*-irix* | /*-*-irix*) 4795 func_append compile_command " $arg" 4796 func_append finalize_command " $arg" 4797 ;; 4798 esac 4799 continue 4800 ;; 4801 4802 -L*) 4803 func_stripname '-L' '' "$arg" 4804 dir=$func_stripname_result 4805 if test -z "$dir"; then 4806 if test "$#" -gt 0; then 4807 func_fatal_error "require no space between \`-L' and \`$1'" 4808 else 4809 func_fatal_error "need path for \`-L' option" 4810 fi 4811 fi 4812 # We need an absolute path. 4813 case $dir in 4814 [\\/]* | [A-Za-z]:[\\/]*) ;; 4815 *) 4816 absdir=`cd "$dir" && pwd` 4817 test -z "$absdir" && \ 4818 func_fatal_error "cannot determine absolute directory name of \`$dir'" 4819 dir="$absdir" 4820 ;; 4821 esac 4822 case "$deplibs " in 4823 *" -L$dir "*) ;; 4824 *) 4825 deplibs="$deplibs -L$dir" 4826 lib_search_path="$lib_search_path $dir" 4827 ;; 4828 esac 4829 case $host in 4830 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 4831 testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 4832 case :$dllsearchpath: in 4833 *":$dir:"*) ;; 4834 ::) dllsearchpath=$dir;; 4835 *) dllsearchpath="$dllsearchpath:$dir";; 4836 esac 4837 case :$dllsearchpath: in 4838 *":$testbindir:"*) ;; 4839 ::) dllsearchpath=$testbindir;; 4840 *) dllsearchpath="$dllsearchpath:$testbindir";; 4841 esac 4842 ;; 4843 esac 4844 continue 4845 ;; 4846 4847 -l*) 4848 if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 4849 case $host in 4850 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 4851 # These systems don't actually have a C or math library (as such) 4852 continue 4853 ;; 4854 *-*-os2*) 4855 # These systems don't actually have a C library (as such) 4856 test "X$arg" = "X-lc" && continue 4857 ;; 4858 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 4859 # Do not include libc due to us having libc/libc_r. 4860 test "X$arg" = "X-lc" && continue 4861 ;; 4862 *-*-rhapsody* | *-*-darwin1.[012]) 4863 # Rhapsody C and math libraries are in the System framework 4864 deplibs="$deplibs System.ltframework" 4865 continue 4866 ;; 4867 *-*-sco3.2v5* | *-*-sco5v6*) 4868 # Causes problems with __ctype 4869 test "X$arg" = "X-lc" && continue 4870 ;; 4871 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 4872 # Compiler inserts libc in the correct place for threads to work 4873 test "X$arg" = "X-lc" && continue 4874 ;; 4875 esac 4876 elif test "X$arg" = "X-lc_r"; then 4877 case $host in 4878 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 4879 # Do not include libc_r directly, use -pthread flag. 4880 continue 4881 ;; 4882 esac 4883 fi 4884 deplibs="$deplibs $arg" 4885 continue 4886 ;; 4887 4888 -module) 4889 module=yes 4890 continue 4891 ;; 4892 4893 # Tru64 UNIX uses -model [arg] to determine the layout of C++ 4894 # classes, name mangling, and exception handling. 4895 # Darwin uses the -arch flag to determine output architecture. 4896 -model|-arch|-isysroot) 4897 compiler_flags="$compiler_flags $arg" 4898 func_append compile_command " $arg" 4899 func_append finalize_command " $arg" 4900 prev=xcompiler 4901 continue 4902 ;; 4903 4904 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 4905 compiler_flags="$compiler_flags $arg" 4906 func_append compile_command " $arg" 4907 func_append finalize_command " $arg" 4908 case "$new_inherited_linker_flags " in 4909 *" $arg "*) ;; 4910 * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; 4911 esac 4912 continue 4913 ;; 4914 4915 -multi_module) 4916 single_module="${wl}-multi_module" 4917 continue 4918 ;; 4919 4920 -no-fast-install) 4921 fast_install=no 4922 continue 4923 ;; 4924 4925 -no-install) 4926 case $host in 4927 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 4928 # The PATH hackery in wrapper scripts is required on Windows 4929 # and Darwin in order for the loader to find any dlls it needs. 4930 func_warning "\`-no-install' is ignored for $host" 4931 func_warning "assuming \`-no-fast-install' instead" 4932 fast_install=no 4933 ;; 4934 *) no_install=yes ;; 4935 esac 4936 continue 4937 ;; 4938 4939 -no-undefined) 4940 allow_undefined=no 4941 continue 4942 ;; 4943 4944 -objectlist) 4945 prev=objectlist 4946 continue 4947 ;; 4948 4949 -o) prev=output ;; 4950 4951 -precious-files-regex) 4952 prev=precious_regex 4953 continue 4954 ;; 4955 4956 -release) 4957 prev=release 4958 continue 4959 ;; 4960 4961 -rpath) 4962 prev=rpath 4963 continue 4964 ;; 4965 4966 -R) 4967 prev=xrpath 4968 continue 4969 ;; 4970 4971 -R*) 4972 func_stripname '-R' '' "$arg" 4973 dir=$func_stripname_result 4974 # We need an absolute path. 4975 case $dir in 4976 [\\/]* | [A-Za-z]:[\\/]*) ;; 4977 *) 4978 func_fatal_error "only absolute run-paths are allowed" 4979 ;; 4980 esac 4981 case "$xrpath " in 4982 *" $dir "*) ;; 4983 *) xrpath="$xrpath $dir" ;; 4984 esac 4985 continue 4986 ;; 4987 4988 -shared) 4989 # The effects of -shared are defined in a previous loop. 4990 continue 4991 ;; 4992 4993 -shrext) 4994 prev=shrext 4995 continue 4996 ;; 4997 4998 -static | -static-libtool-libs) 4999 # The effects of -static are defined in a previous loop. 5000 # We used to do the same as -all-static on platforms that 5001 # didn't have a PIC flag, but the assumption that the effects 5002 # would be equivalent was wrong. It would break on at least 5003 # Digital Unix and AIX. 5004 continue 5005 ;; 5006 5007 -thread-safe) 5008 thread_safe=yes 5009 continue 5010 ;; 5011 5012 -version-info) 5013 prev=vinfo 5014 continue 5015 ;; 5016 5017 -version-number) 5018 prev=vinfo 5019 vinfo_number=yes 5020 continue 5021 ;; 5022 5023 -weak) 5024 prev=weak 5025 continue 5026 ;; 5027 5028 -Wc,*) 5029 func_stripname '-Wc,' '' "$arg" 5030 args=$func_stripname_result 5031 arg= 5032 save_ifs="$IFS"; IFS=',' 5033 for flag in $args; do 5034 IFS="$save_ifs" 5035 func_quote_for_eval "$flag" 5036 arg="$arg $func_quote_for_eval_result" 5037 compiler_flags="$compiler_flags $func_quote_for_eval_result" 5038 done 5039 IFS="$save_ifs" 5040 func_stripname ' ' '' "$arg" 5041 arg=$func_stripname_result 5042 ;; 5043 5044 -Wl,*) 5045 func_stripname '-Wl,' '' "$arg" 5046 args=$func_stripname_result 5047 arg= 5048 save_ifs="$IFS"; IFS=',' 5049 for flag in $args; do 5050 IFS="$save_ifs" 5051 func_quote_for_eval "$flag" 5052 arg="$arg $wl$func_quote_for_eval_result" 5053 compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" 5054 linker_flags="$linker_flags $func_quote_for_eval_result" 5055 done 5056 IFS="$save_ifs" 5057 func_stripname ' ' '' "$arg" 5058 arg=$func_stripname_result 5059 ;; 5060 5061 -Xcompiler) 5062 prev=xcompiler 5063 continue 5064 ;; 5065 5066 -Xlinker) 5067 prev=xlinker 5068 continue 5069 ;; 5070 5071 -XCClinker) 5072 prev=xcclinker 5073 continue 5074 ;; 5075 5076 # -msg_* for osf cc 5077 -msg_*) 5078 func_quote_for_eval "$arg" 5079 arg="$func_quote_for_eval_result" 5080 ;; 5081 5082 # Flags to be passed through unchanged, with rationale: 5083 # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 5084 # -r[0-9][0-9]* specify processor for the SGI compiler 5085 # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 5086 # +DA*, +DD* enable 64-bit mode for the HP compiler 5087 # -q* compiler args for the IBM compiler 5088 # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 5089 # -F/path path to uninstalled frameworks, gcc on darwin 5090 # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 5091 # @file GCC response files 5092 # -tp=* Portland pgcc target processor selection 5093 -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 5094 -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*) 5095 func_quote_for_eval "$arg" 5096 arg="$func_quote_for_eval_result" 5097 func_append compile_command " $arg" 5098 func_append finalize_command " $arg" 5099 compiler_flags="$compiler_flags $arg" 5100 continue 5101 ;; 5102 5103 # Some other compiler flag. 5104 -* | +*) 5105 func_quote_for_eval "$arg" 5106 arg="$func_quote_for_eval_result" 5107 ;; 5108 5109 *.$objext) 5110 # A standard object. 5111 objs="$objs $arg" 5112 ;; 5113 5114 *.lo) 5115 # A libtool-controlled object. 5116 5117 # Check to see that this really is a libtool object. 5118 if func_lalib_unsafe_p "$arg"; then 5119 pic_object= 5120 non_pic_object= 5121 5122 # Read the .lo file 5123 func_source "$arg" 5124 5125 if test -z "$pic_object" || 5126 test -z "$non_pic_object" || 5127 test "$pic_object" = none && 5128 test "$non_pic_object" = none; then 5129 func_fatal_error "cannot find name of object for \`$arg'" 5130 fi 5131 5132 # Extract subdirectory from the argument. 5133 func_dirname "$arg" "/" "" 5134 xdir="$func_dirname_result" 5135 5136 if test "$pic_object" != none; then 5137 # Prepend the subdirectory the object is found in. 5138 pic_object="$xdir$pic_object" 5139 5140 if test "$prev" = dlfiles; then 5141 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5142 dlfiles="$dlfiles $pic_object" 5143 prev= 5144 continue 5145 else 5146 # If libtool objects are unsupported, then we need to preload. 5147 prev=dlprefiles 5148 fi 5149 fi 5150 5151 # CHECK ME: I think I busted this. -Ossama 5152 if test "$prev" = dlprefiles; then 5153 # Preload the old-style object. 5154 dlprefiles="$dlprefiles $pic_object" 5155 prev= 5156 fi 5157 5158 # A PIC object. 5159 func_append libobjs " $pic_object" 5160 arg="$pic_object" 5161 fi 5162 5163 # Non-PIC object. 5164 if test "$non_pic_object" != none; then 5165 # Prepend the subdirectory the object is found in. 5166 non_pic_object="$xdir$non_pic_object" 5167 5168 # A standard non-PIC object 5169 func_append non_pic_objects " $non_pic_object" 5170 if test -z "$pic_object" || test "$pic_object" = none ; then 5171 arg="$non_pic_object" 5172 fi 5173 else 5174 # If the PIC object exists, use it instead. 5175 # $xdir was prepended to $pic_object above. 5176 non_pic_object="$pic_object" 5177 func_append non_pic_objects " $non_pic_object" 5178 fi 5179 else 5180 # Only an error if not doing a dry-run. 5181 if $opt_dry_run; then 5182 # Extract subdirectory from the argument. 5183 func_dirname "$arg" "/" "" 5184 xdir="$func_dirname_result" 5185 5186 func_lo2o "$arg" 5187 pic_object=$xdir$objdir/$func_lo2o_result 5188 non_pic_object=$xdir$func_lo2o_result 5189 func_append libobjs " $pic_object" 5190 func_append non_pic_objects " $non_pic_object" 5191 else 5192 func_fatal_error "\`$arg' is not a valid libtool object" 5193 fi 5194 fi 5195 ;; 5196 5197 *.$libext) 5198 # An archive. 5199 deplibs="$deplibs $arg" 5200 old_deplibs="$old_deplibs $arg" 5201 continue 5202 ;; 5203 5204 *.la) 5205 # A libtool-controlled library. 5206 5207 if test "$prev" = dlfiles; then 5208 # This library was specified with -dlopen. 5209 dlfiles="$dlfiles $arg" 5210 prev= 5211 elif test "$prev" = dlprefiles; then 5212 # The library was specified with -dlpreopen. 5213 dlprefiles="$dlprefiles $arg" 5214 prev= 5215 else 5216 deplibs="$deplibs $arg" 5217 fi 5218 continue 5219 ;; 5220 5221 # Some other compiler argument. 5222 *) 5223 # Unknown arguments in both finalize_command and compile_command need 5224 # to be aesthetically quoted because they are evaled later. 5225 func_quote_for_eval "$arg" 5226 arg="$func_quote_for_eval_result" 5227 ;; 5228 esac # arg 5229 5230 # Now actually substitute the argument into the commands. 5231 if test -n "$arg"; then 5232 func_append compile_command " $arg" 5233 func_append finalize_command " $arg" 5234 fi 5235 done # argument parsing loop 5236 5237 test -n "$prev" && \ 5238 func_fatal_help "the \`$prevarg' option requires an argument" 5239 5240 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 5241 eval arg=\"$export_dynamic_flag_spec\" 5242 func_append compile_command " $arg" 5243 func_append finalize_command " $arg" 5244 fi 5245 5246 oldlibs= 5247 # calculate the name of the file, without its directory 5248 func_basename "$output" 5249 outputname="$func_basename_result" 5250 libobjs_save="$libobjs" 5251 5252 if test -n "$shlibpath_var"; then 5253 # get the directories listed in $shlibpath_var 5254 eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 5255 else 5256 shlib_search_path= 5257 fi 5258 eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 5259 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 5260 5261 func_dirname "$output" "/" "" 5262 output_objdir="$func_dirname_result$objdir" 5263 # Create the object directory. 5264 func_mkdir_p "$output_objdir" 5265 5266 # Determine the type of output 5267 case $output in 5268 "") 5269 func_fatal_help "you must specify an output file" 5270 ;; 5271 *.$libext) linkmode=oldlib ;; 5272 *.lo | *.$objext) linkmode=obj ;; 5273 *.la) linkmode=lib ;; 5274 *) linkmode=prog ;; # Anything else should be a program. 5275 esac 5276 5277 specialdeplibs= 5278 5279 libs= 5280 # Find all interdependent deplibs by searching for libraries 5281 # that are linked more than once (e.g. -la -lb -la) 5282 for deplib in $deplibs; do 5283 if $opt_duplicate_deps ; then 5284 case "$libs " in 5285 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 5286 esac 5287 fi 5288 libs="$libs $deplib" 5289 done 5290 5291 if test "$linkmode" = lib; then 5292 libs="$predeps $libs $compiler_lib_search_path $postdeps" 5293 5294 # Compute libraries that are listed more than once in $predeps 5295 # $postdeps and mark them as special (i.e., whose duplicates are 5296 # not to be eliminated). 5297 pre_post_deps= 5298 if $opt_duplicate_compiler_generated_deps; then 5299 for pre_post_dep in $predeps $postdeps; do 5300 case "$pre_post_deps " in 5301 *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; 5302 esac 5303 pre_post_deps="$pre_post_deps $pre_post_dep" 5304 done 5305 fi 5306 pre_post_deps= 5307 fi 5308 5309 deplibs= 5310 newdependency_libs= 5311 newlib_search_path= 5312 need_relink=no # whether we're linking any uninstalled libtool libraries 5313 notinst_deplibs= # not-installed libtool libraries 5314 notinst_path= # paths that contain not-installed libtool libraries 5315 5316 case $linkmode in 5317 lib) 5318 passes="conv dlpreopen link" 5319 for file in $dlfiles $dlprefiles; do 5320 case $file in 5321 *.la) ;; 5322 *) 5323 func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 5324 ;; 5325 esac 5326 done 5327 ;; 5328 prog) 5329 compile_deplibs= 5330 finalize_deplibs= 5331 alldeplibs=no 5332 newdlfiles= 5333 newdlprefiles= 5334 passes="conv scan dlopen dlpreopen link" 5335 ;; 5336 *) passes="conv" 5337 ;; 5338 esac 5339 5340 for pass in $passes; do 5341 # The preopen pass in lib mode reverses $deplibs; put it back here 5342 # so that -L comes before libs that need it for instance... 5343 if test "$linkmode,$pass" = "lib,link"; then 5344 ## FIXME: Find the place where the list is rebuilt in the wrong 5345 ## order, and fix it there properly 5346 tmp_deplibs= 5347 for deplib in $deplibs; do 5348 tmp_deplibs="$deplib $tmp_deplibs" 5349 done 5350 deplibs="$tmp_deplibs" 5351 fi 5352 5353 if test "$linkmode,$pass" = "lib,link" || 5354 test "$linkmode,$pass" = "prog,scan"; then 5355 libs="$deplibs" 5356 deplibs= 5357 fi 5358 if test "$linkmode" = prog; then 5359 case $pass in 5360 dlopen) libs="$dlfiles" ;; 5361 dlpreopen) libs="$dlprefiles" ;; 5362 link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 5363 esac 5364 fi 5365 if test "$linkmode,$pass" = "lib,dlpreopen"; then 5366 # Collect and forward deplibs of preopened libtool libs 5367 for lib in $dlprefiles; do 5368 # Ignore non-libtool-libs 5369 dependency_libs= 5370 case $lib in 5371 *.la) func_source "$lib" ;; 5372 esac 5373 5374 # Collect preopened libtool deplibs, except any this library 5375 # has declared as weak libs 5376 for deplib in $dependency_libs; do 5377 func_basename "$deplib" 5378 deplib_base=$func_basename_result 5379 case " $weak_libs " in 5380 *" $deplib_base "*) ;; 5381 *) deplibs="$deplibs $deplib" ;; 5382 esac 5383 done 5384 done 5385 libs="$dlprefiles" 5386 fi 5387 if test "$pass" = dlopen; then 5388 # Collect dlpreopened libraries 5389 save_deplibs="$deplibs" 5390 deplibs= 5391 fi 5392 5393 for deplib in $libs; do 5394 lib= 5395 found=no 5396 case $deplib in 5397 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 5398 if test "$linkmode,$pass" = "prog,link"; then 5399 compile_deplibs="$deplib $compile_deplibs" 5400 finalize_deplibs="$deplib $finalize_deplibs" 5401 else 5402 compiler_flags="$compiler_flags $deplib" 5403 if test "$linkmode" = lib ; then 5404 case "$new_inherited_linker_flags " in 5405 *" $deplib "*) ;; 5406 * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 5407 esac 5408 fi 5409 fi 5410 continue 5411 ;; 5412 -l*) 5413 if test "$linkmode" != lib && test "$linkmode" != prog; then 5414 func_warning "\`-l' is ignored for archives/objects" 5415 continue 5416 fi 5417 func_stripname '-l' '' "$deplib" 5418 name=$func_stripname_result 5419 if test "$linkmode" = lib; then 5420 searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 5421 else 5422 searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 5423 fi 5424 for searchdir in $searchdirs; do 5425 for search_ext in .la $std_shrext .so .a; do 5426 # Search the libtool library 5427 lib="$searchdir/lib${name}${search_ext}" 5428 if test -f "$lib"; then 5429 if test "$search_ext" = ".la"; then 5430 found=yes 5431 else 5432 found=no 5433 fi 5434 break 2 5435 fi 5436 done 5437 done 5438 if test "$found" != yes; then 5439 # deplib doesn't seem to be a libtool library 5440 if test "$linkmode,$pass" = "prog,link"; then 5441 compile_deplibs="$deplib $compile_deplibs" 5442 finalize_deplibs="$deplib $finalize_deplibs" 5443 else 5444 deplibs="$deplib $deplibs" 5445 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 5446 fi 5447 continue 5448 else # deplib is a libtool library 5449 # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 5450 # We need to do some special things here, and not later. 5451 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 5452 case " $predeps $postdeps " in 5453 *" $deplib "*) 5454 if func_lalib_p "$lib"; then 5455 library_names= 5456 old_library= 5457 func_source "$lib" 5458 for l in $old_library $library_names; do 5459 ll="$l" 5460 done 5461 if test "X$ll" = "X$old_library" ; then # only static version available 5462 found=no 5463 func_dirname "$lib" "" "." 5464 ladir="$func_dirname_result" 5465 lib=$ladir/$old_library 5466 if test "$linkmode,$pass" = "prog,link"; then 5467 compile_deplibs="$deplib $compile_deplibs" 5468 finalize_deplibs="$deplib $finalize_deplibs" 5469 else 5470 deplibs="$deplib $deplibs" 5471 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 5472 fi 5473 continue 5474 fi 5475 fi 5476 ;; 5477 *) ;; 5478 esac 5479 fi 5480 fi 5481 ;; # -l 5482 *.ltframework) 5483 if test "$linkmode,$pass" = "prog,link"; then 5484 compile_deplibs="$deplib $compile_deplibs" 5485 finalize_deplibs="$deplib $finalize_deplibs" 5486 else 5487 deplibs="$deplib $deplibs" 5488 if test "$linkmode" = lib ; then 5489 case "$new_inherited_linker_flags " in 5490 *" $deplib "*) ;; 5491 * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; 5492 esac 5493 fi 5494 fi 5495 continue 5496 ;; 5497 -L*) 5498 case $linkmode in 5499 lib) 5500 deplibs="$deplib $deplibs" 5501 test "$pass" = conv && continue 5502 newdependency_libs="$deplib $newdependency_libs" 5503 func_stripname '-L' '' "$deplib" 5504 newlib_search_path="$newlib_search_path $func_stripname_result" 5505 ;; 5506 prog) 5507 if test "$pass" = conv; then 5508 deplibs="$deplib $deplibs" 5509 continue 5510 fi 5511 if test "$pass" = scan; then 5512 deplibs="$deplib $deplibs" 5513 else 5514 compile_deplibs="$deplib $compile_deplibs" 5515 finalize_deplibs="$deplib $finalize_deplibs" 5516 fi 5517 func_stripname '-L' '' "$deplib" 5518 newlib_search_path="$newlib_search_path $func_stripname_result" 5519 ;; 5520 *) 5521 func_warning "\`-L' is ignored for archives/objects" 5522 ;; 5523 esac # linkmode 5524 continue 5525 ;; # -L 5526 -R*) 5527 if test "$pass" = link; then 5528 func_stripname '-R' '' "$deplib" 5529 dir=$func_stripname_result 5530 # Make sure the xrpath contains only unique directories. 5531 case "$xrpath " in 5532 *" $dir "*) ;; 5533 *) xrpath="$xrpath $dir" ;; 5534 esac 5535 fi 5536 deplibs="$deplib $deplibs" 5537 continue 5538 ;; 5539 *.la) lib="$deplib" ;; 5540 *.$libext) 5541 if test "$pass" = conv; then 5542 deplibs="$deplib $deplibs" 5543 continue 5544 fi 5545 case $linkmode in 5546 lib) 5547 # Linking convenience modules into shared libraries is allowed, 5548 # but linking other static libraries is non-portable. 5549 case " $dlpreconveniencelibs " in 5550 *" $deplib "*) ;; 5551 *) 5552 valid_a_lib=no 5553 case $deplibs_check_method in 5554 match_pattern*) 5555 set dummy $deplibs_check_method; shift 5556 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 5557 if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 5558 | $EGREP "$match_pattern_regex" > /dev/null; then 5559 valid_a_lib=yes 5560 fi 5561 ;; 5562 pass_all) 5563 valid_a_lib=yes 5564 ;; 5565 esac 5566 if test "$valid_a_lib" != yes; then 5567 echo 5568 $ECHO "*** Warning: Trying to link with static lib archive $deplib." 5569 echo "*** I have the capability to make that library automatically link in when" 5570 echo "*** you link to this library. But I can only do this if you have a" 5571 echo "*** shared version of the library, which you do not appear to have" 5572 echo "*** because the file extensions .$libext of this argument makes me believe" 5573 echo "*** that it is just a static archive that I should not use here." 5574 else 5575 echo 5576 $ECHO "*** Warning: Linking the shared library $output against the" 5577 $ECHO "*** static library $deplib is not portable!" 5578 deplibs="$deplib $deplibs" 5579 fi 5580 ;; 5581 esac 5582 continue 5583 ;; 5584 prog) 5585 if test "$pass" != link; then 5586 deplibs="$deplib $deplibs" 5587 else 5588 compile_deplibs="$deplib $compile_deplibs" 5589 finalize_deplibs="$deplib $finalize_deplibs" 5590 fi 5591 continue 5592 ;; 5593 esac # linkmode 5594 ;; # *.$libext 5595 *.lo | *.$objext) 5596 if test "$pass" = conv; then 5597 deplibs="$deplib $deplibs" 5598 elif test "$linkmode" = prog; then 5599 if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 5600 # If there is no dlopen support or we're linking statically, 5601 # we need to preload. 5602 newdlprefiles="$newdlprefiles $deplib" 5603 compile_deplibs="$deplib $compile_deplibs" 5604 finalize_deplibs="$deplib $finalize_deplibs" 5605 else 5606 newdlfiles="$newdlfiles $deplib" 5607 fi 5608 fi 5609 continue 5610 ;; 5611 %DEPLIBS%) 5612 alldeplibs=yes 5613 continue 5614 ;; 5615 esac # case $deplib 5616 5617 if test "$found" = yes || test -f "$lib"; then : 5618 else 5619 func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 5620 fi 5621 5622 # Check to see that this really is a libtool archive. 5623 func_lalib_unsafe_p "$lib" \ 5624 || func_fatal_error "\`$lib' is not a valid libtool archive" 5625 5626 func_dirname "$lib" "" "." 5627 ladir="$func_dirname_result" 5628 5629 dlname= 5630 dlopen= 5631 dlpreopen= 5632 libdir= 5633 library_names= 5634 old_library= 5635 inherited_linker_flags= 5636 # If the library was installed with an old release of libtool, 5637 # it will not redefine variables installed, or shouldnotlink 5638 installed=yes 5639 shouldnotlink=no 5640 avoidtemprpath= 5641 5642 5643 # Read the .la file 5644 func_source "$lib" 5645 5646 # Convert "-framework foo" to "foo.ltframework" 5647 if test -n "$inherited_linker_flags"; then 5648 tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 5649 for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 5650 case " $new_inherited_linker_flags " in 5651 *" $tmp_inherited_linker_flag "*) ;; 5652 *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; 5653 esac 5654 done 5655 fi 5656 dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 5657 if test "$linkmode,$pass" = "lib,link" || 5658 test "$linkmode,$pass" = "prog,scan" || 5659 { test "$linkmode" != prog && test "$linkmode" != lib; }; then 5660 test -n "$dlopen" && dlfiles="$dlfiles $dlopen" 5661 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" 5662 fi 5663 5664 if test "$pass" = conv; then 5665 # Only check for convenience libraries 5666 deplibs="$lib $deplibs" 5667 if test -z "$libdir"; then 5668 if test -z "$old_library"; then 5669 func_fatal_error "cannot find name of link library for \`$lib'" 5670 fi 5671 # It is a libtool convenience library, so add in its objects. 5672 convenience="$convenience $ladir/$objdir/$old_library" 5673 old_convenience="$old_convenience $ladir/$objdir/$old_library" 5674 elif test "$linkmode" != prog && test "$linkmode" != lib; then 5675 func_fatal_error "\`$lib' is not a convenience library" 5676 fi 5677 tmp_libs= 5678 for deplib in $dependency_libs; do 5679 deplibs="$deplib $deplibs" 5680 if $opt_duplicate_deps ; then 5681 case "$tmp_libs " in 5682 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 5683 esac 5684 fi 5685 tmp_libs="$tmp_libs $deplib" 5686 done 5687 continue 5688 fi # $pass = conv 5689 5690 5691 # Get the name of the library we link against. 5692 linklib= 5693 for l in $old_library $library_names; do 5694 linklib="$l" 5695 done 5696 if test -z "$linklib"; then 5697 func_fatal_error "cannot find name of link library for \`$lib'" 5698 fi 5699 5700 # This library was specified with -dlopen. 5701 if test "$pass" = dlopen; then 5702 if test -z "$libdir"; then 5703 func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 5704 fi 5705 if test -z "$dlname" || 5706 test "$dlopen_support" != yes || 5707 test "$build_libtool_libs" = no; then 5708 # If there is no dlname, no dlopen support or we're linking 5709 # statically, we need to preload. We also need to preload any 5710 # dependent libraries so libltdl's deplib preloader doesn't 5711 # bomb out in the load deplibs phase. 5712 dlprefiles="$dlprefiles $lib $dependency_libs" 5713 else 5714 newdlfiles="$newdlfiles $lib" 5715 fi 5716 continue 5717 fi # $pass = dlopen 5718 5719 # We need an absolute path. 5720 case $ladir in 5721 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 5722 *) 5723 abs_ladir=`cd "$ladir" && pwd` 5724 if test -z "$abs_ladir"; then 5725 func_warning "cannot determine absolute directory name of \`$ladir'" 5726 func_warning "passing it literally to the linker, although it might fail" 5727 abs_ladir="$ladir" 5728 fi 5729 ;; 5730 esac 5731 func_basename "$lib" 5732 laname="$func_basename_result" 5733 5734 # Find the relevant object directory and library name. 5735 if test "X$installed" = Xyes; then 5736 if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 5737 func_warning "library \`$lib' was moved." 5738 dir="$ladir" 5739 absdir="$abs_ladir" 5740 libdir="$abs_ladir" 5741 else 5742 dir="$libdir" 5743 absdir="$libdir" 5744 fi 5745 test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 5746 else 5747 if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 5748 dir="$ladir" 5749 absdir="$abs_ladir" 5750 # Remove this search path later 5751 notinst_path="$notinst_path $abs_ladir" 5752 else 5753 dir="$ladir/$objdir" 5754 absdir="$abs_ladir/$objdir" 5755 # Remove this search path later 5756 notinst_path="$notinst_path $abs_ladir" 5757 fi 5758 fi # $installed = yes 5759 func_stripname 'lib' '.la' "$laname" 5760 name=$func_stripname_result 5761 5762 # This library was specified with -dlpreopen. 5763 if test "$pass" = dlpreopen; then 5764 if test -z "$libdir" && test "$linkmode" = prog; then 5765 func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 5766 fi 5767 # Prefer using a static library (so that no silly _DYNAMIC symbols 5768 # are required to link). 5769 if test -n "$old_library"; then 5770 newdlprefiles="$newdlprefiles $dir/$old_library" 5771 # Keep a list of preopened convenience libraries to check 5772 # that they are being used correctly in the link pass. 5773 test -z "$libdir" && \ 5774 dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" 5775 # Otherwise, use the dlname, so that lt_dlopen finds it. 5776 elif test -n "$dlname"; then 5777 newdlprefiles="$newdlprefiles $dir/$dlname" 5778 else 5779 newdlprefiles="$newdlprefiles $dir/$linklib" 5780 fi 5781 fi # $pass = dlpreopen 5782 5783 if test -z "$libdir"; then 5784 # Link the convenience library 5785 if test "$linkmode" = lib; then 5786 deplibs="$dir/$old_library $deplibs" 5787 elif test "$linkmode,$pass" = "prog,link"; then 5788 compile_deplibs="$dir/$old_library $compile_deplibs" 5789 finalize_deplibs="$dir/$old_library $finalize_deplibs" 5790 else 5791 deplibs="$lib $deplibs" # used for prog,scan pass 5792 fi 5793 continue 5794 fi 5795 5796 5797 if test "$linkmode" = prog && test "$pass" != link; then 5798 newlib_search_path="$newlib_search_path $ladir" 5799 deplibs="$lib $deplibs" 5800 5801 linkalldeplibs=no 5802 if test "$link_all_deplibs" != no || test -z "$library_names" || 5803 test "$build_libtool_libs" = no; then 5804 linkalldeplibs=yes 5805 fi 5806 5807 tmp_libs= 5808 for deplib in $dependency_libs; do 5809 case $deplib in 5810 -L*) func_stripname '-L' '' "$deplib" 5811 newlib_search_path="$newlib_search_path $func_stripname_result" 5812 ;; 5813 esac 5814 # Need to link against all dependency_libs? 5815 if test "$linkalldeplibs" = yes; then 5816 deplibs="$deplib $deplibs" 5817 else 5818 # Need to hardcode shared library paths 5819 # or/and link against static libraries 5820 newdependency_libs="$deplib $newdependency_libs" 5821 fi 5822 if $opt_duplicate_deps ; then 5823 case "$tmp_libs " in 5824 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 5825 esac 5826 fi 5827 tmp_libs="$tmp_libs $deplib" 5828 done # for deplib 5829 continue 5830 fi # $linkmode = prog... 5831 5832 if test "$linkmode,$pass" = "prog,link"; then 5833 if test -n "$library_names" && 5834 { { test "$prefer_static_libs" = no || 5835 test "$prefer_static_libs,$installed" = "built,yes"; } || 5836 test -z "$old_library"; }; then 5837 # We need to hardcode the library path 5838 if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 5839 # Make sure the rpath contains only unique directories. 5840 case "$temp_rpath:" in 5841 *"$absdir:"*) ;; 5842 *) temp_rpath="$temp_rpath$absdir:" ;; 5843 esac 5844 fi 5845 5846 # Hardcode the library path. 5847 # Skip directories that are in the system default run-time 5848 # search path. 5849 case " $sys_lib_dlsearch_path " in 5850 *" $absdir "*) ;; 5851 *) 5852 case "$compile_rpath " in 5853 *" $absdir "*) ;; 5854 *) compile_rpath="$compile_rpath $absdir" 5855 esac 5856 ;; 5857 esac 5858 case " $sys_lib_dlsearch_path " in 5859 *" $libdir "*) ;; 5860 *) 5861 case "$finalize_rpath " in 5862 *" $libdir "*) ;; 5863 *) finalize_rpath="$finalize_rpath $libdir" 5864 esac 5865 ;; 5866 esac 5867 fi # $linkmode,$pass = prog,link... 5868 5869 if test "$alldeplibs" = yes && 5870 { test "$deplibs_check_method" = pass_all || 5871 { test "$build_libtool_libs" = yes && 5872 test -n "$library_names"; }; }; then 5873 # We only need to search for static libraries 5874 continue 5875 fi 5876 fi 5877 5878 link_static=no # Whether the deplib will be linked statically 5879 use_static_libs=$prefer_static_libs 5880 if test "$use_static_libs" = built && test "$installed" = yes; then 5881 use_static_libs=no 5882 fi 5883 if test -n "$library_names" && 5884 { test "$use_static_libs" = no || test -z "$old_library"; }; then 5885 case $host in 5886 *cygwin* | *mingw* | *cegcc*) 5887 # No point in relinking DLLs because paths are not encoded 5888 notinst_deplibs="$notinst_deplibs $lib" 5889 need_relink=no 5890 ;; 5891 *) 5892 if test "$installed" = no; then 5893 notinst_deplibs="$notinst_deplibs $lib" 5894 need_relink=yes 5895 fi 5896 ;; 5897 esac 5898 # This is a shared library 5899 5900 # Warn about portability, can't link against -module's on some 5901 # systems (darwin). Don't bleat about dlopened modules though! 5902 dlopenmodule="" 5903 for dlpremoduletest in $dlprefiles; do 5904 if test "X$dlpremoduletest" = "X$lib"; then 5905 dlopenmodule="$dlpremoduletest" 5906 break 5907 fi 5908 done 5909 if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 5910 echo 5911 if test "$linkmode" = prog; then 5912 $ECHO "*** Warning: Linking the executable $output against the loadable module" 5913 else 5914 $ECHO "*** Warning: Linking the shared library $output against the loadable module" 5915 fi 5916 $ECHO "*** $linklib is not portable!" 5917 fi 5918 if test "$linkmode" = lib && 5919 test "$hardcode_into_libs" = yes; then 5920 # Hardcode the library path. 5921 # Skip directories that are in the system default run-time 5922 # search path. 5923 case " $sys_lib_dlsearch_path " in 5924 *" $absdir "*) ;; 5925 *) 5926 case "$compile_rpath " in 5927 *" $absdir "*) ;; 5928 *) compile_rpath="$compile_rpath $absdir" 5929 esac 5930 ;; 5931 esac 5932 case " $sys_lib_dlsearch_path " in 5933 *" $libdir "*) ;; 5934 *) 5935 case "$finalize_rpath " in 5936 *" $libdir "*) ;; 5937 *) finalize_rpath="$finalize_rpath $libdir" 5938 esac 5939 ;; 5940 esac 5941 fi 5942 5943 if test -n "$old_archive_from_expsyms_cmds"; then 5944 # figure out the soname 5945 set dummy $library_names 5946 shift 5947 realname="$1" 5948 shift 5949 libname=`eval "\\$ECHO \"$libname_spec\""` 5950 # use dlname if we got it. it's perfectly good, no? 5951 if test -n "$dlname"; then 5952 soname="$dlname" 5953 elif test -n "$soname_spec"; then 5954 # bleh windows 5955 case $host in 5956 *cygwin* | mingw* | *cegcc*) 5957 func_arith $current - $age 5958 major=$func_arith_result 5959 versuffix="-$major" 5960 ;; 5961 esac 5962 eval soname=\"$soname_spec\" 5963 else 5964 soname="$realname" 5965 fi 5966 5967 # Make a new name for the extract_expsyms_cmds to use 5968 soroot="$soname" 5969 func_basename "$soroot" 5970 soname="$func_basename_result" 5971 func_stripname 'lib' '.dll' "$soname" 5972 newlib=libimp-$func_stripname_result.a 5973 5974 # If the library has no export list, then create one now 5975 if test -f "$output_objdir/$soname-def"; then : 5976 else 5977 func_verbose "extracting exported symbol list from \`$soname'" 5978 func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 5979 fi 5980 5981 # Create $newlib 5982 if test -f "$output_objdir/$newlib"; then :; else 5983 func_verbose "generating import library for \`$soname'" 5984 func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 5985 fi 5986 # make sure the library variables are pointing to the new library 5987 dir=$output_objdir 5988 linklib=$newlib 5989 fi # test -n "$old_archive_from_expsyms_cmds" 5990 5991 if test "$linkmode" = prog || test "$mode" != relink; then 5992 add_shlibpath= 5993 add_dir= 5994 add= 5995 lib_linked=yes 5996 case $hardcode_action in 5997 immediate | unsupported) 5998 if test "$hardcode_direct" = no; then 5999 add="$dir/$linklib" 6000 case $host in 6001 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 6002 *-*-sysv4*uw2*) add_dir="-L$dir" ;; 6003 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 6004 *-*-unixware7*) add_dir="-L$dir" ;; 6005 *-*-darwin* ) 6006 # if the lib is a (non-dlopened) module then we can not 6007 # link against it, someone is ignoring the earlier warnings 6008 if /usr/bin/file -L $add 2> /dev/null | 6009 $GREP ": [^:]* bundle" >/dev/null ; then 6010 if test "X$dlopenmodule" != "X$lib"; then 6011 $ECHO "*** Warning: lib $linklib is a module, not a shared library" 6012 if test -z "$old_library" ; then 6013 echo 6014 echo "*** And there doesn't seem to be a static archive available" 6015 echo "*** The link will probably fail, sorry" 6016 else 6017 add="$dir/$old_library" 6018 fi 6019 elif test -n "$old_library"; then 6020 add="$dir/$old_library" 6021 fi 6022 fi 6023 esac 6024 elif test "$hardcode_minus_L" = no; then 6025 case $host in 6026 *-*-sunos*) add_shlibpath="$dir" ;; 6027 esac 6028 add_dir="-L$dir" 6029 add="-l$name" 6030 elif test "$hardcode_shlibpath_var" = no; then 6031 add_shlibpath="$dir" 6032 add="-l$name" 6033 else 6034 lib_linked=no 6035 fi 6036 ;; 6037 relink) 6038 if test "$hardcode_direct" = yes && 6039 test "$hardcode_direct_absolute" = no; then 6040 add="$dir/$linklib" 6041 elif test "$hardcode_minus_L" = yes; then 6042 add_dir="-L$dir" 6043 # Try looking first in the location we're being installed to. 6044 if test -n "$inst_prefix_dir"; then 6045 case $libdir in 6046 [\\/]*) 6047 add_dir="$add_dir -L$inst_prefix_dir$libdir" 6048 ;; 6049 esac 6050 fi 6051 add="-l$name" 6052 elif test "$hardcode_shlibpath_var" = yes; then 6053 add_shlibpath="$dir" 6054 add="-l$name" 6055 else 6056 lib_linked=no 6057 fi 6058 ;; 6059 *) lib_linked=no ;; 6060 esac 6061 6062 if test "$lib_linked" != yes; then 6063 func_fatal_configuration "unsupported hardcode properties" 6064 fi 6065 6066 if test -n "$add_shlibpath"; then 6067 case :$compile_shlibpath: in 6068 *":$add_shlibpath:"*) ;; 6069 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; 6070 esac 6071 fi 6072 if test "$linkmode" = prog; then 6073 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 6074 test -n "$add" && compile_deplibs="$add $compile_deplibs" 6075 else 6076 test -n "$add_dir" && deplibs="$add_dir $deplibs" 6077 test -n "$add" && deplibs="$add $deplibs" 6078 if test "$hardcode_direct" != yes && 6079 test "$hardcode_minus_L" != yes && 6080 test "$hardcode_shlibpath_var" = yes; then 6081 case :$finalize_shlibpath: in 6082 *":$libdir:"*) ;; 6083 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 6084 esac 6085 fi 6086 fi 6087 fi 6088 6089 if test "$linkmode" = prog || test "$mode" = relink; then 6090 add_shlibpath= 6091 add_dir= 6092 add= 6093 # Finalize command for both is simple: just hardcode it. 6094 if test "$hardcode_direct" = yes && 6095 test "$hardcode_direct_absolute" = no; then 6096 add="$libdir/$linklib" 6097 elif test "$hardcode_minus_L" = yes; then 6098 add_dir="-L$libdir" 6099 add="-l$name" 6100 elif test "$hardcode_shlibpath_var" = yes; then 6101 case :$finalize_shlibpath: in 6102 *":$libdir:"*) ;; 6103 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; 6104 esac 6105 add="-l$name" 6106 elif test "$hardcode_automatic" = yes; then 6107 if test -n "$inst_prefix_dir" && 6108 test -f "$inst_prefix_dir$libdir/$linklib" ; then 6109 add="$inst_prefix_dir$libdir/$linklib" 6110 else 6111 add="$libdir/$linklib" 6112 fi 6113 else 6114 # We cannot seem to hardcode it, guess we'll fake it. 6115 add_dir="-L$libdir" 6116 # Try looking first in the location we're being installed to. 6117 if test -n "$inst_prefix_dir"; then 6118 case $libdir in 6119 [\\/]*) 6120 add_dir="$add_dir -L$inst_prefix_dir$libdir" 6121 ;; 6122 esac 6123 fi 6124 add="-l$name" 6125 fi 6126 6127 if test "$linkmode" = prog; then 6128 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 6129 test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 6130 else 6131 test -n "$add_dir" && deplibs="$add_dir $deplibs" 6132 test -n "$add" && deplibs="$add $deplibs" 6133 fi 6134 fi 6135 elif test "$linkmode" = prog; then 6136 # Here we assume that one of hardcode_direct or hardcode_minus_L 6137 # is not unsupported. This is valid on all known static and 6138 # shared platforms. 6139 if test "$hardcode_direct" != unsupported; then 6140 test -n "$old_library" && linklib="$old_library" 6141 compile_deplibs="$dir/$linklib $compile_deplibs" 6142 finalize_deplibs="$dir/$linklib $finalize_deplibs" 6143 else 6144 compile_deplibs="-l$name -L$dir $compile_deplibs" 6145 finalize_deplibs="-l$name -L$dir $finalize_deplibs" 6146 fi 6147 elif test "$build_libtool_libs" = yes; then 6148 # Not a shared library 6149 if test "$deplibs_check_method" != pass_all; then 6150 # We're trying link a shared library against a static one 6151 # but the system doesn't support it. 6152 6153 # Just print a warning and add the library to dependency_libs so 6154 # that the program can be linked against the static library. 6155 echo 6156 $ECHO "*** Warning: This system can not link to static lib archive $lib." 6157 echo "*** I have the capability to make that library automatically link in when" 6158 echo "*** you link to this library. But I can only do this if you have a" 6159 echo "*** shared version of the library, which you do not appear to have." 6160 if test "$module" = yes; then 6161 echo "*** But as you try to build a module library, libtool will still create " 6162 echo "*** a static module, that should work as long as the dlopening application" 6163 echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 6164 if test -z "$global_symbol_pipe"; then 6165 echo 6166 echo "*** However, this would only work if libtool was able to extract symbol" 6167 echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 6168 echo "*** not find such a program. So, this module is probably useless." 6169 echo "*** \`nm' from GNU binutils and a full rebuild may help." 6170 fi 6171 if test "$build_old_libs" = no; then 6172 build_libtool_libs=module 6173 build_old_libs=yes 6174 else 6175 build_libtool_libs=no 6176 fi 6177 fi 6178 else 6179 deplibs="$dir/$old_library $deplibs" 6180 link_static=yes 6181 fi 6182 fi # link shared/static library? 6183 6184 if test "$linkmode" = lib; then 6185 if test -n "$dependency_libs" && 6186 { test "$hardcode_into_libs" != yes || 6187 test "$build_old_libs" = yes || 6188 test "$link_static" = yes; }; then 6189 # Extract -R from dependency_libs 6190 temp_deplibs= 6191 for libdir in $dependency_libs; do 6192 case $libdir in 6193 -R*) func_stripname '-R' '' "$libdir" 6194 temp_xrpath=$func_stripname_result 6195 case " $xrpath " in 6196 *" $temp_xrpath "*) ;; 6197 *) xrpath="$xrpath $temp_xrpath";; 6198 esac;; 6199 *) temp_deplibs="$temp_deplibs $libdir";; 6200 esac 6201 done 6202 dependency_libs="$temp_deplibs" 6203 fi 6204 6205 newlib_search_path="$newlib_search_path $absdir" 6206 # Link against this library 6207 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 6208 # ... and its dependency_libs 6209 tmp_libs= 6210 for deplib in $dependency_libs; do 6211 newdependency_libs="$deplib $newdependency_libs" 6212 if $opt_duplicate_deps ; then 6213 case "$tmp_libs " in 6214 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; 6215 esac 6216 fi 6217 tmp_libs="$tmp_libs $deplib" 6218 done 6219 6220 if test "$link_all_deplibs" != no; then 6221 # Add the search paths of all dependency libraries 6222 for deplib in $dependency_libs; do 6223 path= 6224 case $deplib in 6225 -L*) path="$deplib" ;; 6226 *.la) 6227 func_dirname "$deplib" "" "." 6228 dir="$func_dirname_result" 6229 # We need an absolute path. 6230 case $dir in 6231 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 6232 *) 6233 absdir=`cd "$dir" && pwd` 6234 if test -z "$absdir"; then 6235 func_warning "cannot determine absolute directory name of \`$dir'" 6236 absdir="$dir" 6237 fi 6238 ;; 6239 esac 6240 if $GREP "^installed=no" $deplib > /dev/null; then 6241 case $host in 6242 *-*-darwin*) 6243 depdepl= 6244 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 6245 if test -n "$deplibrary_names" ; then 6246 for tmp in $deplibrary_names ; do 6247 depdepl=$tmp 6248 done 6249 if test -f "$absdir/$objdir/$depdepl" ; then 6250 depdepl="$absdir/$objdir/$depdepl" 6251 darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 6252 if test -z "$darwin_install_name"; then 6253 darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 6254 fi 6255 compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 6256 linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" 6257 path= 6258 fi 6259 fi 6260 ;; 6261 *) 6262 path="-L$absdir/$objdir" 6263 ;; 6264 esac 6265 else 6266 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 6267 test -z "$libdir" && \ 6268 func_fatal_error "\`$deplib' is not a valid libtool archive" 6269 test "$absdir" != "$libdir" && \ 6270 func_warning "\`$deplib' seems to be moved" 6271 6272 path="-L$absdir" 6273 fi 6274 ;; 6275 esac 6276 case " $deplibs " in 6277 *" $path "*) ;; 6278 *) deplibs="$path $deplibs" ;; 6279 esac 6280 done 6281 fi # link_all_deplibs != no 6282 fi # linkmode = lib 6283 done # for deplib in $libs 6284 if test "$pass" = link; then 6285 if test "$linkmode" = "prog"; then 6286 compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 6287 finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 6288 else 6289 compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 6290 fi 6291 fi 6292 dependency_libs="$newdependency_libs" 6293 if test "$pass" = dlpreopen; then 6294 # Link the dlpreopened libraries before other libraries 6295 for deplib in $save_deplibs; do 6296 deplibs="$deplib $deplibs" 6297 done 6298 fi 6299 if test "$pass" != dlopen; then 6300 if test "$pass" != conv; then 6301 # Make sure lib_search_path contains only unique directories. 6302 lib_search_path= 6303 for dir in $newlib_search_path; do 6304 case "$lib_search_path " in 6305 *" $dir "*) ;; 6306 *) lib_search_path="$lib_search_path $dir" ;; 6307 esac 6308 done 6309 newlib_search_path= 6310 fi 6311 6312 if test "$linkmode,$pass" != "prog,link"; then 6313 vars="deplibs" 6314 else 6315 vars="compile_deplibs finalize_deplibs" 6316 fi 6317 for var in $vars dependency_libs; do 6318 # Add libraries to $var in reverse order 6319 eval tmp_libs=\"\$$var\" 6320 new_libs= 6321 for deplib in $tmp_libs; do 6322 # FIXME: Pedantically, this is the right thing to do, so 6323 # that some nasty dependency loop isn't accidentally 6324 # broken: 6325 #new_libs="$deplib $new_libs" 6326 # Pragmatically, this seems to cause very few problems in 6327 # practice: 6328 case $deplib in 6329 -L*) new_libs="$deplib $new_libs" ;; 6330 -R*) ;; 6331 *) 6332 # And here is the reason: when a library appears more 6333 # than once as an explicit dependence of a library, or 6334 # is implicitly linked in more than once by the 6335 # compiler, it is considered special, and multiple 6336 # occurrences thereof are not removed. Compare this 6337 # with having the same library being listed as a 6338 # dependency of multiple other libraries: in this case, 6339 # we know (pedantically, we assume) the library does not 6340 # need to be listed more than once, so we keep only the 6341 # last copy. This is not always right, but it is rare 6342 # enough that we require users that really mean to play 6343 # such unportable linking tricks to link the library 6344 # using -Wl,-lname, so that libtool does not consider it 6345 # for duplicate removal. 6346 case " $specialdeplibs " in 6347 *" $deplib "*) new_libs="$deplib $new_libs" ;; 6348 *) 6349 case " $new_libs " in 6350 *" $deplib "*) ;; 6351 *) new_libs="$deplib $new_libs" ;; 6352 esac 6353 ;; 6354 esac 6355 ;; 6356 esac 6357 done 6358 tmp_libs= 6359 for deplib in $new_libs; do 6360 case $deplib in 6361 -L*) 6362 case " $tmp_libs " in 6363 *" $deplib "*) ;; 6364 *) tmp_libs="$tmp_libs $deplib" ;; 6365 esac 6366 ;; 6367 *) tmp_libs="$tmp_libs $deplib" ;; 6368 esac 6369 done 6370 eval $var=\"$tmp_libs\" 6371 done # for var 6372 fi 6373 # Last step: remove runtime libs from dependency_libs 6374 # (they stay in deplibs) 6375 tmp_libs= 6376 for i in $dependency_libs ; do 6377 case " $predeps $postdeps $compiler_lib_search_path " in 6378 *" $i "*) 6379 i="" 6380 ;; 6381 esac 6382 if test -n "$i" ; then 6383 tmp_libs="$tmp_libs $i" 6384 fi 6385 done 6386 dependency_libs=$tmp_libs 6387 done # for pass 6388 if test "$linkmode" = prog; then 6389 dlfiles="$newdlfiles" 6390 fi 6391 if test "$linkmode" = prog || test "$linkmode" = lib; then 6392 dlprefiles="$newdlprefiles" 6393 fi 6394 6395 case $linkmode in 6396 oldlib) 6397 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 6398 func_warning "\`-dlopen' is ignored for archives" 6399 fi 6400 6401 case " $deplibs" in 6402 *\ -l* | *\ -L*) 6403 func_warning "\`-l' and \`-L' are ignored for archives" ;; 6404 esac 6405 6406 test -n "$rpath" && \ 6407 func_warning "\`-rpath' is ignored for archives" 6408 6409 test -n "$xrpath" && \ 6410 func_warning "\`-R' is ignored for archives" 6411 6412 test -n "$vinfo" && \ 6413 func_warning "\`-version-info/-version-number' is ignored for archives" 6414 6415 test -n "$release" && \ 6416 func_warning "\`-release' is ignored for archives" 6417 6418 test -n "$export_symbols$export_symbols_regex" && \ 6419 func_warning "\`-export-symbols' is ignored for archives" 6420 6421 # Now set the variables for building old libraries. 6422 build_libtool_libs=no 6423 oldlibs="$output" 6424 objs="$objs$old_deplibs" 6425 ;; 6426 6427 lib) 6428 # Make sure we only generate libraries of the form `libNAME.la'. 6429 case $outputname in 6430 lib*) 6431 func_stripname 'lib' '.la' "$outputname" 6432 name=$func_stripname_result 6433 eval shared_ext=\"$shrext_cmds\" 6434 eval libname=\"$libname_spec\" 6435 ;; 6436 *) 6437 test "$module" = no && \ 6438 func_fatal_help "libtool library \`$output' must begin with \`lib'" 6439 6440 if test "$need_lib_prefix" != no; then 6441 # Add the "lib" prefix for modules if required 6442 func_stripname '' '.la' "$outputname" 6443 name=$func_stripname_result 6444 eval shared_ext=\"$shrext_cmds\" 6445 eval libname=\"$libname_spec\" 6446 else 6447 func_stripname '' '.la' "$outputname" 6448 libname=$func_stripname_result 6449 fi 6450 ;; 6451 esac 6452 6453 if test -n "$objs"; then 6454 if test "$deplibs_check_method" != pass_all; then 6455 func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 6456 else 6457 echo 6458 $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 6459 $ECHO "*** objects $objs is not portable!" 6460 libobjs="$libobjs $objs" 6461 fi 6462 fi 6463 6464 test "$dlself" != no && \ 6465 func_warning "\`-dlopen self' is ignored for libtool libraries" 6466 6467 set dummy $rpath 6468 shift 6469 test "$#" -gt 1 && \ 6470 func_warning "ignoring multiple \`-rpath's for a libtool library" 6471 6472 install_libdir="$1" 6473 6474 oldlibs= 6475 if test -z "$rpath"; then 6476 if test "$build_libtool_libs" = yes; then 6477 # Building a libtool convenience library. 6478 # Some compilers have problems with a `.al' extension so 6479 # convenience libraries should have the same extension an 6480 # archive normally would. 6481 oldlibs="$output_objdir/$libname.$libext $oldlibs" 6482 build_libtool_libs=convenience 6483 build_old_libs=yes 6484 fi 6485 6486 test -n "$vinfo" && \ 6487 func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 6488 6489 test -n "$release" && \ 6490 func_warning "\`-release' is ignored for convenience libraries" 6491 else 6492 6493 # Parse the version information argument. 6494 save_ifs="$IFS"; IFS=':' 6495 set dummy $vinfo 0 0 0 6496 shift 6497 IFS="$save_ifs" 6498 6499 test -n "$7" && \ 6500 func_fatal_help "too many parameters to \`-version-info'" 6501 6502 # convert absolute version numbers to libtool ages 6503 # this retains compatibility with .la files and attempts 6504 # to make the code below a bit more comprehensible 6505 6506 case $vinfo_number in 6507 yes) 6508 number_major="$1" 6509 number_minor="$2" 6510 number_revision="$3" 6511 # 6512 # There are really only two kinds -- those that 6513 # use the current revision as the major version 6514 # and those that subtract age and use age as 6515 # a minor version. But, then there is irix 6516 # which has an extra 1 added just for fun 6517 # 6518 case $version_type in 6519 darwin|linux|osf|windows|none) 6520 func_arith $number_major + $number_minor 6521 current=$func_arith_result 6522 age="$number_minor" 6523 revision="$number_revision" 6524 ;; 6525 freebsd-aout|freebsd-elf|qnx|sunos) 6526 current="$number_major" 6527 revision="$number_minor" 6528 age="0" 6529 ;; 6530 irix|nonstopux) 6531 func_arith $number_major + $number_minor 6532 current=$func_arith_result 6533 age="$number_minor" 6534 revision="$number_minor" 6535 lt_irix_increment=no 6536 ;; 6537 esac 6538 ;; 6539 no) 6540 current="$1" 6541 revision="$2" 6542 age="$3" 6543 ;; 6544 esac 6545 6546 # Check that each of the things are valid numbers. 6547 case $current in 6548 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]) ;; 6549 *) 6550 func_error "CURRENT \`$current' must be a nonnegative integer" 6551 func_fatal_error "\`$vinfo' is not valid version information" 6552 ;; 6553 esac 6554 6555 case $revision in 6556 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]) ;; 6557 *) 6558 func_error "REVISION \`$revision' must be a nonnegative integer" 6559 func_fatal_error "\`$vinfo' is not valid version information" 6560 ;; 6561 esac 6562 6563 case $age in 6564 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]) ;; 6565 *) 6566 func_error "AGE \`$age' must be a nonnegative integer" 6567 func_fatal_error "\`$vinfo' is not valid version information" 6568 ;; 6569 esac 6570 6571 if test "$age" -gt "$current"; then 6572 func_error "AGE \`$age' is greater than the current interface number \`$current'" 6573 func_fatal_error "\`$vinfo' is not valid version information" 6574 fi 6575 6576 # Calculate the version variables. 6577 major= 6578 versuffix= 6579 verstring= 6580 case $version_type in 6581 none) ;; 6582 6583 darwin) 6584 # Like Linux, but with the current version available in 6585 # verstring for coding it into the library header 6586 func_arith $current - $age 6587 major=.$func_arith_result 6588 versuffix="$major.$age.$revision" 6589 # Darwin ld doesn't like 0 for these options... 6590 func_arith $current + 1 6591 minor_current=$func_arith_result 6592 xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 6593 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 6594 ;; 6595 6596 freebsd-aout) 6597 major=".$current" 6598 versuffix=".$current.$revision"; 6599 ;; 6600 6601 freebsd-elf) 6602 major=".$current" 6603 versuffix=".$current" 6604 ;; 6605 6606 irix | nonstopux) 6607 if test "X$lt_irix_increment" = "Xno"; then 6608 func_arith $current - $age 6609 else 6610 func_arith $current - $age + 1 6611 fi 6612 major=$func_arith_result 6613 6614 case $version_type in 6615 nonstopux) verstring_prefix=nonstopux ;; 6616 *) verstring_prefix=sgi ;; 6617 esac 6618 verstring="$verstring_prefix$major.$revision" 6619 6620 # Add in all the interfaces that we are compatible with. 6621 loop=$revision 6622 while test "$loop" -ne 0; do 6623 func_arith $revision - $loop 6624 iface=$func_arith_result 6625 func_arith $loop - 1 6626 loop=$func_arith_result 6627 verstring="$verstring_prefix$major.$iface:$verstring" 6628 done 6629 6630 # Before this point, $major must not contain `.'. 6631 major=.$major 6632 versuffix="$major.$revision" 6633 ;; 6634 6635 linux) 6636 func_arith $current - $age 6637 major=.$func_arith_result 6638 versuffix="$major.$age.$revision" 6639 ;; 6640 6641 osf) 6642 func_arith $current - $age 6643 major=.$func_arith_result 6644 versuffix=".$current.$age.$revision" 6645 verstring="$current.$age.$revision" 6646 6647 # Add in all the interfaces that we are compatible with. 6648 loop=$age 6649 while test "$loop" -ne 0; do 6650 func_arith $current - $loop 6651 iface=$func_arith_result 6652 func_arith $loop - 1 6653 loop=$func_arith_result 6654 verstring="$verstring:${iface}.0" 6655 done 6656 6657 # Make executables depend on our current version. 6658 verstring="$verstring:${current}.0" 6659 ;; 6660 6661 qnx) 6662 major=".$current" 6663 versuffix=".$current" 6664 ;; 6665 6666 sunos) 6667 major=".$current" 6668 versuffix=".$current.$revision" 6669 ;; 6670 6671 windows) 6672 # Use '-' rather than '.', since we only want one 6673 # extension on DOS 8.3 filesystems. 6674 func_arith $current - $age 6675 major=$func_arith_result 6676 versuffix="-$major" 6677 ;; 6678 6679 *) 6680 func_fatal_configuration "unknown library version type \`$version_type'" 6681 ;; 6682 esac 6683 6684 # Clear the version info if we defaulted, and they specified a release. 6685 if test -z "$vinfo" && test -n "$release"; then 6686 major= 6687 case $version_type in 6688 darwin) 6689 # we can't check for "0.0" in archive_cmds due to quoting 6690 # problems, so we reset it completely 6691 verstring= 6692 ;; 6693 *) 6694 verstring="0.0" 6695 ;; 6696 esac 6697 if test "$need_version" = no; then 6698 versuffix= 6699 else 6700 versuffix=".0.0" 6701 fi 6702 fi 6703 6704 # Remove version info from name if versioning should be avoided 6705 if test "$avoid_version" = yes && test "$need_version" = no; then 6706 major= 6707 versuffix= 6708 verstring="" 6709 fi 6710 6711 # Check to see if the archive will have undefined symbols. 6712 if test "$allow_undefined" = yes; then 6713 if test "$allow_undefined_flag" = unsupported; then 6714 func_warning "undefined symbols not allowed in $host shared libraries" 6715 build_libtool_libs=no 6716 build_old_libs=yes 6717 fi 6718 else 6719 # Don't allow undefined symbols. 6720 allow_undefined_flag="$no_undefined_flag" 6721 fi 6722 6723 fi 6724 6725 func_generate_dlsyms "$libname" "$libname" "yes" 6726 libobjs="$libobjs $symfileobj" 6727 test "X$libobjs" = "X " && libobjs= 6728 6729 if test "$mode" != relink; then 6730 # Remove our outputs, but don't remove object files since they 6731 # may have been created when compiling PIC objects. 6732 removelist= 6733 tempremovelist=`$ECHO "$output_objdir/*"` 6734 for p in $tempremovelist; do 6735 case $p in 6736 *.$objext | *.gcno) 6737 ;; 6738 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 6739 if test "X$precious_files_regex" != "X"; then 6740 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 6741 then 6742 continue 6743 fi 6744 fi 6745 removelist="$removelist $p" 6746 ;; 6747 *) ;; 6748 esac 6749 done 6750 test -n "$removelist" && \ 6751 func_show_eval "${RM}r \$removelist" 6752 fi 6753 6754 # Now set the variables for building old libraries. 6755 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 6756 oldlibs="$oldlibs $output_objdir/$libname.$libext" 6757 6758 # Transform .lo files to .o files. 6759 oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 6760 fi 6761 6762 # Eliminate all temporary directories. 6763 #for path in $notinst_path; do 6764 # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 6765 # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 6766 # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 6767 #done 6768 6769 if test -n "$xrpath"; then 6770 # If the user specified any rpath flags, then add them. 6771 temp_xrpath= 6772 for libdir in $xrpath; do 6773 temp_xrpath="$temp_xrpath -R$libdir" 6774 case "$finalize_rpath " in 6775 *" $libdir "*) ;; 6776 *) finalize_rpath="$finalize_rpath $libdir" ;; 6777 esac 6778 done 6779 if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 6780 dependency_libs="$temp_xrpath $dependency_libs" 6781 fi 6782 fi 6783 6784 # Make sure dlfiles contains only unique files that won't be dlpreopened 6785 old_dlfiles="$dlfiles" 6786 dlfiles= 6787 for lib in $old_dlfiles; do 6788 case " $dlprefiles $dlfiles " in 6789 *" $lib "*) ;; 6790 *) dlfiles="$dlfiles $lib" ;; 6791 esac 6792 done 6793 6794 # Make sure dlprefiles contains only unique files 6795 old_dlprefiles="$dlprefiles" 6796 dlprefiles= 6797 for lib in $old_dlprefiles; do 6798 case "$dlprefiles " in 6799 *" $lib "*) ;; 6800 *) dlprefiles="$dlprefiles $lib" ;; 6801 esac 6802 done 6803 6804 if test "$build_libtool_libs" = yes; then 6805 if test -n "$rpath"; then 6806 case $host in 6807 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 6808 # these systems don't actually have a c library (as such)! 6809 ;; 6810 *-*-rhapsody* | *-*-darwin1.[012]) 6811 # Rhapsody C library is in the System framework 6812 deplibs="$deplibs System.ltframework" 6813 ;; 6814 *-*-netbsd*) 6815 # Don't link with libc until the a.out ld.so is fixed. 6816 ;; 6817 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 6818 # Do not include libc due to us having libc/libc_r. 6819 ;; 6820 *-*-sco3.2v5* | *-*-sco5v6*) 6821 # Causes problems with __ctype 6822 ;; 6823 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 6824 # Compiler inserts libc in the correct place for threads to work 6825 ;; 6826 *) 6827 # Add libc to deplibs on all other systems if necessary. 6828 if test "$build_libtool_need_lc" = "yes"; then 6829 deplibs="$deplibs -lc" 6830 fi 6831 ;; 6832 esac 6833 fi 6834 6835 # Transform deplibs into only deplibs that can be linked in shared. 6836 name_save=$name 6837 libname_save=$libname 6838 release_save=$release 6839 versuffix_save=$versuffix 6840 major_save=$major 6841 # I'm not sure if I'm treating the release correctly. I think 6842 # release should show up in the -l (ie -lgmp5) so we don't want to 6843 # add it in twice. Is that correct? 6844 release="" 6845 versuffix="" 6846 major="" 6847 newdeplibs= 6848 droppeddeps=no 6849 case $deplibs_check_method in 6850 pass_all) 6851 # Don't check for shared/static. Everything works. 6852 # This might be a little naive. We might want to check 6853 # whether the library exists or not. But this is on 6854 # osf3 & osf4 and I'm not really sure... Just 6855 # implementing what was already the behavior. 6856 newdeplibs=$deplibs 6857 ;; 6858 test_compile) 6859 # This code stresses the "libraries are programs" paradigm to its 6860 # limits. Maybe even breaks it. We compile a program, linking it 6861 # against the deplibs as a proxy for the library. Then we can check 6862 # whether they linked in statically or dynamically with ldd. 6863 $opt_dry_run || $RM conftest.c 6864 cat > conftest.c <<EOF 6865 int main() { return 0; } 6866 EOF 6867 $opt_dry_run || $RM conftest 6868 if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 6869 ldd_output=`ldd conftest` 6870 for i in $deplibs; do 6871 case $i in 6872 -l*) 6873 func_stripname -l '' "$i" 6874 name=$func_stripname_result 6875 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6876 case " $predeps $postdeps " in 6877 *" $i "*) 6878 newdeplibs="$newdeplibs $i" 6879 i="" 6880 ;; 6881 esac 6882 fi 6883 if test -n "$i" ; then 6884 libname=`eval "\\$ECHO \"$libname_spec\""` 6885 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 6886 set dummy $deplib_matches; shift 6887 deplib_match=$1 6888 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 6889 newdeplibs="$newdeplibs $i" 6890 else 6891 droppeddeps=yes 6892 echo 6893 $ECHO "*** Warning: dynamic linker does not accept needed library $i." 6894 echo "*** I have the capability to make that library automatically link in when" 6895 echo "*** you link to this library. But I can only do this if you have a" 6896 echo "*** shared version of the library, which I believe you do not have" 6897 echo "*** because a test_compile did reveal that the linker did not use it for" 6898 echo "*** its dynamic dependency list that programs get resolved with at runtime." 6899 fi 6900 fi 6901 ;; 6902 *) 6903 newdeplibs="$newdeplibs $i" 6904 ;; 6905 esac 6906 done 6907 else 6908 # Error occurred in the first compile. Let's try to salvage 6909 # the situation: Compile a separate program for each library. 6910 for i in $deplibs; do 6911 case $i in 6912 -l*) 6913 func_stripname -l '' "$i" 6914 name=$func_stripname_result 6915 $opt_dry_run || $RM conftest 6916 if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 6917 ldd_output=`ldd conftest` 6918 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6919 case " $predeps $postdeps " in 6920 *" $i "*) 6921 newdeplibs="$newdeplibs $i" 6922 i="" 6923 ;; 6924 esac 6925 fi 6926 if test -n "$i" ; then 6927 libname=`eval "\\$ECHO \"$libname_spec\""` 6928 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 6929 set dummy $deplib_matches; shift 6930 deplib_match=$1 6931 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 6932 newdeplibs="$newdeplibs $i" 6933 else 6934 droppeddeps=yes 6935 echo 6936 $ECHO "*** Warning: dynamic linker does not accept needed library $i." 6937 echo "*** I have the capability to make that library automatically link in when" 6938 echo "*** you link to this library. But I can only do this if you have a" 6939 echo "*** shared version of the library, which you do not appear to have" 6940 echo "*** because a test_compile did reveal that the linker did not use this one" 6941 echo "*** as a dynamic dependency that programs can get resolved with at runtime." 6942 fi 6943 fi 6944 else 6945 droppeddeps=yes 6946 echo 6947 $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 6948 echo "*** make it link in! You will probably need to install it or some" 6949 echo "*** library that it depends on before this library will be fully" 6950 echo "*** functional. Installing it before continuing would be even better." 6951 fi 6952 ;; 6953 *) 6954 newdeplibs="$newdeplibs $i" 6955 ;; 6956 esac 6957 done 6958 fi 6959 ;; 6960 file_magic*) 6961 set dummy $deplibs_check_method; shift 6962 file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6963 for a_deplib in $deplibs; do 6964 case $a_deplib in 6965 -l*) 6966 func_stripname -l '' "$a_deplib" 6967 name=$func_stripname_result 6968 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6969 case " $predeps $postdeps " in 6970 *" $a_deplib "*) 6971 newdeplibs="$newdeplibs $a_deplib" 6972 a_deplib="" 6973 ;; 6974 esac 6975 fi 6976 if test -n "$a_deplib" ; then 6977 libname=`eval "\\$ECHO \"$libname_spec\""` 6978 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 6979 potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 6980 for potent_lib in $potential_libs; do 6981 # Follow soft links. 6982 if ls -lLd "$potent_lib" 2>/dev/null | 6983 $GREP " -> " >/dev/null; then 6984 continue 6985 fi 6986 # The statement above tries to avoid entering an 6987 # endless loop below, in case of cyclic links. 6988 # We might still enter an endless loop, since a link 6989 # loop can be closed while we follow links, 6990 # but so what? 6991 potlib="$potent_lib" 6992 while test -h "$potlib" 2>/dev/null; do 6993 potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 6994 case $potliblink in 6995 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 6996 *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 6997 esac 6998 done 6999 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 7000 $SED -e 10q | 7001 $EGREP "$file_magic_regex" > /dev/null; then 7002 newdeplibs="$newdeplibs $a_deplib" 7003 a_deplib="" 7004 break 2 7005 fi 7006 done 7007 done 7008 fi 7009 if test -n "$a_deplib" ; then 7010 droppeddeps=yes 7011 echo 7012 $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7013 echo "*** I have the capability to make that library automatically link in when" 7014 echo "*** you link to this library. But I can only do this if you have a" 7015 echo "*** shared version of the library, which you do not appear to have" 7016 echo "*** because I did check the linker path looking for a file starting" 7017 if test -z "$potlib" ; then 7018 $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 7019 else 7020 $ECHO "*** with $libname and none of the candidates passed a file format test" 7021 $ECHO "*** using a file magic. Last file checked: $potlib" 7022 fi 7023 fi 7024 ;; 7025 *) 7026 # Add a -L argument. 7027 newdeplibs="$newdeplibs $a_deplib" 7028 ;; 7029 esac 7030 done # Gone through all deplibs. 7031 ;; 7032 match_pattern*) 7033 set dummy $deplibs_check_method; shift 7034 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7035 for a_deplib in $deplibs; do 7036 case $a_deplib in 7037 -l*) 7038 func_stripname -l '' "$a_deplib" 7039 name=$func_stripname_result 7040 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7041 case " $predeps $postdeps " in 7042 *" $a_deplib "*) 7043 newdeplibs="$newdeplibs $a_deplib" 7044 a_deplib="" 7045 ;; 7046 esac 7047 fi 7048 if test -n "$a_deplib" ; then 7049 libname=`eval "\\$ECHO \"$libname_spec\""` 7050 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7051 potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 7052 for potent_lib in $potential_libs; do 7053 potlib="$potent_lib" # see symlink-check above in file_magic test 7054 if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 7055 $EGREP "$match_pattern_regex" > /dev/null; then 7056 newdeplibs="$newdeplibs $a_deplib" 7057 a_deplib="" 7058 break 2 7059 fi 7060 done 7061 done 7062 fi 7063 if test -n "$a_deplib" ; then 7064 droppeddeps=yes 7065 echo 7066 $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7067 echo "*** I have the capability to make that library automatically link in when" 7068 echo "*** you link to this library. But I can only do this if you have a" 7069 echo "*** shared version of the library, which you do not appear to have" 7070 echo "*** because I did check the linker path looking for a file starting" 7071 if test -z "$potlib" ; then 7072 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 7073 else 7074 $ECHO "*** with $libname and none of the candidates passed a file format test" 7075 $ECHO "*** using a regex pattern. Last file checked: $potlib" 7076 fi 7077 fi 7078 ;; 7079 *) 7080 # Add a -L argument. 7081 newdeplibs="$newdeplibs $a_deplib" 7082 ;; 7083 esac 7084 done # Gone through all deplibs. 7085 ;; 7086 none | unknown | *) 7087 newdeplibs="" 7088 tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 7089 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7090 for i in $predeps $postdeps ; do 7091 # can't use Xsed below, because $i might contain '/' 7092 tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 7093 done 7094 fi 7095 case $tmp_deplibs in 7096 *[!\ \ ]*) 7097 echo 7098 if test "X$deplibs_check_method" = "Xnone"; then 7099 echo "*** Warning: inter-library dependencies are not supported in this platform." 7100 else 7101 echo "*** Warning: inter-library dependencies are not known to be supported." 7102 fi 7103 echo "*** All declared inter-library dependencies are being dropped." 7104 droppeddeps=yes 7105 ;; 7106 esac 7107 ;; 7108 esac 7109 versuffix=$versuffix_save 7110 major=$major_save 7111 release=$release_save 7112 libname=$libname_save 7113 name=$name_save 7114 7115 case $host in 7116 *-*-rhapsody* | *-*-darwin1.[012]) 7117 # On Rhapsody replace the C library with the System framework 7118 newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 7119 ;; 7120 esac 7121 7122 if test "$droppeddeps" = yes; then 7123 if test "$module" = yes; then 7124 echo 7125 echo "*** Warning: libtool could not satisfy all declared inter-library" 7126 $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 7127 echo "*** a static module, that should work as long as the dlopening" 7128 echo "*** application is linked with the -dlopen flag." 7129 if test -z "$global_symbol_pipe"; then 7130 echo 7131 echo "*** However, this would only work if libtool was able to extract symbol" 7132 echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 7133 echo "*** not find such a program. So, this module is probably useless." 7134 echo "*** \`nm' from GNU binutils and a full rebuild may help." 7135 fi 7136 if test "$build_old_libs" = no; then 7137 oldlibs="$output_objdir/$libname.$libext" 7138 build_libtool_libs=module 7139 build_old_libs=yes 7140 else 7141 build_libtool_libs=no 7142 fi 7143 else 7144 echo "*** The inter-library dependencies that have been dropped here will be" 7145 echo "*** automatically added whenever a program is linked with this library" 7146 echo "*** or is declared to -dlopen it." 7147 7148 if test "$allow_undefined" = no; then 7149 echo 7150 echo "*** Since this library must not contain undefined symbols," 7151 echo "*** because either the platform does not support them or" 7152 echo "*** it was explicitly requested with -no-undefined," 7153 echo "*** libtool will only create a static version of it." 7154 if test "$build_old_libs" = no; then 7155 oldlibs="$output_objdir/$libname.$libext" 7156 build_libtool_libs=module 7157 build_old_libs=yes 7158 else 7159 build_libtool_libs=no 7160 fi 7161 fi 7162 fi 7163 fi 7164 # Done checking deplibs! 7165 deplibs=$newdeplibs 7166 fi 7167 # Time to change all our "foo.ltframework" stuff back to "-framework foo" 7168 case $host in 7169 *-*-darwin*) 7170 newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7171 new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7172 deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7173 ;; 7174 esac 7175 7176 # move library search paths that coincide with paths to not yet 7177 # installed libraries to the beginning of the library search list 7178 new_libs= 7179 for path in $notinst_path; do 7180 case " $new_libs " in 7181 *" -L$path/$objdir "*) ;; 7182 *) 7183 case " $deplibs " in 7184 *" -L$path/$objdir "*) 7185 new_libs="$new_libs -L$path/$objdir" ;; 7186 esac 7187 ;; 7188 esac 7189 done 7190 for deplib in $deplibs; do 7191 case $deplib in 7192 -L*) 7193 case " $new_libs " in 7194 *" $deplib "*) ;; 7195 *) new_libs="$new_libs $deplib" ;; 7196 esac 7197 ;; 7198 *) new_libs="$new_libs $deplib" ;; 7199 esac 7200 done 7201 deplibs="$new_libs" 7202 7203 # All the library-specific variables (install_libdir is set above). 7204 library_names= 7205 old_library= 7206 dlname= 7207 7208 # Test again, we may have decided not to build it any more 7209 if test "$build_libtool_libs" = yes; then 7210 if test "$hardcode_into_libs" = yes; then 7211 # Hardcode the library paths 7212 hardcode_libdirs= 7213 dep_rpath= 7214 rpath="$finalize_rpath" 7215 test "$mode" != relink && rpath="$compile_rpath$rpath" 7216 for libdir in $rpath; do 7217 if test -n "$hardcode_libdir_flag_spec"; then 7218 if test -n "$hardcode_libdir_separator"; then 7219 if test -z "$hardcode_libdirs"; then 7220 hardcode_libdirs="$libdir" 7221 else 7222 # Just accumulate the unique libdirs. 7223 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 7224 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 7225 ;; 7226 *) 7227 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 7228 ;; 7229 esac 7230 fi 7231 else 7232 eval flag=\"$hardcode_libdir_flag_spec\" 7233 dep_rpath="$dep_rpath $flag" 7234 fi 7235 elif test -n "$runpath_var"; then 7236 case "$perm_rpath " in 7237 *" $libdir "*) ;; 7238 *) perm_rpath="$perm_rpath $libdir" ;; 7239 esac 7240 fi 7241 done 7242 # Substitute the hardcoded libdirs into the rpath. 7243 if test -n "$hardcode_libdir_separator" && 7244 test -n "$hardcode_libdirs"; then 7245 libdir="$hardcode_libdirs" 7246 if test -n "$hardcode_libdir_flag_spec_ld"; then 7247 eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 7248 else 7249 eval dep_rpath=\"$hardcode_libdir_flag_spec\" 7250 fi 7251 fi 7252 if test -n "$runpath_var" && test -n "$perm_rpath"; then 7253 # We should set the runpath_var. 7254 rpath= 7255 for dir in $perm_rpath; do 7256 rpath="$rpath$dir:" 7257 done 7258 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 7259 fi 7260 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 7261 fi 7262 7263 shlibpath="$finalize_shlibpath" 7264 test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 7265 if test -n "$shlibpath"; then 7266 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 7267 fi 7268 7269 # Get the real and link names of the library. 7270 eval shared_ext=\"$shrext_cmds\" 7271 eval library_names=\"$library_names_spec\" 7272 set dummy $library_names 7273 shift 7274 realname="$1" 7275 shift 7276 7277 if test -n "$soname_spec"; then 7278 eval soname=\"$soname_spec\" 7279 else 7280 soname="$realname" 7281 fi 7282 if test -z "$dlname"; then 7283 dlname=$soname 7284 fi 7285 7286 lib="$output_objdir/$realname" 7287 linknames= 7288 for link 7289 do 7290 linknames="$linknames $link" 7291 done 7292 7293 # Use standard objects if they are pic 7294 test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 7295 test "X$libobjs" = "X " && libobjs= 7296 7297 delfiles= 7298 if test -n "$export_symbols" && test -n "$include_expsyms"; then 7299 $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 7300 export_symbols="$output_objdir/$libname.uexp" 7301 delfiles="$delfiles $export_symbols" 7302 fi 7303 7304 orig_export_symbols= 7305 case $host_os in 7306 cygwin* | mingw* | cegcc*) 7307 if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 7308 # exporting using user supplied symfile 7309 if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 7310 # and it's NOT already a .def file. Must figure out 7311 # which of the given symbols are data symbols and tag 7312 # them as such. So, trigger use of export_symbols_cmds. 7313 # export_symbols gets reassigned inside the "prepare 7314 # the list of exported symbols" if statement, so the 7315 # include_expsyms logic still works. 7316 orig_export_symbols="$export_symbols" 7317 export_symbols= 7318 always_export_symbols=yes 7319 fi 7320 fi 7321 ;; 7322 esac 7323 7324 # Prepare the list of exported symbols 7325 if test -z "$export_symbols"; then 7326 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 7327 func_verbose "generating symbol list for \`$libname.la'" 7328 export_symbols="$output_objdir/$libname.exp" 7329 $opt_dry_run || $RM $export_symbols 7330 cmds=$export_symbols_cmds 7331 save_ifs="$IFS"; IFS='~' 7332 for cmd in $cmds; do 7333 IFS="$save_ifs" 7334 eval cmd=\"$cmd\" 7335 func_len " $cmd" 7336 len=$func_len_result 7337 if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 7338 func_show_eval "$cmd" 'exit $?' 7339 skipped_export=false 7340 else 7341 # The command line is too long to execute in one step. 7342 func_verbose "using reloadable object file for export list..." 7343 skipped_export=: 7344 # Break out early, otherwise skipped_export may be 7345 # set to false by a later but shorter cmd. 7346 break 7347 fi 7348 done 7349 IFS="$save_ifs" 7350 if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 7351 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 7352 func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 7353 fi 7354 fi 7355 fi 7356 7357 if test -n "$export_symbols" && test -n "$include_expsyms"; then 7358 tmp_export_symbols="$export_symbols" 7359 test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 7360 $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 7361 fi 7362 7363 if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 7364 # The given exports_symbols file has to be filtered, so filter it. 7365 func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 7366 # FIXME: $output_objdir/$libname.filter potentially contains lots of 7367 # 's' commands which not all seds can handle. GNU sed should be fine 7368 # though. Also, the filter scales superlinearly with the number of 7369 # global variables. join(1) would be nice here, but unfortunately 7370 # isn't a blessed tool. 7371 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 7372 delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 7373 export_symbols=$output_objdir/$libname.def 7374 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 7375 fi 7376 7377 tmp_deplibs= 7378 for test_deplib in $deplibs; do 7379 case " $convenience " in 7380 *" $test_deplib "*) ;; 7381 *) 7382 tmp_deplibs="$tmp_deplibs $test_deplib" 7383 ;; 7384 esac 7385 done 7386 deplibs="$tmp_deplibs" 7387 7388 if test -n "$convenience"; then 7389 if test -n "$whole_archive_flag_spec" && 7390 test "$compiler_needs_object" = yes && 7391 test -z "$libobjs"; then 7392 # extract the archives, so we have objects to list. 7393 # TODO: could optimize this to just extract one archive. 7394 whole_archive_flag_spec= 7395 fi 7396 if test -n "$whole_archive_flag_spec"; then 7397 save_libobjs=$libobjs 7398 eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 7399 test "X$libobjs" = "X " && libobjs= 7400 else 7401 gentop="$output_objdir/${outputname}x" 7402 generated="$generated $gentop" 7403 7404 func_extract_archives $gentop $convenience 7405 libobjs="$libobjs $func_extract_archives_result" 7406 test "X$libobjs" = "X " && libobjs= 7407 fi 7408 fi 7409 7410 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 7411 eval flag=\"$thread_safe_flag_spec\" 7412 linker_flags="$linker_flags $flag" 7413 fi 7414 7415 # Make a backup of the uninstalled library when relinking 7416 if test "$mode" = relink; then 7417 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 7418 fi 7419 7420 # Do each of the archive commands. 7421 if test "$module" = yes && test -n "$module_cmds" ; then 7422 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 7423 eval test_cmds=\"$module_expsym_cmds\" 7424 cmds=$module_expsym_cmds 7425 else 7426 eval test_cmds=\"$module_cmds\" 7427 cmds=$module_cmds 7428 fi 7429 else 7430 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 7431 eval test_cmds=\"$archive_expsym_cmds\" 7432 cmds=$archive_expsym_cmds 7433 else 7434 eval test_cmds=\"$archive_cmds\" 7435 cmds=$archive_cmds 7436 fi 7437 fi 7438 7439 if test "X$skipped_export" != "X:" && 7440 func_len " $test_cmds" && 7441 len=$func_len_result && 7442 test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 7443 : 7444 else 7445 # The command line is too long to link in one step, link piecewise 7446 # or, if using GNU ld and skipped_export is not :, use a linker 7447 # script. 7448 7449 # Save the value of $output and $libobjs because we want to 7450 # use them later. If we have whole_archive_flag_spec, we 7451 # want to use save_libobjs as it was before 7452 # whole_archive_flag_spec was expanded, because we can't 7453 # assume the linker understands whole_archive_flag_spec. 7454 # This may have to be revisited, in case too many 7455 # convenience libraries get linked in and end up exceeding 7456 # the spec. 7457 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 7458 save_libobjs=$libobjs 7459 fi 7460 save_output=$output 7461 func_basename "$output" 7462 output_la=$func_basename_result 7463 7464 # Clear the reloadable object creation command queue and 7465 # initialize k to one. 7466 test_cmds= 7467 concat_cmds= 7468 objlist= 7469 last_robj= 7470 k=1 7471 7472 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 7473 output=${output_objdir}/${output_la}.lnkscript 7474 func_verbose "creating GNU ld script: $output" 7475 echo 'INPUT (' > $output 7476 for obj in $save_libobjs 7477 do 7478 $ECHO "$obj" >> $output 7479 done 7480 echo ')' >> $output 7481 delfiles="$delfiles $output" 7482 elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 7483 output=${output_objdir}/${output_la}.lnk 7484 func_verbose "creating linker input file list: $output" 7485 : > $output 7486 set x $save_libobjs 7487 shift 7488 firstobj= 7489 if test "$compiler_needs_object" = yes; then 7490 firstobj="$1 " 7491 shift 7492 fi 7493 for obj 7494 do 7495 $ECHO "$obj" >> $output 7496 done 7497 delfiles="$delfiles $output" 7498 output=$firstobj\"$file_list_spec$output\" 7499 else 7500 if test -n "$save_libobjs"; then 7501 func_verbose "creating reloadable object files..." 7502 output=$output_objdir/$output_la-${k}.$objext 7503 eval test_cmds=\"$reload_cmds\" 7504 func_len " $test_cmds" 7505 len0=$func_len_result 7506 len=$len0 7507 7508 # Loop over the list of objects to be linked. 7509 for obj in $save_libobjs 7510 do 7511 func_len " $obj" 7512 func_arith $len + $func_len_result 7513 len=$func_arith_result 7514 if test "X$objlist" = X || 7515 test "$len" -lt "$max_cmd_len"; then 7516 func_append objlist " $obj" 7517 else 7518 # The command $test_cmds is almost too long, add a 7519 # command to the queue. 7520 if test "$k" -eq 1 ; then 7521 # The first file doesn't have a previous command to add. 7522 reload_objs=$objlist 7523 eval concat_cmds=\"$reload_cmds\" 7524 else 7525 # All subsequent reloadable object files will link in 7526 # the last one created. 7527 reload_objs="$objlist $last_robj" 7528 eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 7529 fi 7530 last_robj=$output_objdir/$output_la-${k}.$objext 7531 func_arith $k + 1 7532 k=$func_arith_result 7533 output=$output_objdir/$output_la-${k}.$objext 7534 objlist=" $obj" 7535 func_len " $last_robj" 7536 func_arith $len0 + $func_len_result 7537 len=$func_arith_result 7538 fi 7539 done 7540 # Handle the remaining objects by creating one last 7541 # reloadable object file. All subsequent reloadable object 7542 # files will link in the last one created. 7543 test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 7544 reload_objs="$objlist $last_robj" 7545 eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 7546 if test -n "$last_robj"; then 7547 eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 7548 fi 7549 delfiles="$delfiles $output" 7550 7551 else 7552 output= 7553 fi 7554 7555 if ${skipped_export-false}; then 7556 func_verbose "generating symbol list for \`$libname.la'" 7557 export_symbols="$output_objdir/$libname.exp" 7558 $opt_dry_run || $RM $export_symbols 7559 libobjs=$output 7560 # Append the command to create the export file. 7561 test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 7562 eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 7563 if test -n "$last_robj"; then 7564 eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 7565 fi 7566 fi 7567 7568 test -n "$save_libobjs" && 7569 func_verbose "creating a temporary reloadable object file: $output" 7570 7571 # Loop through the commands generated above and execute them. 7572 save_ifs="$IFS"; IFS='~' 7573 for cmd in $concat_cmds; do 7574 IFS="$save_ifs" 7575 $opt_silent || { 7576 func_quote_for_expand "$cmd" 7577 eval "func_echo $func_quote_for_expand_result" 7578 } 7579 $opt_dry_run || eval "$cmd" || { 7580 lt_exit=$? 7581 7582 # Restore the uninstalled library and exit 7583 if test "$mode" = relink; then 7584 ( cd "$output_objdir" && \ 7585 $RM "${realname}T" && \ 7586 $MV "${realname}U" "$realname" ) 7587 fi 7588 7589 exit $lt_exit 7590 } 7591 done 7592 IFS="$save_ifs" 7593 7594 if test -n "$export_symbols_regex" && ${skipped_export-false}; then 7595 func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 7596 func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 7597 fi 7598 fi 7599 7600 if ${skipped_export-false}; then 7601 if test -n "$export_symbols" && test -n "$include_expsyms"; then 7602 tmp_export_symbols="$export_symbols" 7603 test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 7604 $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 7605 fi 7606 7607 if test -n "$orig_export_symbols"; then 7608 # The given exports_symbols file has to be filtered, so filter it. 7609 func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 7610 # FIXME: $output_objdir/$libname.filter potentially contains lots of 7611 # 's' commands which not all seds can handle. GNU sed should be fine 7612 # though. Also, the filter scales superlinearly with the number of 7613 # global variables. join(1) would be nice here, but unfortunately 7614 # isn't a blessed tool. 7615 $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 7616 delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" 7617 export_symbols=$output_objdir/$libname.def 7618 $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 7619 fi 7620 fi 7621 7622 libobjs=$output 7623 # Restore the value of output. 7624 output=$save_output 7625 7626 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 7627 eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 7628 test "X$libobjs" = "X " && libobjs= 7629 fi 7630 # Expand the library linking commands again to reset the 7631 # value of $libobjs for piecewise linking. 7632 7633 # Do each of the archive commands. 7634 if test "$module" = yes && test -n "$module_cmds" ; then 7635 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 7636 cmds=$module_expsym_cmds 7637 else 7638 cmds=$module_cmds 7639 fi 7640 else 7641 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 7642 cmds=$archive_expsym_cmds 7643 else 7644 cmds=$archive_cmds 7645 fi 7646 fi 7647 fi 7648 7649 if test -n "$delfiles"; then 7650 # Append the command to remove temporary files to $cmds. 7651 eval cmds=\"\$cmds~\$RM $delfiles\" 7652 fi 7653 7654 # Add any objects from preloaded convenience libraries 7655 if test -n "$dlprefiles"; then 7656 gentop="$output_objdir/${outputname}x" 7657 generated="$generated $gentop" 7658 7659 func_extract_archives $gentop $dlprefiles 7660 libobjs="$libobjs $func_extract_archives_result" 7661 test "X$libobjs" = "X " && libobjs= 7662 fi 7663 7664 save_ifs="$IFS"; IFS='~' 7665 for cmd in $cmds; do 7666 IFS="$save_ifs" 7667 eval cmd=\"$cmd\" 7668 $opt_silent || { 7669 func_quote_for_expand "$cmd" 7670 eval "func_echo $func_quote_for_expand_result" 7671 } 7672 $opt_dry_run || eval "$cmd" || { 7673 lt_exit=$? 7674 7675 # Restore the uninstalled library and exit 7676 if test "$mode" = relink; then 7677 ( cd "$output_objdir" && \ 7678 $RM "${realname}T" && \ 7679 $MV "${realname}U" "$realname" ) 7680 fi 7681 7682 exit $lt_exit 7683 } 7684 done 7685 IFS="$save_ifs" 7686 7687 # Restore the uninstalled library and exit 7688 if test "$mode" = relink; then 7689 $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 7690 7691 if test -n "$convenience"; then 7692 if test -z "$whole_archive_flag_spec"; then 7693 func_show_eval '${RM}r "$gentop"' 7694 fi 7695 fi 7696 7697 exit $EXIT_SUCCESS 7698 fi 7699 7700 # Create links to the real library. 7701 for linkname in $linknames; do 7702 if test "$realname" != "$linkname"; then 7703 func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 7704 fi 7705 done 7706 7707 # If -module or -export-dynamic was specified, set the dlname. 7708 if test "$module" = yes || test "$export_dynamic" = yes; then 7709 # On all known operating systems, these are identical. 7710 dlname="$soname" 7711 fi 7712 fi 7713 ;; 7714 7715 obj) 7716 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7717 func_warning "\`-dlopen' is ignored for objects" 7718 fi 7719 7720 case " $deplibs" in 7721 *\ -l* | *\ -L*) 7722 func_warning "\`-l' and \`-L' are ignored for objects" ;; 7723 esac 7724 7725 test -n "$rpath" && \ 7726 func_warning "\`-rpath' is ignored for objects" 7727 7728 test -n "$xrpath" && \ 7729 func_warning "\`-R' is ignored for objects" 7730 7731 test -n "$vinfo" && \ 7732 func_warning "\`-version-info' is ignored for objects" 7733 7734 test -n "$release" && \ 7735 func_warning "\`-release' is ignored for objects" 7736 7737 case $output in 7738 *.lo) 7739 test -n "$objs$old_deplibs" && \ 7740 func_fatal_error "cannot build library object \`$output' from non-libtool objects" 7741 7742 libobj=$output 7743 func_lo2o "$libobj" 7744 obj=$func_lo2o_result 7745 ;; 7746 *) 7747 libobj= 7748 obj="$output" 7749 ;; 7750 esac 7751 7752 # Delete the old objects. 7753 $opt_dry_run || $RM $obj $libobj 7754 7755 # Objects from convenience libraries. This assumes 7756 # single-version convenience libraries. Whenever we create 7757 # different ones for PIC/non-PIC, this we'll have to duplicate 7758 # the extraction. 7759 reload_conv_objs= 7760 gentop= 7761 # reload_cmds runs $LD directly, so let us get rid of 7762 # -Wl from whole_archive_flag_spec and hope we can get by with 7763 # turning comma into space.. 7764 wl= 7765 7766 if test -n "$convenience"; then 7767 if test -n "$whole_archive_flag_spec"; then 7768 eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 7769 reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 7770 else 7771 gentop="$output_objdir/${obj}x" 7772 generated="$generated $gentop" 7773 7774 func_extract_archives $gentop $convenience 7775 reload_conv_objs="$reload_objs $func_extract_archives_result" 7776 fi 7777 fi 7778 7779 # Create the old-style object. 7780 reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 7781 7782 output="$obj" 7783 func_execute_cmds "$reload_cmds" 'exit $?' 7784 7785 # Exit if we aren't doing a library object file. 7786 if test -z "$libobj"; then 7787 if test -n "$gentop"; then 7788 func_show_eval '${RM}r "$gentop"' 7789 fi 7790 7791 exit $EXIT_SUCCESS 7792 fi 7793 7794 if test "$build_libtool_libs" != yes; then 7795 if test -n "$gentop"; then 7796 func_show_eval '${RM}r "$gentop"' 7797 fi 7798 7799 # Create an invalid libtool object if no PIC, so that we don't 7800 # accidentally link it into a program. 7801 # $show "echo timestamp > $libobj" 7802 # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 7803 exit $EXIT_SUCCESS 7804 fi 7805 7806 if test -n "$pic_flag" || test "$pic_mode" != default; then 7807 # Only do commands if we really have different PIC objects. 7808 reload_objs="$libobjs $reload_conv_objs" 7809 output="$libobj" 7810 func_execute_cmds "$reload_cmds" 'exit $?' 7811 fi 7812 7813 if test -n "$gentop"; then 7814 func_show_eval '${RM}r "$gentop"' 7815 fi 7816 7817 exit $EXIT_SUCCESS 7818 ;; 7819 7820 prog) 7821 case $host in 7822 *cygwin*) func_stripname '' '.exe' "$output" 7823 output=$func_stripname_result.exe;; 7824 esac 7825 test -n "$vinfo" && \ 7826 func_warning "\`-version-info' is ignored for programs" 7827 7828 test -n "$release" && \ 7829 func_warning "\`-release' is ignored for programs" 7830 7831 test "$preload" = yes \ 7832 && test "$dlopen_support" = unknown \ 7833 && test "$dlopen_self" = unknown \ 7834 && test "$dlopen_self_static" = unknown && \ 7835 func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 7836 7837 case $host in 7838 *-*-rhapsody* | *-*-darwin1.[012]) 7839 # On Rhapsody replace the C library is the System framework 7840 compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 7841 finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 7842 ;; 7843 esac 7844 7845 case $host in 7846 *-*-darwin*) 7847 # Don't allow lazy linking, it breaks C++ global constructors 7848 # But is supposedly fixed on 10.4 or later (yay!). 7849 if test "$tagname" = CXX ; then 7850 case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 7851 10.[0123]) 7852 compile_command="$compile_command ${wl}-bind_at_load" 7853 finalize_command="$finalize_command ${wl}-bind_at_load" 7854 ;; 7855 esac 7856 fi 7857 # Time to change all our "foo.ltframework" stuff back to "-framework foo" 7858 compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7859 finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7860 ;; 7861 esac 7862 7863 7864 # move library search paths that coincide with paths to not yet 7865 # installed libraries to the beginning of the library search list 7866 new_libs= 7867 for path in $notinst_path; do 7868 case " $new_libs " in 7869 *" -L$path/$objdir "*) ;; 7870 *) 7871 case " $compile_deplibs " in 7872 *" -L$path/$objdir "*) 7873 new_libs="$new_libs -L$path/$objdir" ;; 7874 esac 7875 ;; 7876 esac 7877 done 7878 for deplib in $compile_deplibs; do 7879 case $deplib in 7880 -L*) 7881 case " $new_libs " in 7882 *" $deplib "*) ;; 7883 *) new_libs="$new_libs $deplib" ;; 7884 esac 7885 ;; 7886 *) new_libs="$new_libs $deplib" ;; 7887 esac 7888 done 7889 compile_deplibs="$new_libs" 7890 7891 7892 compile_command="$compile_command $compile_deplibs" 7893 finalize_command="$finalize_command $finalize_deplibs" 7894 7895 if test -n "$rpath$xrpath"; then 7896 # If the user specified any rpath flags, then add them. 7897 for libdir in $rpath $xrpath; do 7898 # This is the magic to use -rpath. 7899 case "$finalize_rpath " in 7900 *" $libdir "*) ;; 7901 *) finalize_rpath="$finalize_rpath $libdir" ;; 7902 esac 7903 done 7904 fi 7905 7906 # Now hardcode the library paths 7907 rpath= 7908 hardcode_libdirs= 7909 for libdir in $compile_rpath $finalize_rpath; do 7910 if test -n "$hardcode_libdir_flag_spec"; then 7911 if test -n "$hardcode_libdir_separator"; then 7912 if test -z "$hardcode_libdirs"; then 7913 hardcode_libdirs="$libdir" 7914 else 7915 # Just accumulate the unique libdirs. 7916 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 7917 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 7918 ;; 7919 *) 7920 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 7921 ;; 7922 esac 7923 fi 7924 else 7925 eval flag=\"$hardcode_libdir_flag_spec\" 7926 rpath="$rpath $flag" 7927 fi 7928 elif test -n "$runpath_var"; then 7929 case "$perm_rpath " in 7930 *" $libdir "*) ;; 7931 *) perm_rpath="$perm_rpath $libdir" ;; 7932 esac 7933 fi 7934 case $host in 7935 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 7936 testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 7937 case :$dllsearchpath: in 7938 *":$libdir:"*) ;; 7939 ::) dllsearchpath=$libdir;; 7940 *) dllsearchpath="$dllsearchpath:$libdir";; 7941 esac 7942 case :$dllsearchpath: in 7943 *":$testbindir:"*) ;; 7944 ::) dllsearchpath=$testbindir;; 7945 *) dllsearchpath="$dllsearchpath:$testbindir";; 7946 esac 7947 ;; 7948 esac 7949 done 7950 # Substitute the hardcoded libdirs into the rpath. 7951 if test -n "$hardcode_libdir_separator" && 7952 test -n "$hardcode_libdirs"; then 7953 libdir="$hardcode_libdirs" 7954 eval rpath=\" $hardcode_libdir_flag_spec\" 7955 fi 7956 compile_rpath="$rpath" 7957 7958 rpath= 7959 hardcode_libdirs= 7960 for libdir in $finalize_rpath; do 7961 if test -n "$hardcode_libdir_flag_spec"; then 7962 if test -n "$hardcode_libdir_separator"; then 7963 if test -z "$hardcode_libdirs"; then 7964 hardcode_libdirs="$libdir" 7965 else 7966 # Just accumulate the unique libdirs. 7967 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 7968 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 7969 ;; 7970 *) 7971 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" 7972 ;; 7973 esac 7974 fi 7975 else 7976 eval flag=\"$hardcode_libdir_flag_spec\" 7977 rpath="$rpath $flag" 7978 fi 7979 elif test -n "$runpath_var"; then 7980 case "$finalize_perm_rpath " in 7981 *" $libdir "*) ;; 7982 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; 7983 esac 7984 fi 7985 done 7986 # Substitute the hardcoded libdirs into the rpath. 7987 if test -n "$hardcode_libdir_separator" && 7988 test -n "$hardcode_libdirs"; then 7989 libdir="$hardcode_libdirs" 7990 eval rpath=\" $hardcode_libdir_flag_spec\" 7991 fi 7992 finalize_rpath="$rpath" 7993 7994 if test -n "$libobjs" && test "$build_old_libs" = yes; then 7995 # Transform all the library objects into standard objects. 7996 compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 7997 finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 7998 fi 7999 8000 func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8001 8002 # template prelinking step 8003 if test -n "$prelink_cmds"; then 8004 func_execute_cmds "$prelink_cmds" 'exit $?' 8005 fi 8006 8007 wrappers_required=yes 8008 case $host in 8009 *cegcc* | *mingw32ce*) 8010 # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 8011 wrappers_required=no 8012 ;; 8013 *cygwin* | *mingw* ) 8014 if test "$build_libtool_libs" != yes; then 8015 wrappers_required=no 8016 fi 8017 ;; 8018 *) 8019 if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 8020 wrappers_required=no 8021 fi 8022 ;; 8023 esac 8024 if test "$wrappers_required" = no; then 8025 # Replace the output file specification. 8026 compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8027 link_command="$compile_command$compile_rpath" 8028 8029 # We have no uninstalled library dependencies, so finalize right now. 8030 exit_status=0 8031 func_show_eval "$link_command" 'exit_status=$?' 8032 8033 # Delete the generated files. 8034 if test -f "$output_objdir/${outputname}S.${objext}"; then 8035 func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 8036 fi 8037 8038 exit $exit_status 8039 fi 8040 8041 if test -n "$compile_shlibpath$finalize_shlibpath"; then 8042 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 8043 fi 8044 if test -n "$finalize_shlibpath"; then 8045 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 8046 fi 8047 8048 compile_var= 8049 finalize_var= 8050 if test -n "$runpath_var"; then 8051 if test -n "$perm_rpath"; then 8052 # We should set the runpath_var. 8053 rpath= 8054 for dir in $perm_rpath; do 8055 rpath="$rpath$dir:" 8056 done 8057 compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8058 fi 8059 if test -n "$finalize_perm_rpath"; then 8060 # We should set the runpath_var. 8061 rpath= 8062 for dir in $finalize_perm_rpath; do 8063 rpath="$rpath$dir:" 8064 done 8065 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8066 fi 8067 fi 8068 8069 if test "$no_install" = yes; then 8070 # We don't need to create a wrapper script. 8071 link_command="$compile_var$compile_command$compile_rpath" 8072 # Replace the output file specification. 8073 link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8074 # Delete the old output file. 8075 $opt_dry_run || $RM $output 8076 # Link the executable and exit 8077 func_show_eval "$link_command" 'exit $?' 8078 exit $EXIT_SUCCESS 8079 fi 8080 8081 if test "$hardcode_action" = relink; then 8082 # Fast installation is not supported 8083 link_command="$compile_var$compile_command$compile_rpath" 8084 relink_command="$finalize_var$finalize_command$finalize_rpath" 8085 8086 func_warning "this platform does not like uninstalled shared libraries" 8087 func_warning "\`$output' will be relinked during installation" 8088 else 8089 if test "$fast_install" != no; then 8090 link_command="$finalize_var$compile_command$finalize_rpath" 8091 if test "$fast_install" = yes; then 8092 relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 8093 else 8094 # fast_install is set to needless 8095 relink_command= 8096 fi 8097 else 8098 link_command="$compile_var$compile_command$compile_rpath" 8099 relink_command="$finalize_var$finalize_command$finalize_rpath" 8100 fi 8101 fi 8102 8103 # Replace the output file specification. 8104 link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8105 8106 # Delete the old output files. 8107 $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8108 8109 func_show_eval "$link_command" 'exit $?' 8110 8111 # Now create the wrapper script. 8112 func_verbose "creating $output" 8113 8114 # Quote the relink command for shipping. 8115 if test -n "$relink_command"; then 8116 # Preserve any variables that may affect compiler behavior 8117 for var in $variables_saved_for_relink; do 8118 if eval test -z \"\${$var+set}\"; then 8119 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 8120 elif eval var_value=\$$var; test -z "$var_value"; then 8121 relink_command="$var=; export $var; $relink_command" 8122 else 8123 func_quote_for_eval "$var_value" 8124 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 8125 fi 8126 done 8127 relink_command="(cd `pwd`; $relink_command)" 8128 relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 8129 fi 8130 8131 # Only actually do things if not in dry run mode. 8132 $opt_dry_run || { 8133 # win32 will think the script is a binary if it has 8134 # a .exe suffix, so we strip it off here. 8135 case $output in 8136 *.exe) func_stripname '' '.exe' "$output" 8137 output=$func_stripname_result ;; 8138 esac 8139 # test for cygwin because mv fails w/o .exe extensions 8140 case $host in 8141 *cygwin*) 8142 exeext=.exe 8143 func_stripname '' '.exe' "$outputname" 8144 outputname=$func_stripname_result ;; 8145 *) exeext= ;; 8146 esac 8147 case $host in 8148 *cygwin* | *mingw* ) 8149 func_dirname_and_basename "$output" "" "." 8150 output_name=$func_basename_result 8151 output_path=$func_dirname_result 8152 cwrappersource="$output_path/$objdir/lt-$output_name.c" 8153 cwrapper="$output_path/$output_name.exe" 8154 $RM $cwrappersource $cwrapper 8155 trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 8156 8157 func_emit_cwrapperexe_src > $cwrappersource 8158 8159 # The wrapper executable is built using the $host compiler, 8160 # because it contains $host paths and files. If cross- 8161 # compiling, it, like the target executable, must be 8162 # executed on the $host or under an emulation environment. 8163 $opt_dry_run || { 8164 $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 8165 $STRIP $cwrapper 8166 } 8167 8168 # Now, create the wrapper script for func_source use: 8169 func_ltwrapper_scriptname $cwrapper 8170 $RM $func_ltwrapper_scriptname_result 8171 trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 8172 $opt_dry_run || { 8173 # note: this script will not be executed, so do not chmod. 8174 if test "x$build" = "x$host" ; then 8175 $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 8176 else 8177 func_emit_wrapper no > $func_ltwrapper_scriptname_result 8178 fi 8179 } 8180 ;; 8181 * ) 8182 $RM $output 8183 trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 8184 8185 func_emit_wrapper no > $output 8186 chmod +x $output 8187 ;; 8188 esac 8189 } 8190 exit $EXIT_SUCCESS 8191 ;; 8192 esac 8193 8194 # See if we need to build an old-fashioned archive. 8195 for oldlib in $oldlibs; do 8196 8197 if test "$build_libtool_libs" = convenience; then 8198 oldobjs="$libobjs_save $symfileobj" 8199 addlibs="$convenience" 8200 build_libtool_libs=no 8201 else 8202 if test "$build_libtool_libs" = module; then 8203 oldobjs="$libobjs_save" 8204 build_libtool_libs=no 8205 else 8206 oldobjs="$old_deplibs $non_pic_objects" 8207 if test "$preload" = yes && test -f "$symfileobj"; then 8208 oldobjs="$oldobjs $symfileobj" 8209 fi 8210 fi 8211 addlibs="$old_convenience" 8212 fi 8213 8214 if test -n "$addlibs"; then 8215 gentop="$output_objdir/${outputname}x" 8216 generated="$generated $gentop" 8217 8218 func_extract_archives $gentop $addlibs 8219 oldobjs="$oldobjs $func_extract_archives_result" 8220 fi 8221 8222 # Do each command in the archive commands. 8223 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 8224 cmds=$old_archive_from_new_cmds 8225 else 8226 8227 # Add any objects from preloaded convenience libraries 8228 if test -n "$dlprefiles"; then 8229 gentop="$output_objdir/${outputname}x" 8230 generated="$generated $gentop" 8231 8232 func_extract_archives $gentop $dlprefiles 8233 oldobjs="$oldobjs $func_extract_archives_result" 8234 fi 8235 8236 # POSIX demands no paths to be encoded in archives. We have 8237 # to avoid creating archives with duplicate basenames if we 8238 # might have to extract them afterwards, e.g., when creating a 8239 # static archive out of a convenience library, or when linking 8240 # the entirety of a libtool archive into another (currently 8241 # not supported by libtool). 8242 if (for obj in $oldobjs 8243 do 8244 func_basename "$obj" 8245 $ECHO "$func_basename_result" 8246 done | sort | sort -uc >/dev/null 2>&1); then 8247 : 8248 else 8249 echo "copying selected object files to avoid basename conflicts..." 8250 gentop="$output_objdir/${outputname}x" 8251 generated="$generated $gentop" 8252 func_mkdir_p "$gentop" 8253 save_oldobjs=$oldobjs 8254 oldobjs= 8255 counter=1 8256 for obj in $save_oldobjs 8257 do 8258 func_basename "$obj" 8259 objbase="$func_basename_result" 8260 case " $oldobjs " in 8261 " ") oldobjs=$obj ;; 8262 *[\ /]"$objbase "*) 8263 while :; do 8264 # Make sure we don't pick an alternate name that also 8265 # overlaps. 8266 newobj=lt$counter-$objbase 8267 func_arith $counter + 1 8268 counter=$func_arith_result 8269 case " $oldobjs " in 8270 *[\ /]"$newobj "*) ;; 8271 *) if test ! -f "$gentop/$newobj"; then break; fi ;; 8272 esac 8273 done 8274 func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 8275 oldobjs="$oldobjs $gentop/$newobj" 8276 ;; 8277 *) oldobjs="$oldobjs $obj" ;; 8278 esac 8279 done 8280 fi 8281 eval cmds=\"$old_archive_cmds\" 8282 8283 func_len " $cmds" 8284 len=$func_len_result 8285 if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 8286 cmds=$old_archive_cmds 8287 else 8288 # the command line is too long to link in one step, link in parts 8289 func_verbose "using piecewise archive linking..." 8290 save_RANLIB=$RANLIB 8291 RANLIB=: 8292 objlist= 8293 concat_cmds= 8294 save_oldobjs=$oldobjs 8295 oldobjs= 8296 # Is there a better way of finding the last object in the list? 8297 for obj in $save_oldobjs 8298 do 8299 last_oldobj=$obj 8300 done 8301 eval test_cmds=\"$old_archive_cmds\" 8302 func_len " $test_cmds" 8303 len0=$func_len_result 8304 len=$len0 8305 for obj in $save_oldobjs 8306 do 8307 func_len " $obj" 8308 func_arith $len + $func_len_result 8309 len=$func_arith_result 8310 func_append objlist " $obj" 8311 if test "$len" -lt "$max_cmd_len"; then 8312 : 8313 else 8314 # the above command should be used before it gets too long 8315 oldobjs=$objlist 8316 if test "$obj" = "$last_oldobj" ; then 8317 RANLIB=$save_RANLIB 8318 fi 8319 test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8320 eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 8321 objlist= 8322 len=$len0 8323 fi 8324 done 8325 RANLIB=$save_RANLIB 8326 oldobjs=$objlist 8327 if test "X$oldobjs" = "X" ; then 8328 eval cmds=\"\$concat_cmds\" 8329 else 8330 eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 8331 fi 8332 fi 8333 fi 8334 func_execute_cmds "$cmds" 'exit $?' 8335 done 8336 8337 test -n "$generated" && \ 8338 func_show_eval "${RM}r$generated" 8339 8340 # Now create the libtool archive. 8341 case $output in 8342 *.la) 8343 old_library= 8344 test "$build_old_libs" = yes && old_library="$libname.$libext" 8345 func_verbose "creating $output" 8346 8347 # Preserve any variables that may affect compiler behavior 8348 for var in $variables_saved_for_relink; do 8349 if eval test -z \"\${$var+set}\"; then 8350 relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 8351 elif eval var_value=\$$var; test -z "$var_value"; then 8352 relink_command="$var=; export $var; $relink_command" 8353 else 8354 func_quote_for_eval "$var_value" 8355 relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 8356 fi 8357 done 8358 # Quote the link command for shipping. 8359 relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 8360 relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 8361 if test "$hardcode_automatic" = yes ; then 8362 relink_command= 8363 fi 8364 8365 # Only create the output if not a dry run. 8366 $opt_dry_run || { 8367 for installed in no yes; do 8368 if test "$installed" = yes; then 8369 if test -z "$install_libdir"; then 8370 break 8371 fi 8372 output="$output_objdir/$outputname"i 8373 # Replace all uninstalled libtool libraries with the installed ones 8374 newdependency_libs= 8375 for deplib in $dependency_libs; do 8376 case $deplib in 8377 *.la) 8378 func_basename "$deplib" 8379 name="$func_basename_result" 8380 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 8381 test -z "$libdir" && \ 8382 func_fatal_error "\`$deplib' is not a valid libtool archive" 8383 newdependency_libs="$newdependency_libs $libdir/$name" 8384 ;; 8385 *) newdependency_libs="$newdependency_libs $deplib" ;; 8386 esac 8387 done 8388 dependency_libs="$newdependency_libs" 8389 newdlfiles= 8390 8391 for lib in $dlfiles; do 8392 case $lib in 8393 *.la) 8394 func_basename "$lib" 8395 name="$func_basename_result" 8396 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 8397 test -z "$libdir" && \ 8398 func_fatal_error "\`$lib' is not a valid libtool archive" 8399 newdlfiles="$newdlfiles $libdir/$name" 8400 ;; 8401 *) newdlfiles="$newdlfiles $lib" ;; 8402 esac 8403 done 8404 dlfiles="$newdlfiles" 8405 newdlprefiles= 8406 for lib in $dlprefiles; do 8407 case $lib in 8408 *.la) 8409 # Only pass preopened files to the pseudo-archive (for 8410 # eventual linking with the app. that links it) if we 8411 # didn't already link the preopened objects directly into 8412 # the library: 8413 func_basename "$lib" 8414 name="$func_basename_result" 8415 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 8416 test -z "$libdir" && \ 8417 func_fatal_error "\`$lib' is not a valid libtool archive" 8418 newdlprefiles="$newdlprefiles $libdir/$name" 8419 ;; 8420 esac 8421 done 8422 dlprefiles="$newdlprefiles" 8423 else 8424 newdlfiles= 8425 for lib in $dlfiles; do 8426 case $lib in 8427 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 8428 *) abs=`pwd`"/$lib" ;; 8429 esac 8430 newdlfiles="$newdlfiles $abs" 8431 done 8432 dlfiles="$newdlfiles" 8433 newdlprefiles= 8434 for lib in $dlprefiles; do 8435 case $lib in 8436 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 8437 *) abs=`pwd`"/$lib" ;; 8438 esac 8439 newdlprefiles="$newdlprefiles $abs" 8440 done 8441 dlprefiles="$newdlprefiles" 8442 fi 8443 $RM $output 8444 # place dlname in correct position for cygwin 8445 # In fact, it would be nice if we could use this code for all target 8446 # systems that can't hard-code library paths into their executables 8447 # and that have no shared library path variable independent of PATH, 8448 # but it turns out we can't easily determine that from inspecting 8449 # libtool variables, so we have to hard-code the OSs to which it 8450 # applies here; at the moment, that means platforms that use the PE 8451 # object format with DLL files. See the long comment at the top of 8452 # tests/bindir.at for full details. 8453 tdlname=$dlname 8454 case $host,$output,$installed,$module,$dlname in 8455 *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 8456 # If a -bindir argument was supplied, place the dll there. 8457 if test "x$bindir" != x ; 8458 then 8459 func_relative_path "$install_libdir" "$bindir" 8460 tdlname=$func_relative_path_result$dlname 8461 else 8462 # Otherwise fall back on heuristic. 8463 tdlname=../bin/$dlname 8464 fi 8465 ;; 8466 esac 8467 $ECHO > $output "\ 8468 # $outputname - a libtool library file 8469 # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 8470 # 8471 # Please DO NOT delete this file! 8472 # It is necessary for linking the library. 8473 8474 # The name that we can dlopen(3). 8475 dlname='$tdlname' 8476 8477 # Names of this library. 8478 library_names='$library_names' 8479 8480 # The name of the static archive. 8481 old_library='$old_library' 8482 8483 # Linker flags that can not go in dependency_libs. 8484 inherited_linker_flags='$new_inherited_linker_flags' 8485 8486 # Libraries that this one depends upon. 8487 dependency_libs='$dependency_libs' 8488 8489 # Names of additional weak libraries provided by this library 8490 weak_library_names='$weak_libs' 8491 8492 # Version information for $libname. 8493 current=$current 8494 age=$age 8495 revision=$revision 8496 8497 # Is this an already installed library? 8498 installed=$installed 8499 8500 # Should we warn about portability when linking against -modules? 8501 shouldnotlink=$module 8502 8503 # Files to dlopen/dlpreopen 8504 dlopen='$dlfiles' 8505 dlpreopen='$dlprefiles' 8506 8507 # Directory that this library needs to be installed in: 8508 libdir='$install_libdir'" 8509 if test "$installed" = no && test "$need_relink" = yes; then 8510 $ECHO >> $output "\ 8511 relink_command=\"$relink_command\"" 8512 fi 8513 done 8514 } 8515 8516 # Do a symbolic link so that the libtool archive can be found in 8517 # LD_LIBRARY_PATH before the program is installed. 8518 func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 8519 ;; 8520 esac 8521 exit $EXIT_SUCCESS 8522 } 8523 8524 { test "$mode" = link || test "$mode" = relink; } && 8525 func_mode_link ${1+"$@"} 8526 8527 8528 # func_mode_uninstall arg... 8529 func_mode_uninstall () 8530 { 8531 $opt_debug 8532 RM="$nonopt" 8533 files= 8534 rmforce= 8535 exit_status=0 8536 8537 # This variable tells wrapper scripts just to set variables rather 8538 # than running their programs. 8539 libtool_install_magic="$magic" 8540 8541 for arg 8542 do 8543 case $arg in 8544 -f) RM="$RM $arg"; rmforce=yes ;; 8545 -*) RM="$RM $arg" ;; 8546 *) files="$files $arg" ;; 8547 esac 8548 done 8549 8550 test -z "$RM" && \ 8551 func_fatal_help "you must specify an RM program" 8552 8553 rmdirs= 8554 8555 origobjdir="$objdir" 8556 for file in $files; do 8557 func_dirname "$file" "" "." 8558 dir="$func_dirname_result" 8559 if test "X$dir" = X.; then 8560 objdir="$origobjdir" 8561 else 8562 objdir="$dir/$origobjdir" 8563 fi 8564 func_basename "$file" 8565 name="$func_basename_result" 8566 test "$mode" = uninstall && objdir="$dir" 8567 8568 # Remember objdir for removal later, being careful to avoid duplicates 8569 if test "$mode" = clean; then 8570 case " $rmdirs " in 8571 *" $objdir "*) ;; 8572 *) rmdirs="$rmdirs $objdir" ;; 8573 esac 8574 fi 8575 8576 # Don't error if the file doesn't exist and rm -f was used. 8577 if { test -L "$file"; } >/dev/null 2>&1 || 8578 { test -h "$file"; } >/dev/null 2>&1 || 8579 test -f "$file"; then 8580 : 8581 elif test -d "$file"; then 8582 exit_status=1 8583 continue 8584 elif test "$rmforce" = yes; then 8585 continue 8586 fi 8587 8588 rmfiles="$file" 8589 8590 case $name in 8591 *.la) 8592 # Possibly a libtool archive, so verify it. 8593 if func_lalib_p "$file"; then 8594 func_source $dir/$name 8595 8596 # Delete the libtool libraries and symlinks. 8597 for n in $library_names; do 8598 rmfiles="$rmfiles $objdir/$n" 8599 done 8600 test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" 8601 8602 case "$mode" in 8603 clean) 8604 case " $library_names " in 8605 # " " in the beginning catches empty $dlname 8606 *" $dlname "*) ;; 8607 *) rmfiles="$rmfiles $objdir/$dlname" ;; 8608 esac 8609 test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" 8610 ;; 8611 uninstall) 8612 if test -n "$library_names"; then 8613 # Do each command in the postuninstall commands. 8614 func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 8615 fi 8616 8617 if test -n "$old_library"; then 8618 # Do each command in the old_postuninstall commands. 8619 func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 8620 fi 8621 # FIXME: should reinstall the best remaining shared library. 8622 ;; 8623 esac 8624 fi 8625 ;; 8626 8627 *.lo) 8628 # Possibly a libtool object, so verify it. 8629 if func_lalib_p "$file"; then 8630 8631 # Read the .lo file 8632 func_source $dir/$name 8633 8634 # Add PIC object to the list of files to remove. 8635 if test -n "$pic_object" && 8636 test "$pic_object" != none; then 8637 rmfiles="$rmfiles $dir/$pic_object" 8638 fi 8639 8640 # Add non-PIC object to the list of files to remove. 8641 if test -n "$non_pic_object" && 8642 test "$non_pic_object" != none; then 8643 rmfiles="$rmfiles $dir/$non_pic_object" 8644 fi 8645 fi 8646 ;; 8647 8648 *) 8649 if test "$mode" = clean ; then 8650 noexename=$name 8651 case $file in 8652 *.exe) 8653 func_stripname '' '.exe' "$file" 8654 file=$func_stripname_result 8655 func_stripname '' '.exe' "$name" 8656 noexename=$func_stripname_result 8657 # $file with .exe has already been added to rmfiles, 8658 # add $file without .exe 8659 rmfiles="$rmfiles $file" 8660 ;; 8661 esac 8662 # Do a test to see if this is a libtool program. 8663 if func_ltwrapper_p "$file"; then 8664 if func_ltwrapper_executable_p "$file"; then 8665 func_ltwrapper_scriptname "$file" 8666 relink_command= 8667 func_source $func_ltwrapper_scriptname_result 8668 rmfiles="$rmfiles $func_ltwrapper_scriptname_result" 8669 else 8670 relink_command= 8671 func_source $dir/$noexename 8672 fi 8673 8674 # note $name still contains .exe if it was in $file originally 8675 # as does the version of $file that was added into $rmfiles 8676 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" 8677 if test "$fast_install" = yes && test -n "$relink_command"; then 8678 rmfiles="$rmfiles $objdir/lt-$name" 8679 fi 8680 if test "X$noexename" != "X$name" ; then 8681 rmfiles="$rmfiles $objdir/lt-${noexename}.c" 8682 fi 8683 fi 8684 fi 8685 ;; 8686 esac 8687 func_show_eval "$RM $rmfiles" 'exit_status=1' 8688 done 8689 objdir="$origobjdir" 8690 8691 # Try to remove the ${objdir}s in the directories where we deleted files 8692 for dir in $rmdirs; do 8693 if test -d "$dir"; then 8694 func_show_eval "rmdir $dir >/dev/null 2>&1" 8695 fi 8696 done 8697 8698 exit $exit_status 8699 } 8700 8701 { test "$mode" = uninstall || test "$mode" = clean; } && 8702 func_mode_uninstall ${1+"$@"} 8703 8704 test -z "$mode" && { 8705 help="$generic_help" 8706 func_fatal_help "you must specify a MODE" 8707 } 8708 8709 test -z "$exec_cmd" && \ 8710 func_fatal_help "invalid operation mode \`$mode'" 8711 8712 if test -n "$exec_cmd"; then 8713 eval exec "$exec_cmd" 8714 exit $EXIT_FAILURE 8715 fi 8716 8717 exit $exit_status 8718 8719 8720 # The TAGs below are defined such that we never get into a situation 8721 # in which we disable both kinds of libraries. Given conflicting 8722 # choices, we go for a static library, that is the most portable, 8723 # since we can't tell whether shared libraries were disabled because 8724 # the user asked for that or because the platform doesn't support 8725 # them. This is particularly important on AIX, because we don't 8726 # support having both static and shared libraries enabled at the same 8727 # time on that platform, so we default to a shared-only configuration. 8728 # If a disable-shared tag is given, we'll fallback to a static-only 8729 # configuration. But we'll never go from static-only to shared-only. 8730 8731 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared 8732 build_libtool_libs=no 8733 build_old_libs=yes 8734 # ### END LIBTOOL TAG CONFIG: disable-shared 8735 8736 # ### BEGIN LIBTOOL TAG CONFIG: disable-static 8737 build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 8738 # ### END LIBTOOL TAG CONFIG: disable-static 8739 8740 # Local Variables: 8741 # mode:shell-script 8742 # sh-indentation:2 8743 # End: 8744 # vi:sw=2 8745 8746