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