OSDN Git Service

2010-02-24 Manuel López-Ibáñez <manu@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / ltmain.sh
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
80 PROGRAM=libtool
81 PACKAGE=libtool
82 VERSION=2.2.7a
83 TIMESTAMP=" 1.3134 2009-11-29"
84 package_revision=1.3134
85
86 # Be Bourne compatible
87 if 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
94 else
95   case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
96 fi
97 BIN_SH=xpg4; export BIN_SH # for Tru64
98 DUALCASE=1; export DUALCASE # for MKS sh
99
100 # A function that is used when there is no print builtin or printf.
101 func_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).
112 lt_user_locale=
113 lt_safe_locale=
114 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
115 do
116   eval "if test \"\${$lt_var+set}\" = set; then
117           save_$lt_var=\$$lt_var
118           $lt_var=C
119           export $lt_var
120           lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
121           lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
122         fi"
123 done
124
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.
138 progpath="$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:
157 EXIT_SUCCESS=0
158 EXIT_FAILURE=1
159 EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
160 EXIT_SKIP=77      # $? = 77 is used to indicate a skipped test to automake.
161
162 exit_status=$EXIT_SUCCESS
163
164 # Make sure IFS has a sensible default
165 lt_nl='
166 '
167 IFS="   $lt_nl"
168
169 dirname="s,/[^/]*$,,"
170 basename="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.
184 func_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.
199 pathcar='s,^/\([^/]*\).*$,\1,'
200 pathcdr='s,^/[^/]*,,'
201 removedotparts=':dotsl
202                 s@/\./@/@g
203                 t dotsl
204                 s,/\.$,/,'
205 collapseslashes='s@/\{1,\}@/@g'
206 finalslash='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"
213 func_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"
289 func_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:
347 func_dirname_and_basename "$progpath"
348 progname=$func_basename_result
349
350 # Make sure we have an absolute path for reexecution:
351 case $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      ;;
369 esac
370
371 # Sed substitution that helps us do robust quoting.  It backslashifies
372 # metacharacters that are still active within double-quoted strings.
373 Xsed="${SED}"' -e 1s/^X//'
374 sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
375
376 # Same as above, but do not quote variable references.
377 double_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 '$'.
384 bs='\\'
385 bs2='\\\\'
386 bs4='\\\\\\\\'
387 dollar='\$'
388 sed_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:
396 opt_dry_run=false
397 opt_help=false
398 opt_quiet=false
399 opt_verbose=false
400 opt_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.
405 func_echo ()
406 {
407     $ECHO "$progname${mode+: }$mode: $*"
408 }
409
410 # func_verbose arg...
411 # Echo program name prefixed message in verbose mode only.
412 func_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.
424 func_echo_all ()
425 {
426     $ECHO "$*"
427 }
428
429 # func_error arg...
430 # Echo program name prefixed message to standard error.
431 func_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.
438 func_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.
448 func_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.
457 func_fatal_help ()
458 {
459     func_error ${1+"$@"}
460     func_fatal_error "$help"
461 }
462 help="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.
467 func_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.
475 func_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.
522 func_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.
559 func_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.
586 func_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.
614 func_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.
638 func_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.
665 func_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.
686 func_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.
702 func_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.
727 func_missing_arg ()
728 {
729     func_error "missing argument for $1"
730     exit_cmd=exit
731 }
732
733 exit_cmd=:
734
735
736
737
738
739
740 magic="%%%MAGIC variable%%%"
741 magic_exe="%%%MAGIC EXE variable%%%"
742
743 # Global variables.
744 # $mode is unset
745 nonopt=
746 execute_dlfiles=
747 preserve_args=
748 lo2o="s/\\.lo\$/.${objext}/"
749 o2lo="s/\\.${objext}\$/.lo/"
750 extracted_archives=
751 extracted_serial=0
752
753 opt_dry_run=false
754 opt_finish=:
755 opt_duplicate_deps=false
756 opt_silent=false
757 opt_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.
762 exec_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.
767 func_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.
777 func_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.
795 func_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.
816 func_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*)
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.
996 func_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.
1065 func_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.
1079 func_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.
1099 func_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.
1108 func_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.
1122 func_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.
1136 func_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!
1146 func_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.
1165 func_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 ...'
1181 func_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.
1243 func_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.
1267 pic_object=$write_lobj
1268
1269 # Name of the non-PIC object
1270 non_pic_object=$write_oldobj
1271
1272 EOF
1273       $MV "${write_libobj}T" "${write_libobj}"
1274     }
1275 }
1276
1277 # func_mode_compile arg...
1278 func_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
1489 This indicates that another process is trying to use the same
1490 temporary object file, and libtool could not work around it because
1491 your compiler does not support \`-c' and \`-o' together.  If you
1492 repeat this compilation, it may succeed, by chance, but you had better
1493 avoid parallel builds (make -j) in this platform, or get a better
1494 compiler."
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
1541 but it should contain:
1542 $srcfile
1543
1544 This indicates that another process is trying to use the same
1545 temporary object file, and libtool could not work around it because
1546 your compiler does not support \`-c' and \`-o' together.  If you
1547 repeat this compilation, it may succeed, by chance, but you had better
1548 avoid parallel builds (make -j) in this platform, or get a better
1549 compiler."
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
1590 but it should contain:
1591 $srcfile
1592
1593 This indicates that another process is trying to use the same
1594 temporary object file, and libtool could not work around it because
1595 your compiler does not support \`-c' and \`-o' together.  If you
1596 repeat this compilation, it may succeed, by chance, but you had better
1597 avoid parallel builds (make -j) in this platform, or get a better
1598 compiler."
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
1628 func_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
1642 Remove files from the build directory.
1643
1644 RM 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
1646 to RM.
1647
1648 If FILE is a libtool library, object or program, all the files associated
1649 with 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
1656 Compile a source file into a libtool library object.
1657
1658 This 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
1668 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
1669 from the given SOURCEFILE.
1670
1671 The output file name is determined by removing the directory component from
1672 SOURCEFILE, then substituting the C source code suffix \`.c' with the
1673 library object suffix, \`.lo'."
1674         ;;
1675
1676       execute)
1677         $ECHO \
1678 "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
1679
1680 Automatically set library path, then run a program.
1681
1682 This mode accepts the following additional options:
1683
1684   -dlopen FILE      add the directory containing FILE to the library path
1685
1686 This mode sets the library path environment variable according to \`-dlopen'
1687 flags.
1688
1689 If any of the ARGS are libtool executable wrappers, then they are translated
1690 into their corresponding uninstalled binary, and any of their required library
1691 directories are added to the library path.
1692
1693 Then, COMMAND is executed, with ARGS as arguments."
1694         ;;
1695
1696       finish)
1697         $ECHO \
1698 "Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
1699
1700 Complete the installation of libtool libraries.
1701
1702 Each LIBDIR is a directory that contains libtool libraries.
1703
1704 The commands that this mode executes may require superuser privileges.  Use
1705 the \`--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
1712 Install executables or libraries.
1713
1714 INSTALL-COMMAND is the installation command.  The first component should be
1715 either the \`install' or \`cp' program.
1716
1717 The 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
1721 The rest of the components are interpreted as arguments to that command (only
1722 BSD-compatible install options are recognized)."
1723         ;;
1724
1725       link)
1726         $ECHO \
1727 "Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
1728
1729 Link object files or libraries together to form another library, or to
1730 create an executable program.
1731
1732 LINK-COMMAND is a command using the C compiler that you would use to create
1733 a program from several object files.
1734
1735 The 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
1775 All other options (arguments beginning with \`-') are ignored.
1776
1777 Every other argument is treated as a filename.  Files ending in \`.la' are
1778 treated as uninstalled libtool libraries, other files are standard or library
1779 object files.
1780
1781 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
1782 only library objects (\`.lo' files) may be specified, and \`-rpath' is
1783 required, except when creating a convenience library.
1784
1785 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
1786 using \`ar' and \`ranlib', or on Windows using \`lib'.
1787
1788 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
1789 is created, otherwise an executable program is created."
1790         ;;
1791
1792       uninstall)
1793         $ECHO \
1794 "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
1795
1796 Remove libraries from an installation directory.
1797
1798 RM 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
1800 to RM.
1801
1802 If FILE is a libtool library, all the files associated with it are deleted.
1803 Otherwise, 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
1816 if $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 $?
1844 fi
1845
1846
1847 # func_mode_execute arg...
1848 func_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
1975 test "$mode" = execute && func_mode_execute ${1+"$@"}
1976
1977
1978 # func_mode_finish arg...
1979 func_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
2055 test "$mode" = finish && func_mode_finish ${1+"$@"}
2056
2057
2058 # func_mode_install arg...
2059 func_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
2515 test "$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.
2521 func_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
2555 extern \"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.  */
2660 typedef 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" "\
2681 extern $lt_dlsym_const lt_dlsymlist
2682 lt_${my_prefix}_LTX_preloaded_symbols[];
2683 $lt_dlsym_const lt_dlsymlist
2684 lt_${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
2702 static 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.
2789 func_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
2833 func_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 ...
2859 func_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.
2956 func_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.
2974 sed_quote_subst='$sed_quote_subst'
2975
2976 # Be Bourne compatible
2977 if 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
2984 else
2985   case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
2986 fi
2987 BIN_SH=xpg4; export BIN_SH # for Tru64
2988 DUALCASE=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
2994 relink_command=\"$relink_command\"
2995
2996 # This environment variable determines our operation mode.
2997 if 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'
3001 else
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.
3010 func_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
3156 fi\
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.
3182 func_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.
3249 func_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.
3325 func_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 */
3342 EOF
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__
3372 int _putenv (const char *);
3373 # endif
3374 #elif defined(__CYGWIN__)
3375 # ifdef __STRICT_ANSI__
3376 char *realpath (const char *, char *);
3377 int putenv (char *);
3378 int 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
3468 static void
3469 ltwrapper_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
3480 const char *program_name = NULL;
3481
3482 void *xmalloc (size_t num);
3483 char *xstrdup (const char *string);
3484 const char *base_name (const char *name);
3485 char *find_executable (const char *wrapper);
3486 char *chase_symlinks (const char *pathspec);
3487 int make_executable (const char *path);
3488 int check_executable (const char *path);
3489 char *strendzap (char *str, const char *pat);
3490 void lt_fatal (const char *message, ...);
3491 void lt_setenv (const char *name, const char *value);
3492 char *lt_extend_str (const char *orig_value, const char *add, int to_end);
3493 void lt_update_exe_path (const char *name, const char *value);
3494 void lt_update_lib_path (const char *name, const char *value);
3495 char **prepare_spawn (char **argv);
3496 void lt_dump_script (FILE *f);
3497 EOF
3498
3499             cat <<EOF
3500 const char * MAGIC_EXE = "$magic_exe";
3501 const char * LIB_PATH_VARNAME = "$shlibpath_var";
3502 EOF
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
3507 const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
3508 EOF
3509             else
3510               cat <<"EOF"
3511 const char * LIB_PATH_VALUE   = "";
3512 EOF
3513             fi
3514
3515             if test -n "$dllsearchpath"; then
3516               func_to_host_pathlist "$dllsearchpath:"
3517               cat <<EOF
3518 const char * EXE_PATH_VARNAME = "PATH";
3519 const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
3520 EOF
3521             else
3522               cat <<"EOF"
3523 const char * EXE_PATH_VARNAME = "";
3524 const char * EXE_PATH_VALUE   = "";
3525 EOF
3526             fi
3527
3528             if test "$fast_install" = yes; then
3529               cat <<EOF
3530 const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
3531 EOF
3532             else
3533               cat <<EOF
3534 const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
3535 EOF
3536             fi
3537
3538
3539             cat <<"EOF"
3540
3541 #define LTWRAPPER_OPTION_PREFIX         "--lt-"
3542 #define LTWRAPPER_OPTION_PREFIX_LENGTH  5
3543
3544 static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
3545 static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
3546
3547 static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
3548
3549 int
3550 main (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         {
3572 EOF
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));
3618 EOF
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], "/");
3627 EOF
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;
3640 EOF
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   }
3656 EOF
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
3698 EOF
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;
3713 EOF
3714                 ;;
3715               *)
3716                 cat <<"EOF"
3717   execv (lt_argv_zero, newargz);
3718   return rval; /* =127, but avoids unused variable warning */
3719 EOF
3720                 ;;
3721             esac
3722
3723             cat <<"EOF"
3724 }
3725
3726 void *
3727 xmalloc (size_t num)
3728 {
3729   void *p = (void *) malloc (num);
3730   if (!p)
3731     lt_fatal ("Memory exhausted");
3732
3733   return p;
3734 }
3735
3736 char *
3737 xstrdup (const char *string)
3738 {
3739   return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
3740                           string) : NULL;
3741 }
3742
3743 const char *
3744 base_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
3760 int
3761 check_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
3777 int
3778 make_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 */
3799 char *
3800 find_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
3902 char *
3903 chase_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
3958 char *
3959 strendzap (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
3978 static void
3979 lt_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
3990 void
3991 lt_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
3999 void
4000 lt_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
4022 char *
4023 lt_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
4049 void
4050 lt_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
4070 void
4071 lt_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
4085 EOF
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"
4115 char **
4116 prepare_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 }
4202 EOF
4203                 ;;
4204             esac
4205
4206             cat <<"EOF"
4207 void lt_dump_script (FILE* f)
4208 {
4209 EOF
4210             func_emit_wrapper yes |
4211               $SED -e 's/\([\\"]\)/\\\1/g' \
4212                    -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
4213
4214             cat <<"EOF"
4215 }
4216 EOF
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
4222 func_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...
4232 func_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$dir"
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; }
6755 EOF
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).
8366 dlname='$tdlname'
8367
8368 # Names of this library.
8369 library_names='$library_names'
8370
8371 # The name of the static archive.
8372 old_library='$old_library'
8373
8374 # Linker flags that can not go in dependency_libs.
8375 inherited_linker_flags='$new_inherited_linker_flags'
8376
8377 # Libraries that this one depends upon.
8378 dependency_libs='$dependency_libs'
8379
8380 # Names of additional weak libraries provided by this library
8381 weak_library_names='$weak_libs'
8382
8383 # Version information for $libname.
8384 current=$current
8385 age=$age
8386 revision=$revision
8387
8388 # Is this an already installed library?
8389 installed=$installed
8390
8391 # Should we warn about portability when linking against -modules?
8392 shouldnotlink=$module
8393
8394 # Files to dlopen/dlpreopen
8395 dlopen='$dlfiles'
8396 dlpreopen='$dlprefiles'
8397
8398 # Directory that this library needs to be installed in:
8399 libdir='$install_libdir'"
8400           if test "$installed" = no && test "$need_relink" = yes; then
8401             $ECHO >> $output "\
8402 relink_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...
8420 func_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
8595 test -z "$mode" && {
8596   help="$generic_help"
8597   func_fatal_help "you must specify a MODE"
8598 }
8599
8600 test -z "$exec_cmd" && \
8601   func_fatal_help "invalid operation mode \`$mode'"
8602
8603 if test -n "$exec_cmd"; then
8604   eval exec "$exec_cmd"
8605   exit $EXIT_FAILURE
8606 fi
8607
8608 exit $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
8623 build_libtool_libs=no
8624 build_old_libs=yes
8625 # ### END LIBTOOL TAG CONFIG: disable-shared
8626
8627 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
8628 build_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