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