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