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