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