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