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