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