source: trunk/libs/newlib/src/ltmain.sh @ 534

Last change on this file since 534 was 444, checked in by satin@…, 7 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

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