Annotation of embedaddon/libxml2/ltmain.sh, revision 1.1.1.1
1.1 misho 1: # Generated from ltmain.m4sh.
2:
3: # libtool (GNU libtool) 2.2.10
4: # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
5:
6: # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
7: # 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
8: # This is free software; see the source for copying conditions. There is NO
9: # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10:
11: # GNU Libtool is free software; you can redistribute it and/or modify
12: # it under the terms of the GNU General Public License as published by
13: # the Free Software Foundation; either version 2 of the License, or
14: # (at your option) any later version.
15: #
16: # As a special exception to the GNU General Public License,
17: # if you distribute this file as part of a program or library that
18: # is built using GNU Libtool, you may include this file under the
19: # same distribution terms that you use for the rest of that program.
20: #
21: # GNU Libtool is distributed in the hope that it will be useful, but
22: # WITHOUT ANY WARRANTY; without even the implied warranty of
23: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24: # General Public License for more details.
25: #
26: # You should have received a copy of the GNU General Public License
27: # along with GNU Libtool; see the file COPYING. If not, a copy
28: # can be downloaded from http://www.gnu.org/licenses/gpl.html,
29: # or obtained by writing to the Free Software Foundation, Inc.,
30: # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
31:
32: # Usage: $progname [OPTION]... [MODE-ARG]...
33: #
34: # Provide generalized library-building support services.
35: #
36: # --config show all configuration variables
37: # --debug enable verbose shell tracing
38: # -n, --dry-run display commands without modifying any files
39: # --features display basic configuration information and exit
40: # --mode=MODE use operation mode MODE
41: # --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: #
51: # MODE must be one of the following:
52: #
53: # 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: #
61: # 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: # 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: # 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: #
77: # Report bugs to <bug-libtool@gnu.org>.
78:
79: PROGRAM=libtool
80: PACKAGE=libtool
81: VERSION=2.2.10
82: TIMESTAMP=""
83: package_revision=1.3175
84:
85: # Be Bourne compatible
86: 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: # 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: # 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: do
112: eval "if test \"\${$lt_var+set}\" = set; then
113: save_$lt_var=\$$lt_var
114: $lt_var=C
115: export $lt_var
116: lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
117: lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
118: fi"
119: done
120: LC_ALL=C
121: LANGUAGE=C
122: export LANGUAGE LC_ALL
123:
124: $lt_unset CDPATH
125:
126:
127: # 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:
134:
135:
136: : ${CP="cp -f"}
137: test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
138: : ${EGREP="/bin/grep -E"}
139: : ${FGREP="/bin/grep -F"}
140: : ${GREP="/bin/grep"}
141: : ${LN_S="ln -s"}
142: : ${MAKE="make"}
143: : ${MKDIR="mkdir"}
144: : ${MV="mv -f"}
145: : ${RM="rm -f"}
146: : ${SED="/bin/sed"}
147: : ${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: # Make sure IFS has a sensible default
159: lt_nl='
160: '
161: IFS=" $lt_nl"
162:
163: dirname="s,/[^/]*$,,"
164: basename="s,^.*/,,"
165:
166: # 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: func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
182: 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: func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
188: }
189:
190: # Generated shell functions inserted here.
191:
192: # 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:
202: # 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: # 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: # func_echo_all arg...
417: # Invoke $ECHO with all args, space-separated.
418: func_echo_all ()
419: {
420: $ECHO "$*"
421: }
422:
423: # 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: my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
492: done
493: my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
494:
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: # 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: if test "$opt_dry_run" = ":"; then
521: # 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: # Failing that, at least try and use $RANDOM to avoid a race
530: my_tmpdir="${my_template}-${RANDOM-0}$$"
531:
532: save_mktempdir_umask=`umask`
533: umask 0077
534: $MKDIR "$my_tmpdir"
535: umask $save_mktempdir_umask
536: fi
537:
538: # If we're not in dry-run mode, bomb out on failure
539: test -d "$my_tmpdir" || \
540: func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
541: fi
542:
543: $ECHO "$my_tmpdir"
544: }
545:
546:
547: # 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: {
555: case $1 in
556: *[\\\`\"\$]*)
557: func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
558: *)
559: func_quote_for_eval_unquoted_result="$1" ;;
560: esac
561:
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: }
575:
576:
577: # 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: {
582: case $1 in
583: *[\\\`\"]*)
584: my_arg=`$ECHO "$1" | $SED \
585: -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
586: *)
587: 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: }
602:
603:
604: # 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: {
610: my_cmd="$1"
611: my_fail_exp="${2-:}"
612:
613: ${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: fi
625: }
626:
627:
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: {
634: my_cmd="$1"
635: my_fail_exp="${2-:}"
636:
637: ${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: fi
651: }
652:
653:
654: # func_version
655: # Echo version message to standard output and exit.
656: func_version ()
657: {
658: $SED -n '/(C)/!b go
659: :more
660: /\./!{
661: N
662: s/\n# / /
663: b more
664: }
665: :go
666: /^# '$PROGRAM' (GNU /,/# warranty; / {
667: s/^# //
668: s/^# *$//
669: s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
670: p
671: }' < "$progpath"
672: exit $?
673: }
674:
675: # func_usage
676: # Echo short help message to standard output and exit.
677: func_usage ()
678: {
679: $SED -n '/^# Usage:/,/^# *.*--help/ {
680: s/^# //
681: s/^# *$//
682: s/\$progname/'$progname'/
683: p
684: }' < "$progpath"
685: echo
686: $ECHO "run \`$progname --help | more' for full usage"
687: exit $?
688: }
689:
690: # func_help [NOEXIT]
691: # Echo long help message to standard output and exit,
692: # unless 'noexit' is passed as argument.
693: 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: ret=$?
710: if test -z "$1"; then
711: exit $ret
712: fi
713: }
714:
715: # 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: func_error "missing argument for $1."
721: exit_cmd=exit
722: }
723:
724: exit_cmd=:
725:
726:
727:
728:
729:
730:
731: magic="%%%MAGIC variable%%%"
732: magic_exe="%%%MAGIC EXE variable%%%"
733:
734: # 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:
744: opt_dry_run=false
745: opt_duplicate_deps=false
746: opt_silent=false
747: opt_debug=:
748:
749: # 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:
754: # 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:
764:
765: # 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:
772: # Default configuration.
773: $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
774:
775: # Now print the configurations for the tags.
776: for tagname in $taglist; do
777: $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
778: done
779:
780: exit $?
781: }
782:
783: # func_features
784: # Display the features supported by this script.
785: func_features ()
786: {
787: echo "host: $host"
788: if test "$build_libtool_libs" = yes; then
789: echo "enable shared libraries"
790: else
791: echo "disable shared libraries"
792: fi
793: if test "$build_old_libs" = yes; then
794: echo "enable static libraries"
795: else
796: echo "disable static libraries"
797: fi
798:
799: exit $?
800: }
801:
802: # 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:
811: re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
812: re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
813: sed_extractcf="/$re_begincf/,/$re_endcf/p"
814:
815: # Validate tagname.
816: case $tagname in
817: *[!-_A-Za-z0-9,/]*)
818: func_fatal_error "invalid tag name: $tagname"
819: ;;
820: esac
821:
822: # 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:
830: # 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: ;;
852: compile|compil|compi|comp|com|co|c)
853: shift; set dummy --mode compile ${1+"$@"}; shift
854: ;;
855: execute|execut|execu|exec|exe|ex|e)
856: shift; set dummy --mode execute ${1+"$@"}; shift
857: ;;
858: finish|finis|fini|fin|fi|f)
859: shift; set dummy --mode finish ${1+"$@"}; shift
860: ;;
861: install|instal|insta|inst|ins|in|i)
862: shift; set dummy --mode install ${1+"$@"}; shift
863: ;;
864: 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: esac
871:
872: # Parse non-mode specific arguments:
873: while test "$#" -gt 0; do
874: opt="$1"
875: shift
876:
877: case $opt in
878: --config) func_config ;;
879:
880: --debug) preserve_args="$preserve_args $opt"
881: func_echo "enabling shell trace mode"
882: opt_debug='set -x'
883: $opt_debug
884: ;;
885:
886: -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
887: execute_dlfiles="$execute_dlfiles $1"
888: shift
889: ;;
890:
891: --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: opt_verbose=false
924: ;;
925:
926: --no-quiet|--no-silent)
927: preserve_args="$preserve_args $opt"
928: opt_silent=false
929: ;;
930:
931: --verbose| -v) preserve_args="$preserve_args $opt"
932: opt_silent=false
933: opt_verbose=:
934: ;;
935:
936: --no-verbose) preserve_args="$preserve_args $opt"
937: opt_verbose=false
938: ;;
939:
940: --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: --help-all) opt_help=': help-all' ;;
956: --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: ;;
972: *)
973: opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
974: ;;
975: esac
976:
977: # 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: fi
1004: 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: fi
1015: }
1016:
1017:
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: # Only execute mode is allowed to have -dlopen flags.
1038: if test -n "$execute_dlfiles" && test "$mode" != execute; then
1039: func_error "unrecognized option \`-dlopen'"
1040: $ECHO "$help" 1>&2
1041: exit $EXIT_FAILURE
1042: fi
1043:
1044: # Change the help message to a mode-specific one.
1045: generic_help="$help"
1046: help="Try \`$progname --help --mode=$mode' for more information."
1047: }
1048:
1049:
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: CC_expanded=`func_echo_all $CC`
1180: CC_quoted_expanded=`func_echo_all $CC_quoted`
1181: 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: " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1185: " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1186: # 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: CC_expanded=`func_echo_all $CC`
1200: CC_quoted_expanded=`func_echo_all $CC_quoted`
1201: case "$@ " in
1202: " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
1203: " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1204: # 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: # 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: pie_flag=
1279:
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: test -n "$libobj" && \
1300: func_fatal_error "you cannot specify \`-o' more than once"
1301: arg_mode=target
1302: continue
1303: ;;
1304:
1305: -pie | -fpie | -fPIE)
1306: pie_flag="$pie_flag $arg"
1307: continue
1308: ;;
1309:
1310: -shared | -static | -prefer-pic | -prefer-non-pic)
1311: 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: func_stripname '-Wc,' '' "$arg"
1327: args=$func_stripname_result
1328: lastarg=
1329: save_ifs="$IFS"; IFS=','
1330: for arg in $args; do
1331: IFS="$save_ifs"
1332: func_quote_for_eval "$arg"
1333: lastarg="$lastarg $func_quote_for_eval_result"
1334: done
1335: IFS="$save_ifs"
1336: func_stripname ' ' '' "$lastarg"
1337: lastarg=$func_stripname_result
1338:
1339: # Add the arguments to base_compile.
1340: base_compile="$base_compile $lastarg"
1341: continue
1342: ;;
1343:
1344: *)
1345: # 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: func_quote_for_eval "$lastarg"
1357: base_compile="$base_compile $func_quote_for_eval_result"
1358: done # for arg
1359:
1360: case $arg_mode in
1361: arg)
1362: func_fatal_error "you must specify an argument for -Xcompile"
1363: ;;
1364: target)
1365: func_fatal_error "you must specify a target with \`-o'"
1366: ;;
1367: *)
1368: # Get the name of the library object.
1369: test -z "$libobj" && {
1370: func_basename "$srcfile"
1371: libobj="$func_basename_result"
1372: }
1373: ;;
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: *.[cCFSifmso] | \
1380: *.ada | *.adb | *.ads | *.asm | \
1381: *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
1382: *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
1383: func_xform "$libobj"
1384: libobj=$func_xform_result
1385: ;;
1386: esac
1387:
1388: case $libobj in
1389: *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
1390: *)
1391: func_fatal_error "cannot determine name of library object from \`$libobj'"
1392: ;;
1393: esac
1394:
1395: func_infer_tag $base_compile
1396:
1397: for arg in $later; do
1398: case $arg in
1399: -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: -static)
1407: build_libtool_libs=no
1408: 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: 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: lobj=${xdir}$objdir/$objname
1432:
1433: test -z "$base_compile" && \
1434: func_fatal_help "you must specify a compilation command"
1435:
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: cygwin* | mingw* | pw32* | os2* | cegcc*)
1446: 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: output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
1458: 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: until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
1469: func_echo "Waiting for $lockfile to be removed"
1470: sleep 2
1471: done
1472: elif test "$need_locks" = warn; then
1473: if test -f "$lockfile"; then
1474: $ECHO "\
1475: *** 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: $opt_dry_run || $RM $removelist
1486: exit $EXIT_FAILURE
1487: fi
1488: removelist="$removelist $output_obj"
1489: $ECHO "$srcfile" > "$lockfile"
1490: fi
1491:
1492: $opt_dry_run || $RM $removelist
1493: removelist="$removelist $lockfile"
1494: trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
1495:
1496: if test -n "$fix_srcfile_path"; then
1497: eval srcfile=\"$fix_srcfile_path\"
1498: fi
1499: func_quote_for_eval "$srcfile"
1500: qsrcfile=$func_quote_for_eval_result
1501:
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: func_mkdir_p "$xdir$objdir"
1515:
1516: if test -z "$output_obj"; then
1517: # Place PIC objects in $objdir
1518: command="$command -o $lobj"
1519: fi
1520:
1521: func_show_eval_locale "$command" \
1522: 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
1523:
1524: if test "$need_locks" = warn &&
1525: test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1526: $ECHO "\
1527: *** 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: $opt_dry_run || $RM $removelist
1541: 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: func_show_eval '$MV "$output_obj" "$lobj"' \
1547: 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
1548: fi
1549:
1550: # Allow error messages only from the first compilation.
1551: if test "$suppress_opt" = yes; then
1552: suppress_output=' >/dev/null 2>&1'
1553: 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: command="$base_compile $qsrcfile$pie_flag"
1561: 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: func_show_eval_locale "$command" \
1571: '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
1572:
1573: if test "$need_locks" = warn &&
1574: test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1575: $ECHO "\
1576: *** 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: $opt_dry_run || $RM $removelist
1590: 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: 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: test "$mode" = compile && func_mode_compile ${1+"$@"}
1615: }
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: -prefer-pic try to build PIC objects only
1652: -prefer-non-pic try to build non-PIC objects only
1653: -shared do not build a \`.o' file suitable for static linking
1654: -static only build a \`.o' file suitable for static linking
1655: -Wc,FLAG pass FLAG directly to the compiler
1656:
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: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation
1709:
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: -bindir BINDIR specify path to binaries directory (for systems where
1729: libraries must be found in the PATH setting at runtime)
1730: -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: -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:
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: echo
1801: $ECHO "Try \`$progname --help' for more information about other modes."
1802: }
1803:
1804: # 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:
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: else
1876: if test ! -f "$dir/$dlname"; then
1877: func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
1878: fi
1879: fi
1880: ;;
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: fi
1904: done
1905:
1906: # This variable tells wrapper scripts just to set shlibpath_var
1907: # rather than running their programs.
1908: libtool_execute_magic="$magic"
1909:
1910: # Check if any of the arguments is a wrapper script.
1911: args=
1912: for file
1913: do
1914: case $file in
1915: -* | *.la | *.lo ) ;;
1916: *)
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: else
1954: # Display what would be done.
1955: if test -n "$shlibpath_var"; then
1956: eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
1957: echo "export $shlibpath_var"
1958: fi
1959: $ECHO "$cmd$args"
1960: exit $EXIT_SUCCESS
1961: fi
1962: }
1963:
1964: 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: fi
1994:
1995: # Exit here if they wanted silent mode.
1996: $opt_silent && exit $EXIT_SUCCESS
1997:
1998: echo "----------------------------------------------------------------------"
1999: echo "Libraries have been installed in:"
2000: for libdir in $libdirs; do
2001: $ECHO " $libdir"
2002: done
2003: 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: if test -n "$shlibpath_var"; then
2009: echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
2010: echo " during execution"
2011: fi
2012: if test -n "$runpath_var"; then
2013: echo " - add LIBDIR to the \`$runpath_var' environment variable"
2014: echo " during linking"
2015: fi
2016: if test -n "$hardcode_libdir_flag_spec"; then
2017: libdir=LIBDIR
2018: eval flag=\"$hardcode_libdir_flag_spec\"
2019:
2020: $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: echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2027: fi
2028: echo
2029:
2030: echo "See any operating system documentation about shared libraries for"
2031: case $host in
2032: solaris2.[6789]|solaris2.1[0-9])
2033: echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2034: echo "pages."
2035: ;;
2036: *)
2037: echo "more information, such as the ld(1) and ld.so(8) manual pages."
2038: ;;
2039: esac
2040: echo "----------------------------------------------------------------------"
2041: exit $EXIT_SUCCESS
2042: }
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: case $nonopt in *shtool*) :;; *) false;; esac; then
2056: # 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: install_shared_prog=$install_prog
2071: case " $install_prog " in
2072: *[\\\ /]cp\ *) install_cp=: ;;
2073: *) install_cp=false ;;
2074: esac
2075:
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: no_mode=:
2085: for arg
2086: do
2087: arg2=
2088: 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: if $install_cp; then :; else
2098: prev=$arg
2099: fi
2100: ;;
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: if test "x$prev" = x-m && test -n "$install_override_mode"; then
2114: arg2=$install_override_mode
2115: no_mode=false
2116: fi
2117: 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: 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: 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: 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: 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: inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2235:
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: relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2248: else
2249: relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2250: 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: func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2268: '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: libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
2408: 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: relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
2427:
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: file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
2446: 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: #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
2548: #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
2549: #endif
2550:
2551: /* 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: progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
2561: 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: *cygwin* | *mingw* | *cegcc* )
2600: 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: echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
2644: fi
2645:
2646: echo >> "$output_objdir/$my_dlsyms" "\
2647:
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: echo >> "$output_objdir/$my_dlsyms" "\
2657: /* 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: echo >> "$output_objdir/$my_dlsyms" "\
2670: 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: echo >> "$output_objdir/$my_dlsyms" "\
2686: {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: 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: else
2746: compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2747: finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2748: fi
2749: ;;
2750: *)
2751: compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2752: finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
2753: ;;
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: compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
2767: finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
2768: 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: # Despite the name, also deal with 64 bit binaries.
2778: 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: ;;
2787: *ar\ archive*) # could be an import, or static
2788: # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
2789: if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
2790: $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
2791: 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:
2820:
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: 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: 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: darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
2911: $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: my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
2926: done
2927:
2928: func_extract_archives_result="$my_oldobjs"
2929: }
2930:
2931:
2932: # func_emit_wrapper [arg=no]
2933: #
2934: # 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: {
2948: func_emit_wrapper_arg1=${1-no}
2949:
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: 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: "
3066: 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:
3078: *)
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: # Find the directory that this script lives in.
3113: thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
3114: test \"x\$thisdir\" = \"x\$file\" && thisdir=.
3115:
3116: # Follow symbolic links until we get to the real thisdir.
3117: file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
3118: while test -n \"\$file\"; do
3119: destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
3120:
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: file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
3130: file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
3131: done
3132:
3133: # Usually 'no', except on cygwin/mingw when embedded into
3134: # the cwrapper.
3135: WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
3136: 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: *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
3144: $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: $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
3207:
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: func_exec_program \${1+\"\$@\"}
3224: 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: \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
3230: 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: if test -n "$1"; then
3262: case $host in
3263: *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: func_to_host_path_result=`( cmd //c echo "$1" ) 2>/dev/null |
3269: $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
3270: ;;
3271: *cygwin* )
3272: func_to_host_path_result=`cygpath -w "$1" |
3273: $SED -e "$lt_sed_naive_backslashify"`
3274: ;;
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: func_to_host_path_result=`$ECHO "$func_to_host_path_tmp1" |
3286: $SED -e "$lt_sed_naive_backslashify"`
3287: else
3288: # Allow warning below.
3289: func_to_host_path_result=
3290: 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: func_error " \`$1'"
3296: 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: if test -n "$1"; then
3329: 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: func_stripname : : "$1"
3336: func_to_host_pathlist_tmp1=$func_stripname_result
3337: case $build in
3338: *mingw* ) # Actually, msys.
3339: # Awkward: cmd appends spaces to result.
3340: 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: ;;
3344: *cygwin* )
3345: func_to_host_pathlist_result=`cygpath -w -p "$func_to_host_pathlist_tmp1" |
3346: $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: func_append func_to_host_pathlist_result ";$func_to_host_path_result"
3362: fi
3363: fi
3364: fi
3365: done
3366: IFS=$func_to_host_pathlist_oldIFS
3367: ;;
3368: esac
3369: if test -z "$func_to_host_pathlist_result"; then
3370: func_error "Could not determine the host path(s) corresponding to"
3371: func_error " \`$1'"
3372: 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: *: ) func_append func_to_host_pathlist_result ";"
3389: ;;
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: #ifdef _MSC_VER
3417: # define _CRT_SECURE_NO_DEPRECATE 1
3418: #endif
3419: #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: /* 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: #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: /* path handling portability macros */
3495: #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: #if defined(LT_DEBUGWRAPPER)
3538: static int lt_debug = 1;
3539: #else
3540: static int lt_debug = 0;
3541: #endif
3542:
3543: const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
3544:
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: 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: 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: char **prepare_spawn (char **argv);
3562: void lt_dump_script (FILE *f);
3563: 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: static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
3612:
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: newargz = XMALLOC (char *, argc + 1);
3629:
3630: /* 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: 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: lt_dump_script (stdout);
3649: return 0;
3650: }
3651: 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: }
3674: newargz[++newargc] = NULL;
3675:
3676: 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: tmp_pathspec = find_executable (argv[0]);
3686: if (tmp_pathspec == NULL)
3687: 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:
3692: actual_cwrapper_path = chase_symlinks (tmp_pathspec);
3693: lt_debugprintf (__FILE__, __LINE__,
3694: "(main) found exe (after symlink chase) at: %s\n",
3695: actual_cwrapper_path);
3696: XFREE (tmp_pathspec);
3697:
3698: actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
3699: 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: lt_debugprintf (__FILE__, __LINE__,
3717: "(main) libtool target name: %s\n",
3718: target_name);
3719: 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: lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
3772: nonnull (lt_argv_zero));
3773: for (i = 0; i < newargc; i++)
3774: {
3775: lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
3776: i, nonnull (newargz[i]));
3777: }
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: newargz = prepare_spawn (newargz);
3786: rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
3787: if (rval == -1)
3788: {
3789: /* failed to start process */
3790: lt_debugprintf (__FILE__, __LINE__,
3791: "(main) failed to launch target \"%s\": %s\n",
3792: lt_argv_zero, nonnull (strerror (errno)));
3793: 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: lt_fatal (__FILE__, __LINE__, "memory exhausted");
3815:
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: lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
3849: nonempty (path));
3850: 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: lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
3867: nonempty (path));
3868: 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: lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
3894: nonempty (wrapper));
3895:
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: lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
3948: nonnull (strerror (errno)));
3949: 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: lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
3974: nonnull (strerror (errno)));
3975: 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: lt_debugprintf (__FILE__, __LINE__,
4001: "checking path component for symlinks: %s\n",
4002: tmp_pathspec);
4003: 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: lt_fatal (__FILE__, __LINE__,
4025: "error accessing file \"%s\": %s",
4026: tmp_pathspec, nonnull (strerror (errno)));
4027: }
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: lt_fatal (__FILE__, __LINE__,
4040: "could not follow symlinks for %s", pathspec);
4041: }
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: 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: static void
4080: lt_error_core (int exit_status, const char *file,
4081: int line, const char *mode,
4082: const char *message, va_list ap)
4083: {
4084: fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4085: vfprintf (stderr, message, ap);
4086: fprintf (stderr, ".\n");
4087:
4088: if (exit_status >= 0)
4089: exit (exit_status);
4090: }
4091:
4092: void
4093: lt_fatal (const char *file, int line, const char *message, ...)
4094: {
4095: va_list ap;
4096: va_start (ap, message);
4097: lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4098: va_end (ap);
4099: }
4100:
4101: 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: void
4114: lt_setenv (const char *name, const char *value)
4115: {
4116: lt_debugprintf (__FILE__, __LINE__,
4117: "(lt_setenv) setting '%s' to '%s'\n",
4118: nonnull (name), nonnull (value));
4119: {
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: lt_debugprintf (__FILE__, __LINE__,
4167: "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4168: nonnull (name), nonnull (value));
4169:
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: lt_debugprintf (__FILE__, __LINE__,
4188: "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4189: nonnull (name), nonnull (value));
4190:
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: EOF
4200: case $host_os in
4201: mingw*)
4202: cat <<"EOF"
4203:
4204: /* 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: EOF
4317: ;;
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: }
4330: EOF
4331: }
4332: # end: func_emit_cwrapperexe_src
4333:
4334: # 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: # func_mode_link arg...
4346: func_mode_link ()
4347: {
4348: $opt_debug
4349: case $host in
4350: *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4351: # 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: libtool_args=$nonopt
4369: base_compile="$nonopt $@"
4370: compile_command=$nonopt
4371: finalize_command=$nonopt
4372:
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: new_inherited_linker_flags=
4387:
4388: avoid_version=no
4389: bindir=
4390: 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: weak_libs=
4417: single_module="${wl}-single_module"
4418: 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: -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: -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: func_warning "complete static linking is impossible in this configuration"
4435: 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: func_quote_for_eval "$arg"
4469: qarg=$func_quote_for_eval_unquoted_result
4470: func_append libtool_args " $func_quote_for_eval_result"
4471:
4472: # If the previous option needs an argument, assign it.
4473: if test -n "$prev"; then
4474: case $prev in
4475: output)
4476: func_append compile_command " @OUTPUT@"
4477: func_append finalize_command " @OUTPUT@"
4478: ;;
4479: esac
4480:
4481: case $prev in
4482: bindir)
4483: bindir="$arg"
4484: prev=
4485: continue
4486: ;;
4487: dlfiles|dlprefiles)
4488: if test "$preload" = no; then
4489: # Add the symbol object into the linking commands.
4490: func_append compile_command " @SYMFILE@"
4491: func_append finalize_command " @SYMFILE@"
4492: 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: test -f "$arg" \
4530: || func_fatal_error "symbol file \`$arg' does not exist"
4531: prev=
4532: continue
4533: ;;
4534: expsyms_regex)
4535: export_symbols_regex="$arg"
4536: prev=
4537: continue
4538: ;;
4539: 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: prev=
4550: continue
4551: ;;
4552: inst_prefix)
4553: inst_prefix_dir="$arg"
4554: prev=
4555: continue
4556: ;;
4557: objectlist)
4558: if test -f "$arg"; then
4559: save_arg=$arg
4560: moreargs=
4561: for fil in `cat "$save_arg"`
4562: 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: if func_lalib_unsafe_p "$arg"; then
4569: pic_object=
4570: non_pic_object=
4571:
4572: # Read the .lo file
4573: func_source "$arg"
4574:
4575: if test -z "$pic_object" ||
4576: test -z "$non_pic_object" ||
4577: test "$pic_object" = none &&
4578: test "$non_pic_object" = none; then
4579: func_fatal_error "cannot find name of object for \`$arg'"
4580: fi
4581:
4582: # Extract subdirectory from the argument.
4583: func_dirname "$arg" "/" ""
4584: xdir="$func_dirname_result"
4585:
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: func_append libobjs " $pic_object"
4610: 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: func_append non_pic_objects " $non_pic_object"
4620: 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: func_append non_pic_objects " $non_pic_object"
4628: fi
4629: else
4630: # Only an error if not doing a dry-run.
4631: if $opt_dry_run; then
4632: # Extract subdirectory from the argument.
4633: func_dirname "$arg" "/" ""
4634: xdir="$func_dirname_result"
4635:
4636: 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: fi
4644: fi
4645: done
4646: else
4647: func_fatal_error "link input file \`$arg' does not exist"
4648: fi
4649: arg=$save_arg
4650: prev=
4651: continue
4652: ;;
4653: precious_regex)
4654: precious_files_regex="$arg"
4655: prev=
4656: continue
4657: ;;
4658: release)
4659: release="-$arg"
4660: prev=
4661: continue
4662: ;;
4663: rpath | xrpath)
4664: # We need an absolute path.
4665: case $arg in
4666: [\\/]* | [A-Za-z]:[\\/]*) ;;
4667: *)
4668: func_fatal_error "only absolute run-paths are allowed"
4669: ;;
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: shrext)
4686: shrext_cmds="$arg"
4687: prev=
4688: continue
4689: ;;
4690: weak)
4691: weak_libs="$weak_libs $arg"
4692: prev=
4693: continue
4694: ;;
4695: xcclinker)
4696: linker_flags="$linker_flags $qarg"
4697: compiler_flags="$compiler_flags $qarg"
4698: prev=
4699: func_append compile_command " $qarg"
4700: func_append finalize_command " $qarg"
4701: continue
4702: ;;
4703: xcompiler)
4704: compiler_flags="$compiler_flags $qarg"
4705: prev=
4706: func_append compile_command " $qarg"
4707: func_append finalize_command " $qarg"
4708: continue
4709: ;;
4710: xlinker)
4711: linker_flags="$linker_flags $qarg"
4712: compiler_flags="$compiler_flags $wl$qarg"
4713: prev=
4714: func_append compile_command " $wl$qarg"
4715: func_append finalize_command " $wl$qarg"
4716: 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: # 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: fi
4735: continue
4736: ;;
4737:
4738: -allow-undefined)
4739: # FIXME: remove this flag sometime in the future.
4740: func_fatal_error "\`-allow-undefined' must not be used because it is the default"
4741: ;;
4742:
4743: -avoid-version)
4744: avoid_version=yes
4745: continue
4746: ;;
4747:
4748: -bindir)
4749: prev=bindir
4750: continue
4751: ;;
4752:
4753: -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: func_fatal_error "more than one -exported-symbols argument is not allowed"
4771: 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: -framework)
4781: prev=framework
4782: 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: func_append compile_command " $arg"
4796: func_append finalize_command " $arg"
4797: ;;
4798: esac
4799: continue
4800: ;;
4801:
4802: -L*)
4803: 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: # We need an absolute path.
4813: case $dir in
4814: [\\/]* | [A-Za-z]:[\\/]*) ;;
4815: *)
4816: absdir=`cd "$dir" && pwd`
4817: test -z "$absdir" && \
4818: func_fatal_error "cannot determine absolute directory name of \`$dir'"
4819: 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: *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
4831: testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
4832: case :$dllsearchpath: in
4833: *":$dir:"*) ;;
4834: ::) dllsearchpath=$dir;;
4835: *) dllsearchpath="$dllsearchpath:$dir";;
4836: esac
4837: case :$dllsearchpath: in
4838: *":$testbindir:"*) ;;
4839: ::) dllsearchpath=$testbindir;;
4840: *) 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: *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
4851: # 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: deplibs="$deplibs System.ltframework"
4865: 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: -module)
4889: module=yes
4890: continue
4891: ;;
4892:
4893: # Tru64 UNIX uses -model [arg] to determine the layout of C++
4894: # classes, name mangling, and exception handling.
4895: # Darwin uses the -arch flag to determine output architecture.
4896: -model|-arch|-isysroot)
4897: compiler_flags="$compiler_flags $arg"
4898: func_append compile_command " $arg"
4899: func_append finalize_command " $arg"
4900: prev=xcompiler
4901: continue
4902: ;;
4903:
4904: -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
4905: compiler_flags="$compiler_flags $arg"
4906: 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: continue
4913: ;;
4914:
4915: -multi_module)
4916: single_module="${wl}-multi_module"
4917: continue
4918: ;;
4919:
4920: -no-fast-install)
4921: fast_install=no
4922: continue
4923: ;;
4924:
4925: -no-install)
4926: case $host in
4927: *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
4928: # 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: func_warning "\`-no-install' is ignored for $host"
4931: func_warning "assuming \`-no-fast-install' instead"
4932: 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: func_stripname '-R' '' "$arg"
4973: dir=$func_stripname_result
4974: # We need an absolute path.
4975: case $dir in
4976: [\\/]* | [A-Za-z]:[\\/]*) ;;
4977: *)
4978: func_fatal_error "only absolute run-paths are allowed"
4979: ;;
4980: esac
4981: case "$xrpath " in
4982: *" $dir "*) ;;
4983: *) xrpath="$xrpath $dir" ;;
4984: esac
4985: continue
4986: ;;
4987:
4988: -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: -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:
5017: -version-number)
5018: prev=vinfo
5019: vinfo_number=yes
5020: continue
5021: ;;
5022:
5023: -weak)
5024: prev=weak
5025: continue
5026: ;;
5027:
5028: -Wc,*)
5029: func_stripname '-Wc,' '' "$arg"
5030: args=$func_stripname_result
5031: arg=
5032: save_ifs="$IFS"; IFS=','
5033: for flag in $args; do
5034: IFS="$save_ifs"
5035: func_quote_for_eval "$flag"
5036: arg="$arg $func_quote_for_eval_result"
5037: compiler_flags="$compiler_flags $func_quote_for_eval_result"
5038: done
5039: IFS="$save_ifs"
5040: func_stripname ' ' '' "$arg"
5041: arg=$func_stripname_result
5042: ;;
5043:
5044: -Wl,*)
5045: func_stripname '-Wl,' '' "$arg"
5046: args=$func_stripname_result
5047: arg=
5048: save_ifs="$IFS"; IFS=','
5049: for flag in $args; do
5050: IFS="$save_ifs"
5051: 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: done
5056: IFS="$save_ifs"
5057: func_stripname ' ' '' "$arg"
5058: arg=$func_stripname_result
5059: ;;
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: # -msg_* for osf cc
5077: -msg_*)
5078: func_quote_for_eval "$arg"
5079: arg="$func_quote_for_eval_result"
5080: ;;
5081:
5082: # 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: -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
5094: -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*)
5095: 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: # Some other compiler flag.
5104: -* | +*)
5105: func_quote_for_eval "$arg"
5106: arg="$func_quote_for_eval_result"
5107: ;;
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: if func_lalib_unsafe_p "$arg"; then
5119: pic_object=
5120: non_pic_object=
5121:
5122: # Read the .lo file
5123: func_source "$arg"
5124:
5125: if test -z "$pic_object" ||
5126: test -z "$non_pic_object" ||
5127: test "$pic_object" = none &&
5128: test "$non_pic_object" = none; then
5129: func_fatal_error "cannot find name of object for \`$arg'"
5130: fi
5131:
5132: # Extract subdirectory from the argument.
5133: func_dirname "$arg" "/" ""
5134: xdir="$func_dirname_result"
5135:
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: func_append libobjs " $pic_object"
5160: 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: func_append non_pic_objects " $non_pic_object"
5170: 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: func_append non_pic_objects " $non_pic_object"
5178: fi
5179: else
5180: # Only an error if not doing a dry-run.
5181: if $opt_dry_run; then
5182: # Extract subdirectory from the argument.
5183: func_dirname "$arg" "/" ""
5184: xdir="$func_dirname_result"
5185:
5186: 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: 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: func_quote_for_eval "$arg"
5226: arg="$func_quote_for_eval_result"
5227: ;;
5228: esac # arg
5229:
5230: # Now actually substitute the argument into the commands.
5231: if test -n "$arg"; then
5232: func_append compile_command " $arg"
5233: func_append finalize_command " $arg"
5234: fi
5235: done # argument parsing loop
5236:
5237: test -n "$prev" && \
5238: func_fatal_help "the \`$prevarg' option requires an argument"
5239:
5240: if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
5241: eval arg=\"$export_dynamic_flag_spec\"
5242: func_append compile_command " $arg"
5243: func_append finalize_command " $arg"
5244: fi
5245:
5246: oldlibs=
5247: # calculate the name of the file, without its directory
5248: func_basename "$output"
5249: outputname="$func_basename_result"
5250: libobjs_save="$libobjs"
5251:
5252: if test -n "$shlibpath_var"; then
5253: # get the directories listed in $shlibpath_var
5254: eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
5255: 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: func_dirname "$output" "/" ""
5262: output_objdir="$func_dirname_result$objdir"
5263: # Create the object directory.
5264: func_mkdir_p "$output_objdir"
5265:
5266: # Determine the type of output
5267: case $output in
5268: "")
5269: func_fatal_help "you must specify an output file"
5270: ;;
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: if $opt_duplicate_deps ; then
5284: 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: if $opt_duplicate_compiler_generated_deps; then
5299: 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: notinst_path= # paths that contain not-installed libtool libraries
5315:
5316: case $linkmode in
5317: lib)
5318: passes="conv dlpreopen link"
5319: for file in $dlfiles $dlprefiles; do
5320: case $file in
5321: *.la) ;;
5322: *)
5323: func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
5324: ;;
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:
5340: for pass in $passes; do
5341: # 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: 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: link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
5363: esac
5364: fi
5365: 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: func_basename "$deplib"
5378: deplib_base=$func_basename_result
5379: case " $weak_libs " in
5380: *" $deplib_base "*) ;;
5381: *) deplibs="$deplibs $deplib" ;;
5382: esac
5383: done
5384: done
5385: libs="$dlprefiles"
5386: fi
5387: if test "$pass" = dlopen; then
5388: # Collect dlpreopened libraries
5389: save_deplibs="$deplibs"
5390: deplibs=
5391: fi
5392:
5393: 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: 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: fi
5410: continue
5411: ;;
5412: -l*)
5413: if test "$linkmode" != lib && test "$linkmode" != prog; then
5414: func_warning "\`-l' is ignored for archives/objects"
5415: continue
5416: fi
5417: 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: 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: if func_lalib_p "$lib"; then
5455: library_names=
5456: old_library=
5457: func_source "$lib"
5458: 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: func_dirname "$lib" "" "."
5464: ladir="$func_dirname_result"
5465: 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: ;;
5477: *) ;;
5478: esac
5479: fi
5480: fi
5481: ;; # -l
5482: *.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: -L*)
5498: case $linkmode in
5499: lib)
5500: deplibs="$deplib $deplibs"
5501: test "$pass" = conv && continue
5502: newdependency_libs="$deplib $newdependency_libs"
5503: func_stripname '-L' '' "$deplib"
5504: newlib_search_path="$newlib_search_path $func_stripname_result"
5505: ;;
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: func_stripname '-L' '' "$deplib"
5518: newlib_search_path="$newlib_search_path $func_stripname_result"
5519: ;;
5520: *)
5521: func_warning "\`-L' is ignored for archives/objects"
5522: ;;
5523: esac # linkmode
5524: continue
5525: ;; # -L
5526: -R*)
5527: if test "$pass" = link; then
5528: func_stripname '-R' '' "$deplib"
5529: dir=$func_stripname_result
5530: # 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: # 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: if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
5558: | $EGREP "$match_pattern_regex" > /dev/null; then
5559: valid_a_lib=yes
5560: fi
5561: ;;
5562: pass_all)
5563: valid_a_lib=yes
5564: ;;
5565: esac
5566: if test "$valid_a_lib" != yes; then
5567: echo
5568: $ECHO "*** Warning: Trying to link with static lib archive $deplib."
5569: 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: else
5575: echo
5576: $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: 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:
5617: if test "$found" = yes || test -f "$lib"; then :
5618: else
5619: func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
5620: fi
5621:
5622: # Check to see that this really is a libtool archive.
5623: func_lalib_unsafe_p "$lib" \
5624: || func_fatal_error "\`$lib' is not a valid libtool archive"
5625:
5626: func_dirname "$lib" "" "."
5627: ladir="$func_dirname_result"
5628:
5629: dlname=
5630: dlopen=
5631: dlpreopen=
5632: libdir=
5633: library_names=
5634: old_library=
5635: inherited_linker_flags=
5636: # 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: func_source "$lib"
5645:
5646: # Convert "-framework foo" to "foo.ltframework"
5647: if test -n "$inherited_linker_flags"; then
5648: tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
5649: 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: dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
5657: 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: func_fatal_error "cannot find name of link library for \`$lib'"
5670: 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: func_fatal_error "\`$lib' is not a convenience library"
5676: fi
5677: 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: 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: func_fatal_error "cannot find name of link library for \`$lib'"
5698: fi
5699:
5700: # This library was specified with -dlopen.
5701: if test "$pass" = dlopen; then
5702: if test -z "$libdir"; then
5703: func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
5704: 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: func_warning "cannot determine absolute directory name of \`$ladir'"
5726: func_warning "passing it literally to the linker, although it might fail"
5727: abs_ladir="$ladir"
5728: fi
5729: ;;
5730: esac
5731: func_basename "$lib"
5732: laname="$func_basename_result"
5733:
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: func_warning "library \`$lib' was moved."
5738: 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: func_stripname 'lib' '.la' "$laname"
5760: name=$func_stripname_result
5761:
5762: # This library was specified with -dlpreopen.
5763: if test "$pass" = dlpreopen; then
5764: if test -z "$libdir" && test "$linkmode" = prog; then
5765: func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
5766: 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: # 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: # 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: -L*) func_stripname '-L' '' "$deplib"
5811: newlib_search_path="$newlib_search_path $func_stripname_result"
5812: ;;
5813: 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: if $opt_duplicate_deps ; then
5823: 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: test "$prefer_static_libs,$installed" = "built,yes"; } ||
5836: 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: case "$temp_rpath:" in
5841: *"$absdir:"*) ;;
5842: *) temp_rpath="$temp_rpath$absdir:" ;;
5843: 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: if test "$use_static_libs" = built && test "$installed" = yes; then
5881: use_static_libs=no
5882: fi
5883: if test -n "$library_names" &&
5884: { test "$use_static_libs" = no || test -z "$old_library"; }; then
5885: 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: # This is a shared library
5899:
5900: # 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: echo
5911: if test "$linkmode" = prog; then
5912: $ECHO "*** Warning: Linking the executable $output against the loadable module"
5913: else
5914: $ECHO "*** Warning: Linking the shared library $output against the loadable module"
5915: fi
5916: $ECHO "*** $linklib is not portable!"
5917: 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: shift
5947: realname="$1"
5948: shift
5949: libname=`eval "\\$ECHO \"$libname_spec\""`
5950: # 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: *cygwin* | mingw* | *cegcc*)
5957: func_arith $current - $age
5958: major=$func_arith_result
5959: 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: func_basename "$soroot"
5970: soname="$func_basename_result"
5971: func_stripname 'lib' '.dll' "$soname"
5972: newlib=libimp-$func_stripname_result.a
5973:
5974: # If the library has no export list, then create one now
5975: if test -f "$output_objdir/$soname-def"; then :
5976: else
5977: func_verbose "extracting exported symbol list from \`$soname'"
5978: func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
5979: fi
5980:
5981: # Create $newlib
5982: if test -f "$output_objdir/$newlib"; then :; else
5983: func_verbose "generating import library for \`$soname'"
5984: func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
5985: 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: # if the lib is a (non-dlopened) module then we can not
6007: # link against it, someone is ignoring the earlier warnings
6008: if /usr/bin/file -L $add 2> /dev/null |
6009: $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: echo
6014: echo "*** And there doesn't seem to be a static archive available"
6015: echo "*** The link will probably fail, sorry"
6016: else
6017: add="$dir/$old_library"
6018: fi
6019: elif test -n "$old_library"; then
6020: add="$dir/$old_library"
6021: 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: if test "$hardcode_direct" = yes &&
6039: test "$hardcode_direct_absolute" = no; then
6040: 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: func_fatal_configuration "unsupported hardcode properties"
6064: 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: if test "$hardcode_direct" != yes &&
6079: test "$hardcode_minus_L" != yes &&
6080: 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: if test "$hardcode_direct" = yes &&
6095: test "$hardcode_direct_absolute" = no; then
6096: 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: add="$inst_prefix_dir$libdir/$linklib"
6110: else
6111: add="$libdir/$linklib"
6112: 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: echo
6156: $ECHO "*** Warning: This system can not link to static lib archive $lib."
6157: 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: if test "$module" = yes; then
6161: 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: if test -z "$global_symbol_pipe"; then
6165: 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: 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: -R*) func_stripname '-R' '' "$libdir"
6194: temp_xrpath=$func_stripname_result
6195: 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: if $opt_duplicate_deps ; then
6213: 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: path=
6224: case $deplib in
6225: -L*) path="$deplib" ;;
6226: *.la)
6227: func_dirname "$deplib" "" "."
6228: dir="$func_dirname_result"
6229: # 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: func_warning "cannot determine absolute directory name of \`$dir'"
6236: absdir="$dir"
6237: fi
6238: ;;
6239: esac
6240: if $GREP "^installed=no" $deplib > /dev/null; then
6241: case $host in
6242: *-*-darwin*)
6243: depdepl=
6244: 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: 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: fi
6259: fi
6260: ;;
6261: *)
6262: path="-L$absdir/$objdir"
6263: ;;
6264: esac
6265: 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: ;;
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: 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: compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
6290: fi
6291: fi
6292: 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: fi
6391: if test "$linkmode" = prog || test "$linkmode" = lib; then
6392: dlprefiles="$newdlprefiles"
6393: fi
6394:
6395: case $linkmode in
6396: oldlib)
6397: if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
6398: func_warning "\`-dlopen' is ignored for archives"
6399: fi
6400:
6401: case " $deplibs" in
6402: *\ -l* | *\ -L*)
6403: func_warning "\`-l' and \`-L' are ignored for archives" ;;
6404: esac
6405:
6406: test -n "$rpath" && \
6407: func_warning "\`-rpath' is ignored for archives"
6408:
6409: test -n "$xrpath" && \
6410: func_warning "\`-R' is ignored for archives"
6411:
6412: test -n "$vinfo" && \
6413: func_warning "\`-version-info/-version-number' is ignored for archives"
6414:
6415: test -n "$release" && \
6416: func_warning "\`-release' is ignored for archives"
6417:
6418: test -n "$export_symbols$export_symbols_regex" && \
6419: func_warning "\`-export-symbols' is ignored for archives"
6420:
6421: # 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: func_stripname 'lib' '.la' "$outputname"
6432: name=$func_stripname_result
6433: eval shared_ext=\"$shrext_cmds\"
6434: eval libname=\"$libname_spec\"
6435: ;;
6436: *)
6437: test "$module" = no && \
6438: func_fatal_help "libtool library \`$output' must begin with \`lib'"
6439:
6440: if test "$need_lib_prefix" != no; then
6441: # Add the "lib" prefix for modules if required
6442: func_stripname '' '.la' "$outputname"
6443: name=$func_stripname_result
6444: eval shared_ext=\"$shrext_cmds\"
6445: eval libname=\"$libname_spec\"
6446: else
6447: func_stripname '' '.la' "$outputname"
6448: libname=$func_stripname_result
6449: fi
6450: ;;
6451: esac
6452:
6453: if test -n "$objs"; then
6454: if test "$deplibs_check_method" != pass_all; then
6455: func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
6456: else
6457: echo
6458: $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
6459: $ECHO "*** objects $objs is not portable!"
6460: libobjs="$libobjs $objs"
6461: fi
6462: fi
6463:
6464: test "$dlself" != no && \
6465: func_warning "\`-dlopen self' is ignored for libtool libraries"
6466:
6467: set dummy $rpath
6468: shift
6469: test "$#" -gt 1 && \
6470: func_warning "ignoring multiple \`-rpath's for a libtool library"
6471:
6472: install_libdir="$1"
6473:
6474: 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: test -n "$vinfo" && \
6487: func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
6488:
6489: test -n "$release" && \
6490: func_warning "\`-release' is ignored for convenience libraries"
6491: else
6492:
6493: # Parse the version information argument.
6494: save_ifs="$IFS"; IFS=':'
6495: set dummy $vinfo 0 0 0
6496: shift
6497: IFS="$save_ifs"
6498:
6499: test -n "$7" && \
6500: func_fatal_help "too many parameters to \`-version-info'"
6501:
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: number_major="$1"
6509: number_minor="$2"
6510: number_revision="$3"
6511: #
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: func_arith $number_major + $number_minor
6521: current=$func_arith_result
6522: age="$number_minor"
6523: revision="$number_revision"
6524: ;;
6525: freebsd-aout|freebsd-elf|qnx|sunos)
6526: current="$number_major"
6527: revision="$number_minor"
6528: age="0"
6529: ;;
6530: irix|nonstopux)
6531: func_arith $number_major + $number_minor
6532: current=$func_arith_result
6533: age="$number_minor"
6534: revision="$number_minor"
6535: lt_irix_increment=no
6536: ;;
6537: esac
6538: ;;
6539: no)
6540: current="$1"
6541: revision="$2"
6542: age="$3"
6543: ;;
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: func_error "CURRENT \`$current' must be a nonnegative integer"
6551: func_fatal_error "\`$vinfo' is not valid version information"
6552: ;;
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: func_error "REVISION \`$revision' must be a nonnegative integer"
6559: func_fatal_error "\`$vinfo' is not valid version information"
6560: ;;
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: func_error "AGE \`$age' must be a nonnegative integer"
6567: func_fatal_error "\`$vinfo' is not valid version information"
6568: ;;
6569: esac
6570:
6571: if test "$age" -gt "$current"; then
6572: func_error "AGE \`$age' is greater than the current interface number \`$current'"
6573: func_fatal_error "\`$vinfo' is not valid version information"
6574: 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: func_arith $current - $age
6587: major=.$func_arith_result
6588: versuffix="$major.$age.$revision"
6589: # Darwin ld doesn't like 0 for these options...
6590: func_arith $current + 1
6591: minor_current=$func_arith_result
6592: 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: versuffix=".$current"
6604: ;;
6605:
6606: irix | nonstopux)
6607: if test "X$lt_irix_increment" = "Xno"; then
6608: func_arith $current - $age
6609: else
6610: func_arith $current - $age + 1
6611: fi
6612: major=$func_arith_result
6613:
6614: 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: func_arith $revision - $loop
6624: iface=$func_arith_result
6625: func_arith $loop - 1
6626: loop=$func_arith_result
6627: 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: func_arith $current - $age
6637: major=.$func_arith_result
6638: versuffix="$major.$age.$revision"
6639: ;;
6640:
6641: osf)
6642: func_arith $current - $age
6643: major=.$func_arith_result
6644: 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: func_arith $current - $loop
6651: iface=$func_arith_result
6652: func_arith $loop - 1
6653: loop=$func_arith_result
6654: verstring="$verstring:${iface}.0"
6655: done
6656:
6657: # Make executables depend on our current version.
6658: verstring="$verstring:${current}.0"
6659: ;;
6660:
6661: qnx)
6662: major=".$current"
6663: versuffix=".$current"
6664: ;;
6665:
6666: 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: func_arith $current - $age
6675: major=$func_arith_result
6676: versuffix="-$major"
6677: ;;
6678:
6679: *)
6680: func_fatal_configuration "unknown library version type \`$version_type'"
6681: ;;
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: func_warning "undefined symbols not allowed in $host shared libraries"
6715: 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:
6723: fi
6724:
6725: func_generate_dlsyms "$libname" "$libname" "yes"
6726: libobjs="$libobjs $symfileobj"
6727: test "X$libobjs" = "X " && libobjs=
6728:
6729: 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: tempremovelist=`$ECHO "$output_objdir/*"`
6734: for p in $tempremovelist; do
6735: case $p in
6736: *.$objext | *.gcno)
6737: ;;
6738: $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
6739: if test "X$precious_files_regex" != "X"; then
6740: if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
6741: then
6742: continue
6743: fi
6744: fi
6745: removelist="$removelist $p"
6746: ;;
6747: *) ;;
6748: esac
6749: done
6750: test -n "$removelist" && \
6751: func_show_eval "${RM}r \$removelist"
6752: 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: oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
6760: fi
6761:
6762: # Eliminate all temporary directories.
6763: #for path in $notinst_path; do
6764: # 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: #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: *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
6808: # 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: deplibs="$deplibs System.ltframework"
6813: ;;
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: *)
6827: # 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: $opt_dry_run || $RM conftest.c
6864: cat > conftest.c <<EOF
6865: int main() { return 0; }
6866: EOF
6867: $opt_dry_run || $RM conftest
6868: if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
6869: ldd_output=`ldd conftest`
6870: for i in $deplibs; do
6871: case $i in
6872: -l*)
6873: func_stripname -l '' "$i"
6874: name=$func_stripname_result
6875: 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: fi
6883: if test -n "$i" ; then
6884: libname=`eval "\\$ECHO \"$libname_spec\""`
6885: deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6886: set dummy $deplib_matches; shift
6887: deplib_match=$1
6888: if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6889: newdeplibs="$newdeplibs $i"
6890: else
6891: droppeddeps=yes
6892: echo
6893: $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6894: 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: fi
6900: fi
6901: ;;
6902: *)
6903: newdeplibs="$newdeplibs $i"
6904: ;;
6905: esac
6906: 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: case $i in
6912: -l*)
6913: func_stripname -l '' "$i"
6914: name=$func_stripname_result
6915: $opt_dry_run || $RM conftest
6916: 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: libname=`eval "\\$ECHO \"$libname_spec\""`
6928: deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
6929: set dummy $deplib_matches; shift
6930: deplib_match=$1
6931: if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
6932: newdeplibs="$newdeplibs $i"
6933: else
6934: droppeddeps=yes
6935: echo
6936: $ECHO "*** Warning: dynamic linker does not accept needed library $i."
6937: 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: fi
6943: fi
6944: else
6945: droppeddeps=yes
6946: echo
6947: $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
6948: 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: fi
6952: ;;
6953: *)
6954: newdeplibs="$newdeplibs $i"
6955: ;;
6956: esac
6957: done
6958: fi
6959: ;;
6960: file_magic*)
6961: set dummy $deplibs_check_method; shift
6962: file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
6963: for a_deplib in $deplibs; do
6964: case $a_deplib in
6965: -l*)
6966: func_stripname -l '' "$a_deplib"
6967: name=$func_stripname_result
6968: 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: libname=`eval "\\$ECHO \"$libname_spec\""`
6978: 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: if ls -lLd "$potent_lib" 2>/dev/null |
6983: $GREP " -> " >/dev/null; then
6984: 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: *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
6997: esac
6998: done
6999: if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
7000: $SED -e 10q |
7001: $EGREP "$file_magic_regex" > /dev/null; then
7002: 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: echo
7012: $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7013: 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: if test -z "$potlib" ; then
7018: $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
7019: else
7020: $ECHO "*** with $libname and none of the candidates passed a file format test"
7021: $ECHO "*** using a file magic. Last file checked: $potlib"
7022: fi
7023: fi
7024: ;;
7025: *)
7026: # Add a -L argument.
7027: newdeplibs="$newdeplibs $a_deplib"
7028: ;;
7029: esac
7030: done # Gone through all deplibs.
7031: ;;
7032: match_pattern*)
7033: set dummy $deplibs_check_method; shift
7034: match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
7035: for a_deplib in $deplibs; do
7036: case $a_deplib in
7037: -l*)
7038: func_stripname -l '' "$a_deplib"
7039: name=$func_stripname_result
7040: 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: libname=`eval "\\$ECHO \"$libname_spec\""`
7050: 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: if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
7055: $EGREP "$match_pattern_regex" > /dev/null; then
7056: 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: echo
7066: $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
7067: 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: if test -z "$potlib" ; then
7072: $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
7073: else
7074: $ECHO "*** with $libname and none of the candidates passed a file format test"
7075: $ECHO "*** using a regex pattern. Last file checked: $potlib"
7076: fi
7077: fi
7078: ;;
7079: *)
7080: # Add a -L argument.
7081: newdeplibs="$newdeplibs $a_deplib"
7082: ;;
7083: esac
7084: done # Gone through all deplibs.
7085: ;;
7086: none | unknown | *)
7087: newdeplibs=""
7088: tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
7089: 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: tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
7093: done
7094: fi
7095: case $tmp_deplibs in
7096: *[!\ \ ]*)
7097: echo
7098: if test "X$deplibs_check_method" = "Xnone"; then
7099: echo "*** Warning: inter-library dependencies are not supported in this platform."
7100: else
7101: echo "*** Warning: inter-library dependencies are not known to be supported."
7102: fi
7103: echo "*** All declared inter-library dependencies are being dropped."
7104: droppeddeps=yes
7105: ;;
7106: esac
7107: ;;
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: # On Rhapsody replace the C library with the System framework
7118: newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
7119: ;;
7120: esac
7121:
7122: if test "$droppeddeps" = yes; then
7123: if test "$module" = yes; then
7124: echo
7125: echo "*** Warning: libtool could not satisfy all declared inter-library"
7126: $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
7127: echo "*** a static module, that should work as long as the dlopening"
7128: echo "*** application is linked with the -dlopen flag."
7129: if test -z "$global_symbol_pipe"; then
7130: 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: 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: 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:
7148: if test "$allow_undefined" = no; then
7149: 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: 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: # Time to change all our "foo.ltframework" stuff back to "-framework foo"
7168: case $host in
7169: *-*-darwin*)
7170: 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: ;;
7174: esac
7175:
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: eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
7248: 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: shift
7274: realname="$1"
7275: shift
7276:
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: test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
7295: test "X$libobjs" = "X " && libobjs=
7296:
7297: 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: # 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: func_verbose "generating symbol list for \`$libname.la'"
7328: export_symbols="$output_objdir/$libname.exp"
7329: $opt_dry_run || $RM $export_symbols
7330: cmds=$export_symbols_cmds
7331: save_ifs="$IFS"; IFS='~'
7332: for cmd in $cmds; do
7333: IFS="$save_ifs"
7334: eval cmd=\"$cmd\"
7335: 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: else
7341: # 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: # 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: 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: fi
7354: fi
7355: fi
7356:
7357: if test -n "$export_symbols" && test -n "$include_expsyms"; then
7358: tmp_export_symbols="$export_symbols"
7359: test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
7360: $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
7361: fi
7362:
7363: 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: tmp_deplibs=
7378: for test_deplib in $deplibs; do
7379: case " $convenience " in
7380: *" $test_deplib "*) ;;
7381: *)
7382: tmp_deplibs="$tmp_deplibs $test_deplib"
7383: ;;
7384: esac
7385: done
7386: deplibs="$tmp_deplibs"
7387:
7388: if test -n "$convenience"; then
7389: 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: if test -n "$whole_archive_flag_spec"; then
7397: save_libobjs=$libobjs
7398: eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
7399: test "X$libobjs" = "X " && libobjs=
7400: 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: test "X$libobjs" = "X " && libobjs=
7407: fi
7408: fi
7409:
7410: 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: $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
7418: 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: 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: fi
7437: fi
7438:
7439: if test "X$skipped_export" != "X:" &&
7440: func_len " $test_cmds" &&
7441: len=$func_len_result &&
7442: test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
7443: :
7444: else
7445: # 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:
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: func_basename "$output"
7462: output_la=$func_basename_result
7463:
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:
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: echo 'INPUT (' > $output
7476: for obj in $save_libobjs
7477: do
7478: $ECHO "$obj" >> $output
7479: done
7480: echo ')' >> $output
7481: 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: reload_objs=$objlist
7523: eval concat_cmds=\"$reload_cmds\"
7524: else
7525: # All subsequent reloadable object files will link in
7526: # the last one created.
7527: reload_objs="$objlist $last_robj"
7528: eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
7529: 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: objlist=" $obj"
7535: 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: reload_objs="$objlist $last_robj"
7545: eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
7546: if test -n "$last_robj"; then
7547: eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
7548: fi
7549: delfiles="$delfiles $output"
7550:
7551: else
7552: 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: fi
7566: fi
7567:
7568: test -n "$save_libobjs" &&
7569: func_verbose "creating a temporary reloadable object file: $output"
7570:
7571: # 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:
7582: # 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:
7589: exit $lt_exit
7590: }
7591: done
7592: IFS="$save_ifs"
7593:
7594: 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: $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
7605: 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: 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: test "X$libobjs" = "X " && libobjs=
7629: 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: if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
7642: cmds=$archive_expsym_cmds
7643: else
7644: cmds=$archive_cmds
7645: fi
7646: fi
7647: fi
7648:
7649: if test -n "$delfiles"; then
7650: # Append the command to remove temporary files to $cmds.
7651: eval cmds=\"\$cmds~\$RM $delfiles\"
7652: fi
7653:
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: save_ifs="$IFS"; IFS='~'
7665: for cmd in $cmds; do
7666: IFS="$save_ifs"
7667: eval cmd=\"$cmd\"
7668: $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: lt_exit=$?
7674:
7675: # Restore the uninstalled library and exit
7676: if test "$mode" = relink; then
7677: ( cd "$output_objdir" && \
7678: $RM "${realname}T" && \
7679: $MV "${realname}U" "$realname" )
7680: 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: $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
7690:
7691: if test -n "$convenience"; then
7692: if test -z "$whole_archive_flag_spec"; then
7693: func_show_eval '${RM}r "$gentop"'
7694: 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: func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
7704: 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: func_warning "\`-dlopen' is ignored for objects"
7718: fi
7719:
7720: case " $deplibs" in
7721: *\ -l* | *\ -L*)
7722: func_warning "\`-l' and \`-L' are ignored for objects" ;;
7723: esac
7724:
7725: test -n "$rpath" && \
7726: func_warning "\`-rpath' is ignored for objects"
7727:
7728: test -n "$xrpath" && \
7729: func_warning "\`-R' is ignored for objects"
7730:
7731: test -n "$vinfo" && \
7732: func_warning "\`-version-info' is ignored for objects"
7733:
7734: test -n "$release" && \
7735: func_warning "\`-release' is ignored for objects"
7736:
7737: case $output in
7738: *.lo)
7739: 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: ;;
7746: *)
7747: libobj=
7748: obj="$output"
7749: ;;
7750: esac
7751:
7752: # Delete the old objects.
7753: $opt_dry_run || $RM $obj $libobj
7754:
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: reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
7770: 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: reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
7781:
7782: output="$obj"
7783: func_execute_cmds "$reload_cmds" 'exit $?'
7784:
7785: # Exit if we aren't doing a library object file.
7786: if test -z "$libobj"; then
7787: if test -n "$gentop"; then
7788: func_show_eval '${RM}r "$gentop"'
7789: fi
7790:
7791: exit $EXIT_SUCCESS
7792: fi
7793:
7794: if test "$build_libtool_libs" != yes; then
7795: if test -n "$gentop"; then
7796: func_show_eval '${RM}r "$gentop"'
7797: 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: # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
7803: 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: func_execute_cmds "$reload_cmds" 'exit $?'
7811: fi
7812:
7813: if test -n "$gentop"; then
7814: func_show_eval '${RM}r "$gentop"'
7815: fi
7816:
7817: exit $EXIT_SUCCESS
7818: ;;
7819:
7820: prog)
7821: case $host in
7822: *cygwin*) func_stripname '' '.exe' "$output"
7823: output=$func_stripname_result.exe;;
7824: esac
7825: test -n "$vinfo" && \
7826: func_warning "\`-version-info' is ignored for programs"
7827:
7828: test -n "$release" && \
7829: func_warning "\`-release' is ignored for programs"
7830:
7831: 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:
7837: case $host in
7838: *-*-rhapsody* | *-*-darwin1.[012])
7839: # On Rhapsody replace the C library is the System framework
7840: compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
7841: finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
7842: ;;
7843: esac
7844:
7845: case $host in
7846: *-*-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: compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7859: finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
7860: ;;
7861: 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: *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
7936: testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
7937: case :$dllsearchpath: in
7938: *":$libdir:"*) ;;
7939: ::) dllsearchpath=$libdir;;
7940: *) dllsearchpath="$dllsearchpath:$libdir";;
7941: esac
7942: case :$dllsearchpath: in
7943: *":$testbindir:"*) ;;
7944: ::) dllsearchpath=$testbindir;;
7945: *) 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: compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
7997: finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
7998: fi
7999:
8000: func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
8001:
8002: # template prelinking step
8003: if test -n "$prelink_cmds"; then
8004: func_execute_cmds "$prelink_cmds" 'exit $?'
8005: fi
8006:
8007: wrappers_required=yes
8008: case $host in
8009: *cegcc* | *mingw32ce*)
8010: # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
8011: wrappers_required=no
8012: ;;
8013: *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: # Replace the output file specification.
8026: compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8027: link_command="$compile_command$compile_rpath"
8028:
8029: # We have no uninstalled library dependencies, so finalize right now.
8030: exit_status=0
8031: func_show_eval "$link_command" 'exit_status=$?'
8032:
8033: # Delete the generated files.
8034: if test -f "$output_objdir/${outputname}S.${objext}"; then
8035: func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
8036: 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: link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
8074: # Delete the old output file.
8075: $opt_dry_run || $RM $output
8076: # Link the executable and exit
8077: func_show_eval "$link_command" 'exit $?'
8078: 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: func_warning "this platform does not like uninstalled shared libraries"
8087: func_warning "\`$output' will be relinked during installation"
8088: 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: relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
8093: 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: link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8105:
8106: # Delete the old output files.
8107: $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8108:
8109: func_show_eval "$link_command" 'exit $?'
8110:
8111: # Now create the wrapper script.
8112: func_verbose "creating $output"
8113:
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: relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8120: elif eval var_value=\$$var; test -z "$var_value"; then
8121: relink_command="$var=; export $var; $relink_command"
8122: else
8123: func_quote_for_eval "$var_value"
8124: relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8125: fi
8126: done
8127: relink_command="(cd `pwd`; $relink_command)"
8128: relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
8129: fi
8130:
8131: # Only actually do things if not in dry run mode.
8132: $opt_dry_run || {
8133: # 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: *.exe) func_stripname '' '.exe' "$output"
8137: output=$func_stripname_result ;;
8138: esac
8139: # test for cygwin because mv fails w/o .exe extensions
8140: case $host in
8141: *cygwin*)
8142: exeext=.exe
8143: func_stripname '' '.exe' "$outputname"
8144: outputname=$func_stripname_result ;;
8145: *) exeext= ;;
8146: esac
8147: case $host in
8148: *cygwin* | *mingw* )
8149: 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:
8157: func_emit_cwrapperexe_src > $cwrappersource
8158:
8159: # 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:
8168: # 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: ;;
8181: * )
8182: $RM $output
8183: trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
8184:
8185: func_emit_wrapper no > $output
8186: chmod +x $output
8187: ;;
8188: esac
8189: }
8190: 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: oldobjs="$libobjs_save $symfileobj"
8199: 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: if test "$preload" = yes && test -f "$symfileobj"; then
8208: oldobjs="$oldobjs $symfileobj"
8209: fi
8210: 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: cmds=$old_archive_from_new_cmds
8225: else
8226:
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: # 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: func_basename "$obj"
8245: $ECHO "$func_basename_result"
8246: done | sort | sort -uc >/dev/null 2>&1); then
8247: :
8248: else
8249: echo "copying selected object files to avoid basename conflicts..."
8250: gentop="$output_objdir/${outputname}x"
8251: generated="$generated $gentop"
8252: func_mkdir_p "$gentop"
8253: save_oldobjs=$oldobjs
8254: oldobjs=
8255: counter=1
8256: for obj in $save_oldobjs
8257: do
8258: func_basename "$obj"
8259: objbase="$func_basename_result"
8260: 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: func_arith $counter + 1
8268: counter=$func_arith_result
8269: case " $oldobjs " in
8270: *[\ /]"$newobj "*) ;;
8271: *) if test ! -f "$gentop/$newobj"; then break; fi ;;
8272: esac
8273: done
8274: func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
8275: oldobjs="$oldobjs $gentop/$newobj"
8276: ;;
8277: *) oldobjs="$oldobjs $obj" ;;
8278: esac
8279: done
8280: fi
8281: eval cmds=\"$old_archive_cmds\"
8282:
8283: func_len " $cmds"
8284: len=$func_len_result
8285: if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
8286: cmds=$old_archive_cmds
8287: else
8288: # the command line is too long to link in one step, link in parts
8289: func_verbose "using piecewise archive linking..."
8290: save_RANLIB=$RANLIB
8291: RANLIB=:
8292: objlist=
8293: concat_cmds=
8294: save_oldobjs=$oldobjs
8295: oldobjs=
8296: # 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: eval test_cmds=\"$old_archive_cmds\"
8302: func_len " $test_cmds"
8303: len0=$func_len_result
8304: len=$len0
8305: for obj in $save_oldobjs
8306: do
8307: 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: :
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: RANLIB=$save_RANLIB
8318: fi
8319: test -z "$concat_cmds" || concat_cmds=$concat_cmds~
8320: eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
8321: objlist=
8322: len=$len0
8323: 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: func_execute_cmds "$cmds" 'exit $?'
8335: done
8336:
8337: test -n "$generated" && \
8338: func_show_eval "${RM}r$generated"
8339:
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: func_verbose "creating $output"
8346:
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: relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
8351: elif eval var_value=\$$var; test -z "$var_value"; then
8352: relink_command="$var=; export $var; $relink_command"
8353: else
8354: func_quote_for_eval "$var_value"
8355: relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
8356: 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: relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
8361: if test "$hardcode_automatic" = yes ; then
8362: relink_command=
8363: fi
8364:
8365: # Only create the output if not a dry run.
8366: $opt_dry_run || {
8367: 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: func_basename "$deplib"
8379: name="$func_basename_result"
8380: eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
8381: test -z "$libdir" && \
8382: func_fatal_error "\`$deplib' is not a valid libtool archive"
8383: 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:
8391: for lib in $dlfiles; do
8392: 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: done
8404: dlfiles="$newdlfiles"
8405: newdlprefiles=
8406: for lib in $dlprefiles; do
8407: 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: 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: $RM $output
8444: # place dlname in correct position for cygwin
8445: # 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: tdlname=$dlname
8454: case $host,$output,$installed,$module,$dlname in
8455: *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: esac
8467: $ECHO > $output "\
8468: # $outputname - a libtool library file
8469: # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
8470: #
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: # Linker flags that can not go in dependency_libs.
8484: inherited_linker_flags='$new_inherited_linker_flags'
8485:
8486: # Libraries that this one depends upon.
8487: dependency_libs='$dependency_libs'
8488:
8489: # Names of additional weak libraries provided by this library
8490: weak_library_names='$weak_libs'
8491:
8492: # 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: $ECHO >> $output "\
8511: relink_command=\"$relink_command\""
8512: fi
8513: done
8514: }
8515:
8516: # Do a symbolic link so that the libtool archive can be found in
8517: # LD_LIBRARY_PATH before the program is installed.
8518: func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
8519: ;;
8520: esac
8521: exit $EXIT_SUCCESS
8522: }
8523:
8524: { test "$mode" = link || test "$mode" = relink; } &&
8525: func_mode_link ${1+"$@"}
8526:
8527:
8528: # func_mode_uninstall arg...
8529: func_mode_uninstall ()
8530: {
8531: $opt_debug
8532: RM="$nonopt"
8533: 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: -f) RM="$RM $arg"; rmforce=yes ;;
8545: -*) RM="$RM $arg" ;;
8546: *) files="$files $arg" ;;
8547: esac
8548: done
8549:
8550: test -z "$RM" && \
8551: func_fatal_help "you must specify an RM program"
8552:
8553: rmdirs=
8554:
8555: origobjdir="$objdir"
8556: for file in $files; do
8557: func_dirname "$file" "" "."
8558: dir="$func_dirname_result"
8559: if test "X$dir" = X.; then
8560: objdir="$origobjdir"
8561: else
8562: objdir="$dir/$origobjdir"
8563: fi
8564: func_basename "$file"
8565: name="$func_basename_result"
8566: 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: if { test -L "$file"; } >/dev/null 2>&1 ||
8578: { test -h "$file"; } >/dev/null 2>&1 ||
8579: test -f "$file"; then
8580: :
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: if func_lalib_p "$file"; then
8594: func_source $dir/$name
8595:
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: test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
8610: ;;
8611: uninstall)
8612: if test -n "$library_names"; then
8613: # Do each command in the postuninstall commands.
8614: func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8615: fi
8616:
8617: if test -n "$old_library"; then
8618: # Do each command in the old_postuninstall commands.
8619: func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
8620: 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: if func_lalib_p "$file"; then
8630:
8631: # Read the .lo file
8632: func_source $dir/$name
8633:
8634: # Add PIC object to the list of files to remove.
8635: if test -n "$pic_object" &&
8636: test "$pic_object" != none; then
8637: rmfiles="$rmfiles $dir/$pic_object"
8638: fi
8639:
8640: # Add non-PIC object to the list of files to remove.
8641: if test -n "$non_pic_object" &&
8642: test "$non_pic_object" != none; then
8643: 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: func_stripname '' '.exe' "$file"
8654: file=$func_stripname_result
8655: func_stripname '' '.exe' "$name"
8656: noexename=$func_stripname_result
8657: # $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: 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:
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: func_show_eval "$RM $rmfiles" 'exit_status=1'
8688: 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: func_show_eval "rmdir $dir >/dev/null 2>&1"
8695: fi
8696: done
8697:
8698: exit $exit_status
8699: }
8700:
8701: { test "$mode" = uninstall || test "$mode" = clean; } &&
8702: func_mode_uninstall ${1+"$@"}
8703:
8704: test -z "$mode" && {
8705: help="$generic_help"
8706: func_fatal_help "you must specify a MODE"
8707: }
8708:
8709: test -z "$exec_cmd" && \
8710: func_fatal_help "invalid operation mode \`$mode'"
8711:
8712: if test -n "$exec_cmd"; then
8713: eval exec "$exec_cmd"
8714: exit $EXIT_FAILURE
8715: fi
8716:
8717: exit $exit_status
8718:
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: build_libtool_libs=no
8733: build_old_libs=yes
8734: # ### END LIBTOOL TAG CONFIG: disable-shared
8735:
8736: # ### BEGIN LIBTOOL TAG CONFIG: disable-static
8737: build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
8738: # ### END LIBTOOL TAG CONFIG: disable-static
8739:
8740: # Local Variables:
8741: # mode:shell-script
8742: # sh-indentation:2
8743: # End:
8744: # vi:sw=2
8745:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>