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