/[zanavi_public1]/navit/ltmain.sh
ZANavi

Contents of /navit/ltmain.sh

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

Name Value
svn:executable *

   
Visit the ZANavi Wiki