ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/ltmain.sh
Revision: 1094
Committed: Sun Jun 13 10:09:34 2010 UTC (13 years, 10 months ago) by michael
Content type: text/x-sh
Original Path: ircd-hybrid-7.3/ltmain.sh
File size: 253153 byte(s)
Log Message:
- Updated ltdl to latest 2.2.10 release

File Contents

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

Properties

Name Value
svn:eol-style native
svn:executable *