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