*** empty log message ***
[bpt/guile.git] / ltmain.sh
1 # ltmain.sh - Provide generalized library-building support services.
2 # NOTE: Changing this file will not affect anything until you rerun ltconfig.
3 #
4 # Copyright (C) 1996-1998 Free Software Foundation, Inc.
5 # Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
6 #
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
11 #
12 # This program is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 #
21 # As a special exception to the GNU General Public License, if you
22 # distribute this file as part of a program that contains a
23 # configuration script generated by Autoconf, you may include it under
24 # the same distribution terms that you use for the rest of that program.
25
26 # The name of this program.
27 progname=`$echo "$0" | sed 's%^.*/%%'`
28 modename="$progname"
29
30 # Constants.
31 PROGRAM=ltmain.sh
32 PACKAGE=libtool
33 VERSION=1.2
34
35 default_mode=
36 help="Try \`$progname --help' for more information."
37 magic="%%%MAGIC variable%%%"
38 mkdir="mkdir"
39 mv="mv -f"
40 rm="rm -f"
41
42 # Sed substitution that helps us do robust quoting. It backslashifies
43 # metacharacters that are still active within double-quoted strings.
44 Xsed='sed -e s/^X//'
45 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
46
47 # NLS nuisances.
48 # Only set LANG and LC_ALL to C if already set.
49 # These must not be set unconditionally because not all systems understand
50 # e.g. LANG=C (notably SCO).
51 if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
52 if test "${LANG+set}" = set; then LANG=C; export LANG; fi
53
54 if test "$LTCONFIG_VERSION" != "$VERSION"; then
55 echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
56 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
57 exit 1
58 fi
59
60 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
61 echo "$modename: not configured to build any kind of library" 1>&2
62 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
63 exit 1
64 fi
65
66 # Global variables.
67 mode=$default_mode
68 nonopt=
69 prev=
70 prevopt=
71 run=
72 show="$echo"
73 show_help=
74 execute_dlfiles=
75
76 # Parse our command line options once, thoroughly.
77 while test $# -gt 0
78 do
79 arg="$1"
80 shift
81
82 case "$arg" in
83 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
84 *) optarg= ;;
85 esac
86
87 # If the previous option needs an argument, assign it.
88 if test -n "$prev"; then
89 case "$prev" in
90 execute_dlfiles)
91 eval "$prev=\"\$$prev \$arg\""
92 ;;
93 *)
94 eval "$prev=\$arg"
95 ;;
96 esac
97
98 prev=
99 prevopt=
100 continue
101 fi
102
103 # Have we seen a non-optional argument yet?
104 case "$arg" in
105 --help)
106 show_help=yes
107 ;;
108
109 --version)
110 echo "$PROGRAM (GNU $PACKAGE) $VERSION"
111 exit 0
112 ;;
113
114 --dry-run | -n)
115 run=:
116 ;;
117
118 --features)
119 echo "host: $host"
120 if test "$build_libtool_libs" = yes; then
121 echo "enable shared libraries"
122 else
123 echo "disable shared libraries"
124 fi
125 if test "$build_old_libs" = yes; then
126 echo "enable static libraries"
127 else
128 echo "disable static libraries"
129 fi
130 exit 0
131 ;;
132
133 --finish) mode="finish" ;;
134
135 --mode) prevopt="--mode" prev=mode ;;
136 --mode=*) mode="$optarg" ;;
137
138 --quiet | --silent)
139 show=:
140 ;;
141
142 -dlopen)
143 prevopt="-dlopen"
144 prev=execute_dlfiles
145 ;;
146
147 -*)
148 $echo "$modename: unrecognized option \`$arg'" 1>&2
149 $echo "$help" 1>&2
150 exit 1
151 ;;
152
153 *)
154 nonopt="$arg"
155 break
156 ;;
157 esac
158 done
159
160 if test -n "$prevopt"; then
161 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
162 $echo "$help" 1>&2
163 exit 1
164 fi
165
166 if test -z "$show_help"; then
167
168 # Infer the operation mode.
169 if test -z "$mode"; then
170 case "$nonopt" in
171 *cc | *++ | gcc* | *-gcc*)
172 mode=link
173 for arg
174 do
175 case "$arg" in
176 -c)
177 mode=compile
178 break
179 ;;
180 esac
181 done
182 ;;
183 *db | *dbx)
184 mode=execute
185 ;;
186 *install*|cp|mv)
187 mode=install
188 ;;
189 *rm)
190 mode=uninstall
191 ;;
192 *)
193 # If we have no mode, but dlfiles were specified, then do execute mode.
194 test -n "$execute_dlfiles" && mode=execute
195
196 # Just use the default operation mode.
197 if test -z "$mode"; then
198 if test -n "$nonopt"; then
199 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
200 else
201 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
202 fi
203 fi
204 ;;
205 esac
206 fi
207
208 # Only execute mode is allowed to have -dlopen flags.
209 if test -n "$execute_dlfiles" && test "$mode" != execute; then
210 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
211 $echo "$help" 1>&2
212 exit 1
213 fi
214
215 # Change the help message to a mode-specific one.
216 generic_help="$help"
217 help="Try \`$modename --help --mode=$mode' for more information."
218
219 # These modes are in order of execution frequency so that they run quickly.
220 case "$mode" in
221 # libtool compile mode
222 compile)
223 modename="$modename: compile"
224 # Get the compilation command and the source file.
225 base_compile=
226 lastarg=
227 srcfile="$nonopt"
228 suppress_output=
229
230 for arg
231 do
232 # Accept any command-line options.
233 case "$arg" in
234 -o)
235 $echo "$modename: you cannot specify the output filename with \`-o'" 1>&2
236 $echo "$help" 1>&2
237 exit 1
238 ;;
239
240 -static)
241 build_libtool_libs=no
242 build_old_libs=yes
243 continue
244 ;;
245 esac
246
247 # Accept the current argument as the source file.
248 lastarg="$srcfile"
249 srcfile="$arg"
250
251 # Aesthetically quote the previous argument.
252
253 # Backslashify any backslashes, double quotes, and dollar signs.
254 # These are the only characters that are still specially
255 # interpreted inside of double-quoted scrings.
256 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
257
258 # Double-quote args containing other shell metacharacters.
259 # Many Bourne shells cannot handle close brackets correctly in scan
260 # sets, so we specify it separately.
261 case "$lastarg" in
262 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
263 lastarg="\"$lastarg\""
264 ;;
265 esac
266
267 # Add the previous argument to base_compile.
268 if test -z "$base_compile"; then
269 base_compile="$lastarg"
270 else
271 base_compile="$base_compile $lastarg"
272 fi
273 done
274
275 # Get the name of the library object.
276 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
277
278 # Recognize several different file suffixes.
279 xform='[cCFSfms]'
280 case "$libobj" in
281 *.ada) xform=ada ;;
282 *.adb) xform=adb ;;
283 *.ads) xform=ads ;;
284 *.asm) xform=asm ;;
285 *.c++) xform=c++ ;;
286 *.cc) xform=cc ;;
287 *.cpp) xform=cpp ;;
288 *.cxx) xform=cxx ;;
289 *.f90) xform=f90 ;;
290 *.for) xform=for ;;
291 esac
292
293 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
294
295 case "$libobj" in
296 *.lo) obj=`$echo "X$libobj" | $Xsed -e 's/\.lo$/.o/'` ;;
297 *)
298 $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2
299 exit 1
300 ;;
301 esac
302
303 if test -z "$base_compile"; then
304 $echo "$modename: you must specify a compilation command" 1>&2
305 $echo "$help" 1>&2
306 exit 1
307 fi
308
309 # Delete any leftover library objects.
310 if test "$build_old_libs" = yes; then
311 $run $rm $obj $libobj
312 trap "$run $rm $obj $libobj; exit 1" 1 2 15
313 else
314 $run $rm $libobj
315 trap "$run $rm $libobj; exit 1" 1 2 15
316 fi
317
318 # Only build a PIC object if we are building libtool libraries.
319 if test "$build_libtool_libs" = yes; then
320 # Without this assignment, base_compile gets emptied.
321 fbsd_hideous_sh_bug=$base_compile
322
323 # All platforms use -DPIC, to notify preprocessed assembler code.
324 $show "$base_compile$pic_flag -DPIC $srcfile"
325 if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then :
326 else
327 test -n "$obj" && $run $rm $obj
328 exit 1
329 fi
330
331 # If we have no pic_flag, then copy the object into place and finish.
332 if test -z "$pic_flag"; then
333 $show "$LN_S $obj $libobj"
334 $run $LN_S $obj $libobj
335 exit $?
336 fi
337
338 # Just move the object, then go on to compile the next one
339 $show "$mv $obj $libobj"
340 $run $mv $obj $libobj || exit 1
341
342 # Allow error messages only from the first compilation.
343 suppress_output=' >/dev/null 2>&1'
344 fi
345
346 # Only build a position-dependent object if we build old libraries.
347 if test "$build_old_libs" = yes; then
348 # Suppress compiler output if we already did a PIC compilation.
349 $show "$base_compile $srcfile$suppress_output"
350 if $run eval "$base_compile \$srcfile$suppress_output"; then :
351 else
352 $run $rm $obj $libobj
353 exit 1
354 fi
355 fi
356
357 # Create an invalid libtool object if no PIC, so that we do not
358 # accidentally link it into a program.
359 if test "$build_libtool_libs" != yes; then
360 $show "echo timestamp > $libobj"
361 $run eval "echo timestamp > \$libobj" || exit $?
362 fi
363
364 exit 0
365 ;;
366
367 # libtool link mode
368 link)
369 modename="$modename: link"
370 CC="$nonopt"
371 allow_undefined=yes
372 compile_command="$CC"
373 finalize_command="$CC"
374
375 compile_shlibpath=
376 finalize_shlibpath=
377 deplibs=
378 dlfiles=
379 dlprefiles=
380 export_dynamic=no
381 hardcode_libdirs=
382 libobjs=
383 link_against_libtool_libs=
384 ltlibs=
385 objs=
386 prev=
387 prevarg=
388 release=
389 rpath=
390 perm_rpath=
391 temp_rpath=
392 vinfo=
393
394 # We need to know -static, to get the right output filenames.
395 for arg
396 do
397 case "$arg" in
398 -all-static | -static)
399 if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
400 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
401 fi
402 build_libtool_libs=no
403 build_old_libs=yes
404 break
405 ;;
406 esac
407 done
408
409 # See if our shared archives depend on static archives.
410 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
411
412 # Go through the arguments, transforming them on the way.
413 for arg
414 do
415 # If the previous option needs an argument, assign it.
416 if test -n "$prev"; then
417 case "$prev" in
418 output)
419 compile_command="$compile_command @OUTPUT@"
420 finalize_command="$finalize_command @OUTPUT@"
421 ;;
422 esac
423
424 case "$prev" in
425 dlfiles|dlprefiles)
426 case "$arg" in
427 *.la | *.lo) ;; # We handle these cases below.
428 *)
429 dlprefiles="$dlprefiles $arg"
430 test "$prev" = dlfiles && dlfiles="$dlfiles $arg"
431 prev=
432 ;;
433 esac
434 ;;
435 release)
436 release="-$arg"
437 prev=
438 continue
439 ;;
440 rpath)
441 rpath="$rpath $arg"
442 prev=
443 continue
444 ;;
445 *)
446 eval "$prev=\"\$arg\""
447 prev=
448 continue
449 ;;
450 esac
451 fi
452
453 prevarg="$arg"
454
455 case "$arg" in
456 -all-static)
457 if test -n "$link_static_flag"; then
458 compile_command="$compile_command $link_static_flag"
459 finalize_command="$finalize_command $link_static_flag"
460 fi
461 continue
462 ;;
463
464 -allow-undefined)
465 # FIXME: remove this flag sometime in the future.
466 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
467 continue
468 ;;
469
470 -dlopen)
471 prev=dlfiles
472 continue
473 ;;
474
475 -dlpreopen)
476 prev=dlprefiles
477 continue
478 ;;
479
480 -export-dynamic)
481 if test "$export_dynamic" != yes; then
482 export_dynamic=yes
483 if test -n "$export_dynamic_flag_spec"; then
484 eval arg=\"$export_dynamic_flag_spec\"
485 else
486 arg=
487 fi
488
489 # Add the symbol object into the linking commands.
490 compile_command="$compile_command @SYMFILE@"
491 finalize_command="$finalize_command @SYMFILE@"
492 fi
493 ;;
494
495 -L*)
496 dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'`
497 case "$dir" in
498 /* | [A-Za-z]:\\*)
499 # Add the corresponding hardcode_libdir_flag, if it is not identical.
500 ;;
501 *)
502 $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2
503 exit 1
504 ;;
505 esac
506 deplibs="$deplibs $arg"
507 ;;
508
509 -l*) deplibs="$deplibs $arg" ;;
510
511 -no-undefined)
512 allow_undefined=no
513 continue
514 ;;
515
516 -o) prev=output ;;
517
518 -release)
519 prev=release
520 continue
521 ;;
522
523 -rpath)
524 prev=rpath
525 continue
526 ;;
527
528 -static)
529 # If we have no pic_flag, then this is the same as -all-static.
530 if test -z "$pic_flag" && test -n "$link_static_flag"; then
531 compile_command="$compile_command $link_static_flag"
532 finalize_command="$finalize_command $link_static_flag"
533 fi
534 continue
535 ;;
536
537 -version-info)
538 prev=vinfo
539 continue
540 ;;
541
542 # Some other compiler flag.
543 -* | +*)
544 # Unknown arguments in both finalize_command and compile_command need
545 # to be aesthetically quoted because they are evaled later.
546 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
547 case "$arg" in
548 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
549 arg="\"$arg\""
550 ;;
551 esac
552 ;;
553
554 *.o | *.a)
555 # A standard object.
556 objs="$objs $arg"
557 ;;
558
559 *.lo)
560 # A library object.
561 if test "$prev" = dlfiles; then
562 dlfiles="$dlfiles $arg"
563 if test "$build_libtool_libs" = yes; then
564 prev=
565 continue
566 else
567 # If libtool objects are unsupported, then we need to preload.
568 prev=dlprefiles
569 fi
570 fi
571
572 if test "$prev" = dlprefiles; then
573 # Preload the old-style object.
574 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'`
575 prev=
576 fi
577 libobjs="$libobjs $arg"
578 ;;
579
580 *.la)
581 # A libtool-controlled library.
582
583 dlname=
584 libdir=
585 library_names=
586 old_library=
587
588 # Check to see that this really is a libtool archive.
589 if (sed -e '2q' $arg | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
590 else
591 $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
592 exit 1
593 fi
594
595 # If there is no directory component, then add one.
596 case "$arg" in
597 */* | *\\*) . $arg ;;
598 *) . ./$arg ;;
599 esac
600
601 if test -z "$libdir"; then
602 $echo "$modename: \`$arg' contains no -rpath information" 1>&2
603 exit 1
604 fi
605
606 # Get the name of the library we link against.
607 linklib=
608 for l in $old_library $library_names; do
609 linklib="$l"
610 done
611
612 if test -z "$linklib"; then
613 $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
614 exit 1
615 fi
616
617 # Find the relevant object directory and library name.
618 name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
619 dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
620 if test "X$dir" = "X$arg"; then
621 dir="$objdir"
622 else
623 dir="$dir/$objdir"
624 fi
625
626 # This library was specified with -dlopen.
627 if test "$prev" = dlfiles; then
628 dlfiles="$dlfiles $arg"
629 if test -z "$dlname"; then
630 # If there is no dlname, we need to preload.
631 prev=dlprefiles
632 else
633 # We should not create a dependency on this library, but we
634 # may need any libraries it requires.
635 compile_command="$compile_command$dependency_libs"
636 finalize_command="$finalize_command$dependency_libs"
637 prev=
638 continue
639 fi
640 fi
641
642 # The library was specified with -dlpreopen.
643 if test "$prev" = dlprefiles; then
644 # Prefer using a static library (so that no silly _DYNAMIC symbols
645 # are required to link).
646 if test -n "$old_library"; then
647 dlprefiles="$dlprefiles $dir/$old_library"
648 else
649 dlprefiles="$dlprefiles $dir/$linklib"
650 fi
651 prev=
652 fi
653
654 if test "$build_libtool_libs" = yes && test -n "$library_names"; then
655 link_against_libtool_libs="$link_against_libtool_libs $arg"
656 if test -n "$shlibpath_var"; then
657 # Make sure the rpath contains only unique directories.
658 case "$temp_rpath " in
659 *" $dir "*) ;;
660 *) temp_rpath="$temp_rpath $dir" ;;
661 esac
662 fi
663
664 # This is the magic to use -rpath.
665 if test -n "$hardcode_libdir_flag_spec"; then
666 if test -n "$hardcode_libdir_separator"; then
667 if test -z "$hardcode_libdirs"; then
668 # Put the magic libdir with the hardcode flag.
669 hardcode_libdirs="$libdir"
670 libdir="@HARDCODE_LIBDIRS@"
671 else
672 # Just accumulate the unique libdirs.
673 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
674 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
675 ;;
676 *)
677 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
678 ;;
679 esac
680 libdir=
681 fi
682 fi
683
684 if test -n "$libdir"; then
685 eval flag=\"$hardcode_libdir_flag_spec\"
686
687 compile_command="$compile_command $flag"
688 finalize_command="$finalize_command $flag"
689 fi
690 elif test -n "$runpath_var"; then
691 # Do the same for the permanent run path.
692 case "$perm_rpath " in
693 *" $libdir "*) ;;
694 *) perm_rpath="$perm_rpath $libdir" ;;
695 esac
696 fi
697
698
699 case "$hardcode_action" in
700 immediate)
701 if test "$hardcode_direct" = no; then
702 compile_command="$compile_command $dir/$linklib"
703 elif test "$hardcode_minus_L" = no; then
704 compile_command="$compile_command -L$dir -l$name"
705 elif test "$hardcode_shlibpath_var" = no; then
706 compile_shlibpath="$compile_shlibpath$dir:"
707 compile_command="$compile_command -l$name"
708 fi
709 ;;
710
711 relink)
712 # We need an absolute path.
713 case "$dir" in
714 /* | [A-Za-z]:\\*) ;;
715 *)
716 absdir=`cd "$dir" && pwd`
717 if test -z "$absdir"; then
718 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
719 exit 1
720 fi
721 dir="$absdir"
722 ;;
723 esac
724
725 if test "$hardcode_direct" = yes; then
726 compile_command="$compile_command $dir/$linklib"
727 elif test "$hardcode_minus_L" = yes; then
728 compile_command="$compile_command -L$dir -l$name"
729 elif test "$hardcode_shlibpath_var" = yes; then
730 compile_shlibpath="$compile_shlibpath$dir:"
731 compile_command="$compile_command -l$name"
732 fi
733 ;;
734
735 *)
736 $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2
737 exit 1
738 ;;
739 esac
740
741 # Finalize command for both is simple: just hardcode it.
742 if test "$hardcode_direct" = yes; then
743 finalize_command="$finalize_command $libdir/$linklib"
744 elif test "$hardcode_minus_L" = yes; then
745 finalize_command="$finalize_command -L$libdir -l$name"
746 elif test "$hardcode_shlibpath_var" = yes; then
747 finalize_shlibpath="$finalize_shlibpath$libdir:"
748 finalize_command="$finalize_command -l$name"
749 else
750 # We cannot seem to hardcode it, guess we'll fake it.
751 finalize_command="$finalize_command -L$libdir -l$name"
752 fi
753 else
754 # Transform directly to old archives if we don't build new libraries.
755 if test -n "$pic_flag" && test -z "$old_library"; then
756 $echo "$modename: cannot find static library for \`$arg'" 1>&2
757 exit 1
758 fi
759
760 # Here we assume that one of hardcode_direct or hardcode_minus_L
761 # is not unsupported. This is valid on all known static and
762 # shared platforms.
763 if test "$hardcode_direct" != unsupported; then
764 test -n "$old_library" && linklib="$old_library"
765 compile_command="$compile_command $dir/$linklib"
766 finalize_command="$finalize_command $dir/$linklib"
767 else
768 compile_command="$compile_command -L$dir -l$name"
769 finalize_command="$finalize_command -L$dir -l$name"
770 fi
771 fi
772
773 # Add in any libraries that this one depends upon.
774 compile_command="$compile_command$dependency_libs"
775 finalize_command="$finalize_command$dependency_libs"
776 continue
777 ;;
778
779 # Some other compiler argument.
780 *)
781 # Unknown arguments in both finalize_command and compile_command need
782 # to be aesthetically quoted because they are evaled later.
783 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
784 case "$arg" in
785 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
786 arg="\"$arg\""
787 ;;
788 esac
789 ;;
790 esac
791
792 # Now actually substitute the argument into the commands.
793 if test -n "$arg"; then
794 compile_command="$compile_command $arg"
795 finalize_command="$finalize_command $arg"
796 fi
797 done
798
799 if test -n "$prev"; then
800 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
801 $echo "$help" 1>&2
802 exit 1
803 fi
804
805 if test -n "$vinfo" && test -n "$release"; then
806 $echo "$modename: you cannot specify both \`-version-info' and \`-release'" 1>&2
807 $echo "$help" 1>&2
808 exit 1
809 fi
810
811 oldlib=
812 oldobjs=
813 case "$output" in
814 "")
815 $echo "$modename: you must specify an output file" 1>&2
816 $echo "$help" 1>&2
817 exit 1
818 ;;
819
820 */* | *\\*)
821 $echo "$modename: output file \`$output' must have no directory components" 1>&2
822 exit 1
823 ;;
824
825 *.a)
826 # Now set the variables for building old libraries.
827 build_libtool_libs=no
828 build_old_libs=yes
829 oldlib="$output"
830 $show "$rm $oldlib"
831 $run $rm $oldlib
832 ;;
833
834 *.la)
835 # Make sure we only generate libraries of the form `libNAME.la'.
836 case "$output" in
837 lib*) ;;
838 *)
839 $echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2
840 $echo "$help" 1>&2
841 exit 1
842 ;;
843 esac
844
845 name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
846 eval libname=\"$libname_spec\"
847
848 # All the library-specific variables (install_libdir is set above).
849 library_names=
850 old_library=
851 dlname=
852 current=0
853 revision=0
854 age=0
855
856 if test -n "$objs"; then
857 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
858 exit 1
859 fi
860
861 # How the heck are we supposed to write a wrapper for a shared library?
862 if test -n "$link_against_libtool_libs"; then
863 $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2
864 exit 1
865 fi
866
867 if test -n "$dlfiles$dlprefiles"; then
868 $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2
869 # Nullify the symbol file.
870 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
871 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
872 fi
873
874 if test -z "$rpath"; then
875 $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2
876 $echo "$help" 1>&2
877 exit 1
878 fi
879
880 set dummy $rpath
881 if test $# -gt 2; then
882 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
883 fi
884 install_libdir="$2"
885
886 # Parse the version information argument.
887 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
888 set dummy $vinfo
889 IFS="$save_ifs"
890
891 if test -n "$5"; then
892 $echo "$modename: too many parameters to \`-version-info'" 1>&2
893 $echo "$help" 1>&2
894 exit 1
895 fi
896
897 test -n "$2" && current="$2"
898 test -n "$3" && revision="$3"
899 test -n "$4" && age="$4"
900
901 # Check that each of the things are valid numbers.
902 case "$current" in
903 0 | [1-9] | [1-9][0-9]*) ;;
904 *)
905 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
906 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
907 exit 1
908 ;;
909 esac
910
911 case "$revision" in
912 0 | [1-9] | [1-9][0-9]*) ;;
913 *)
914 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
915 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
916 exit 1
917 ;;
918 esac
919
920 case "$age" in
921 0 | [1-9] | [1-9][0-9]*) ;;
922 *)
923 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
924 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
925 exit 1
926 ;;
927 esac
928
929 if test $age -gt $current; then
930 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
931 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
932 exit 1
933 fi
934
935 # Calculate the version variables.
936 version_vars="version_type current age revision"
937 case "$version_type" in
938 none) ;;
939
940 linux)
941 version_vars="$version_vars major versuffix"
942 major=`expr $current - $age`
943 versuffix="$major.$age.$revision"
944 ;;
945
946 osf)
947 version_vars="$version_vars versuffix verstring"
948 major=`expr $current - $age`
949 versuffix="$current.$age.$revision"
950 verstring="$versuffix"
951
952 # Add in all the interfaces that we are compatible with.
953 loop=$age
954 while test $loop != 0; do
955 iface=`expr $current - $loop`
956 loop=`expr $loop - 1`
957 verstring="$verstring:${iface}.0"
958 done
959
960 # Make executables depend on our current version.
961 verstring="$verstring:${current}.0"
962 ;;
963
964 sunos)
965 version_vars="$version_vars major versuffix"
966 major="$current"
967 versuffix="$current.$revision"
968 ;;
969
970 *)
971 $echo "$modename: unknown library version type \`$version_type'" 1>&2
972 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
973 exit 1
974 ;;
975 esac
976
977 # Create the output directory, or remove our outputs if we need to.
978 if test -d $objdir; then
979 $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*"
980 $run $rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*
981 else
982 $show "$mkdir $objdir"
983 $run $mkdir $objdir
984 status=$?
985 if test $status -eq 0 || test -d $objdir; then :
986 else
987 exit $status
988 fi
989 fi
990
991 # Check to see if the archive will have undefined symbols.
992 if test "$allow_undefined" = yes; then
993 if test "$allow_undefined_flag" = unsupported; then
994 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
995 build_libtool_libs=no
996 build_old_libs=yes
997 fi
998 else
999 # Don't allow undefined symbols.
1000 allow_undefined_flag="$no_undefined_flag"
1001 fi
1002
1003 # Add libc to deplibs on all systems.
1004 dependency_libs="$deplibs"
1005 deplibs="$deplibs -lc"
1006
1007 if test "$build_libtool_libs" = yes; then
1008 # Get the real and link names of the library.
1009 eval library_names=\"$library_names_spec\"
1010 set dummy $library_names
1011 realname="$2"
1012 shift; shift
1013
1014 if test -n "$soname_spec"; then
1015 eval soname=\"$soname_spec\"
1016 else
1017 soname="$realname"
1018 fi
1019
1020 lib="$objdir/$realname"
1021 for link
1022 do
1023 linknames="$linknames $link"
1024 done
1025
1026 # Use standard objects if they are PIC.
1027 test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//g'`
1028
1029 # Do each of the archive commands.
1030 eval cmds=\"$archive_cmds\"
1031 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1032 for cmd in $cmds; do
1033 IFS="$save_ifs"
1034 $show "$cmd"
1035 $run eval "$cmd" || exit $?
1036 done
1037 IFS="$save_ifs"
1038
1039 # Create links to the real library.
1040 for linkname in $linknames; do
1041 $show "(cd $objdir && $LN_S $realname $linkname)"
1042 $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $?
1043 done
1044
1045 # If -export-dynamic was specified, set the dlname.
1046 if test "$export_dynamic" = yes; then
1047 # On all known operating systems, these are identical.
1048 dlname="$soname"
1049 fi
1050 fi
1051
1052 # Now set the variables for building old libraries.
1053 oldlib="$objdir/$libname.a"
1054 ;;
1055
1056 *.lo | *.o)
1057 if test -n "$link_against_libtool_libs"; then
1058 $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2
1059 exit 1
1060 fi
1061
1062 if test -n "$deplibs"; then
1063 $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2
1064 fi
1065
1066 if test -n "$dlfiles$dlprefiles"; then
1067 $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2
1068 # Nullify the symbol file.
1069 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1070 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1071 fi
1072
1073 if test -n "$rpath"; then
1074 $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2
1075 fi
1076
1077 if test -n "$vinfo"; then
1078 $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2
1079 fi
1080
1081 if test -n "$release"; then
1082 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
1083 fi
1084
1085 case "$output" in
1086 *.lo)
1087 if test -n "$objs"; then
1088 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
1089 exit 1
1090 fi
1091 libobj="$output"
1092 obj=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'`
1093 ;;
1094 *)
1095 libobj=
1096 obj="$output"
1097 ;;
1098 esac
1099
1100 # Delete the old objects.
1101 $run $rm $obj $libobj
1102
1103 # Create the old-style object.
1104 reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'`
1105
1106 output="$obj"
1107 eval cmds=\"$reload_cmds\"
1108 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1109 for cmd in $cmds; do
1110 IFS="$save_ifs"
1111 $show "$cmd"
1112 $run eval "$cmd" || exit $?
1113 done
1114 IFS="$save_ifs"
1115
1116 # Exit if we aren't doing a library object file.
1117 test -z "$libobj" && exit 0
1118
1119 if test "$build_libtool_libs" != yes; then
1120 # Create an invalid libtool object if no PIC, so that we don't
1121 # accidentally link it into a program.
1122 $show "echo timestamp > $libobj"
1123 $run eval "echo timestamp > $libobj" || exit $?
1124 exit 0
1125 fi
1126
1127 if test -n "$pic_flag"; then
1128 # Only do commands if we really have different PIC objects.
1129 reload_objs="$libobjs"
1130 output="$libobj"
1131 eval cmds=\"$reload_cmds\"
1132 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1133 for cmd in $cmds; do
1134 IFS="$save_ifs"
1135 $show "$cmd"
1136 $run eval "$cmd" || exit $?
1137 done
1138 IFS="$save_ifs"
1139 else
1140 # Just create a symlink.
1141 $show "$LN_S $obj $libobj"
1142 $run $LN_S $obj $libobj || exit 1
1143 fi
1144
1145 exit 0
1146 ;;
1147
1148 *)
1149 if test -n "$vinfo"; then
1150 $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2
1151 fi
1152
1153 if test -n "$release"; then
1154 $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2
1155 fi
1156
1157 if test -n "$rpath"; then
1158 # If the user specified any rpath flags, then add them.
1159 for libdir in $rpath; do
1160 if test -n "$hardcode_libdir_flag_spec"; then
1161 if test -n "$hardcode_libdir_separator"; then
1162 if test -z "$hardcode_libdirs"; then
1163 # Put the magic libdir with the hardcode flag.
1164 hardcode_libdirs="$libdir"
1165 libdir="@HARDCODE_LIBDIRS@"
1166 else
1167 # Just accumulate the unique libdirs.
1168 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
1169 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
1170 ;;
1171 *)
1172 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
1173 ;;
1174 esac
1175 libdir=
1176 fi
1177 fi
1178
1179 if test -n "$libdir"; then
1180 eval flag=\"$hardcode_libdir_flag_spec\"
1181
1182 compile_command="$compile_command $flag"
1183 finalize_command="$finalize_command $flag"
1184 fi
1185 elif test -n "$runpath_var"; then
1186 case "$perm_rpath " in
1187 *" $libdir "*) ;;
1188 *) perm_rpath="$perm_rpath $libdir" ;;
1189 esac
1190 fi
1191 done
1192 fi
1193
1194 # Substitute the hardcoded libdirs into the compile commands.
1195 if test -n "$hardcode_libdir_separator"; then
1196 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1197 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"`
1198 fi
1199
1200 if test -n "$libobjs" && test "$build_old_libs" = yes; then
1201 # Transform all the library objects into standard objects.
1202 compile_command=`$echo "X$compile_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1203 finalize_command=`$echo "X$finalize_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1204 fi
1205
1206 if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then
1207 dlsyms="${output}S.c"
1208 else
1209 dlsyms=
1210 fi
1211
1212 if test -n "$dlsyms"; then
1213 # Add our own program objects to the preloaded list.
1214 dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'`
1215
1216 # Discover the nlist of each of the dlfiles.
1217 nlist="$objdir/${output}.nm"
1218
1219 if test -d $objdir; then
1220 $show "$rm $nlist ${nlist}T"
1221 $run $rm "$nlist" "${nlist}T"
1222 else
1223 $show "$mkdir $objdir"
1224 $run $mkdir $objdir
1225 status=$?
1226 if test $status -eq 0 || test -d $objdir; then :
1227 else
1228 exit $status
1229 fi
1230 fi
1231
1232 for arg in $dlprefiles; do
1233 $show "extracting global C symbols from \`$arg'"
1234 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
1235 done
1236
1237 # Parse the name list into a source file.
1238 $show "creating $objdir/$dlsyms"
1239 if test -z "$run"; then
1240 # Make sure we at least have an empty file.
1241 test -f "$nlist" || : > "$nlist"
1242
1243 # Try sorting and uniquifying the output.
1244 if sort "$nlist" | uniq > "$nlist"T; then
1245 mv -f "$nlist"T "$nlist"
1246 wcout=`wc "$nlist" 2>/dev/null`
1247 count=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'`
1248 (test "$count" -ge 0) 2>/dev/null || count=-1
1249 else
1250 $rm "$nlist"T
1251 count=-1
1252 fi
1253
1254 case "$dlsyms" in
1255 "") ;;
1256 *.c)
1257 $echo > "$objdir/$dlsyms" "\
1258 /* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */
1259 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION */
1260
1261 #ifdef __cplusplus
1262 extern \"C\" {
1263 #endif
1264
1265 /* Prevent the only kind of declaration conflicts we can make. */
1266 #define dld_preloaded_symbol_count some_other_symbol
1267 #define dld_preloaded_symbols some_other_symbol
1268
1269 /* External symbol declarations for the compiler. */\
1270 "
1271
1272 if test -f "$nlist"; then
1273 sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms"
1274 else
1275 echo '/* NONE */' >> "$objdir/$dlsyms"
1276 fi
1277
1278 $echo >> "$objdir/$dlsyms" "\
1279
1280 #undef dld_preloaded_symbol_count
1281 #undef dld_preloaded_symbols
1282
1283 #if defined (__STDC__) && __STDC__
1284 # define __ptr_t void *
1285 #else
1286 # define __ptr_t char *
1287 #endif
1288
1289 /* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */
1290 int dld_preloaded_symbol_count = $count;
1291
1292 /* The mapping between symbol names and symbols. */
1293 struct {
1294 char *name;
1295 __ptr_t address;
1296 }
1297 dld_preloaded_symbols[] =
1298 {\
1299 "
1300
1301 if test -f "$nlist"; then
1302 sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms"
1303 fi
1304
1305 $echo >> "$objdir/$dlsyms" "\
1306 {0, (__ptr_t) 0}
1307 };
1308
1309 #ifdef __cplusplus
1310 }
1311 #endif\
1312 "
1313 ;;
1314
1315 *)
1316 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
1317 exit 1
1318 ;;
1319 esac
1320 fi
1321
1322 # Now compile the dynamic symbol file.
1323 $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")"
1324 $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $?
1325
1326 # Transform the symbol file into the correct name.
1327 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"`
1328 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"`
1329 elif test "$export_dynamic" != yes; then
1330 test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2
1331 else
1332 # We keep going just in case the user didn't refer to
1333 # dld_preloaded_symbols. The linker will fail if global_symbol_pipe
1334 # really was required.
1335 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
1336
1337 # Nullify the symbol file.
1338 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
1339 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
1340 fi
1341
1342 if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
1343 # Replace the output file specification.
1344 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1345 finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
1346
1347 # We have no uninstalled library dependencies, so finalize right now.
1348 $show "$compile_command"
1349 $run eval "$compile_command"
1350 exit $?
1351 fi
1352
1353 # Replace the output file specification.
1354 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'`
1355 finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'`
1356
1357 # Create the binary in the object directory, then wrap it.
1358 if test -d $objdir; then :
1359 else
1360 $show "$mkdir $objdir"
1361 $run $mkdir $objdir
1362 status=$?
1363 if test $status -eq 0 || test -d $objdir; then :
1364 else
1365 exit $status
1366 fi
1367 fi
1368
1369 if test -n "$shlibpath_var"; then
1370 # We should set the shlibpath_var
1371 rpath=
1372 for dir in $temp_rpath; do
1373 case "$dir" in
1374 /* | [A-Za-z]:\\*)
1375 # Absolute path.
1376 rpath="$rpath$dir:"
1377 ;;
1378 *)
1379 # Relative path: add a thisdir entry.
1380 rpath="$rpath\$thisdir/$dir:"
1381 ;;
1382 esac
1383 done
1384 temp_rpath="$rpath"
1385 fi
1386
1387 # Delete the old output file.
1388 $run $rm $output
1389
1390 if test -n "$compile_shlibpath"; then
1391 compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command"
1392 fi
1393 if test -n "$finalize_shlibpath"; then
1394 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
1395 fi
1396
1397 if test -n "$runpath_var" && test -n "$perm_rpath"; then
1398 # We should set the runpath_var.
1399 rpath=
1400 for dir in $perm_rpath; do
1401 rpath="$rpath$dir:"
1402 done
1403 compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command"
1404 finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command"
1405 fi
1406
1407 case "$hardcode_action" in
1408 relink)
1409 # AGH! Flame the AIX and HP-UX people for me, will ya?
1410 $echo "$modename: warning: using a buggy system linker" 1>&2
1411 $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2
1412 ;;
1413 esac
1414
1415 $show "$compile_command"
1416 $run eval "$compile_command" || exit $?
1417
1418 # Now create the wrapper script.
1419 $show "creating $output"
1420
1421 # Quote the finalize command for shipping.
1422 finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"`
1423
1424 # Quote $echo for shipping.
1425 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
1426
1427 # Only actually do things if our run command is non-null.
1428 if test -z "$run"; then
1429 $rm $output
1430 trap "$rm $output; exit 1" 1 2 15
1431
1432 $echo > $output "\
1433 #! /bin/sh
1434
1435 # $output - temporary wrapper script for $objdir/$output
1436 # Generated by ltmain.sh - GNU $PACKAGE $VERSION
1437 #
1438 # The $output program cannot be directly executed until all the libtool
1439 # libraries that it depends on are installed.
1440 #
1441 # This wrapper script should never be moved out of \``pwd`'.
1442 # If it is, it will not operate correctly.
1443
1444 # Sed substitution that helps us do robust quoting. It backslashifies
1445 # metacharacters that are still active within double-quoted strings.
1446 Xsed='sed -e s/^X//'
1447 sed_quote_subst='$sed_quote_subst'
1448
1449 # The HP-UX ksh and POSIX shell print the target directory to stdout
1450 # if CDPATH is set.
1451 if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi
1452
1453 # This environment variable determines our operation mode.
1454 if test \"\$libtool_install_magic\" = \"$magic\"; then
1455 # install mode needs the following variables:
1456 link_against_libtool_libs='$link_against_libtool_libs'
1457 finalize_command=\"$finalize_command\"
1458 else
1459 # When we are sourced in execute mode, \$file and \$echo are already set.
1460 if test \"\$libtool_execute_magic\" = \"$magic\"; then :
1461 else
1462 echo=\"$qecho\"
1463 file=\"\$0\"
1464 fi\
1465 "
1466 $echo >> $output "\
1467
1468 # Find the directory that this script lives in.
1469 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
1470 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
1471
1472 # Follow symbolic links until we get to the real thisdir.
1473 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
1474 while test -n \"\$file\"; do
1475 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
1476
1477 # If there was a directory component, then change thisdir.
1478 if test \"x\$destdir\" != \"x\$file\"; then
1479 case \"\$destdir\" in
1480 /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;;
1481 *) thisdir=\"\$thisdir/\$destdir\" ;;
1482 esac
1483 fi
1484
1485 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
1486 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
1487 done
1488
1489 # Try to get the absolute directory name.
1490 absdir=\`cd \"\$thisdir\" && pwd\`
1491 test -n \"\$absdir\" && thisdir=\"\$absdir\"
1492
1493 progdir=\"\$thisdir/$objdir\"
1494 program='$output'
1495
1496 if test -f \"\$progdir/\$program\"; then"
1497
1498 # Export our shlibpath_var if we have one.
1499 if test -n "$shlibpath_var" && test -n "$temp_rpath"; then
1500 $echo >> $output "\
1501 # Add our own library path to $shlibpath_var
1502 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
1503
1504 # Some systems cannot cope with colon-terminated $shlibpath_var
1505 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\`
1506
1507 export $shlibpath_var
1508 "
1509 fi
1510
1511 $echo >> $output "\
1512 if test \"\$libtool_execute_magic\" != \"$magic\"; then
1513 # Run the actual program with our arguments.
1514
1515 # Export the path to the program.
1516 PATH=\"\$progdir:\$PATH\"
1517 export PATH
1518
1519 exec \$program \${1+\"\$@\"}
1520
1521 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
1522 exit 1
1523 fi
1524 else
1525 # The program doesn't exist.
1526 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
1527 \$echo \"This script is just a wrapper for \$program.\" 1>&2
1528 echo \"See the $PACKAGE documentation for more information.\" 1>&2
1529 exit 1
1530 fi
1531 fi\
1532 "
1533 chmod +x $output
1534 fi
1535 exit 0
1536 ;;
1537 esac
1538
1539 # See if we need to build an old-fashioned archive.
1540 if test "$build_old_libs" = "yes"; then
1541 # Transform .lo files to .o files.
1542 oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'`
1543
1544 # Do each command in the archive commands.
1545 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
1546 eval cmds=\"$old_archive_from_new_cmds\"
1547 else
1548 eval cmds=\"$old_archive_cmds\"
1549 fi
1550 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1551 for cmd in $cmds; do
1552 IFS="$save_ifs"
1553 $show "$cmd"
1554 $run eval "$cmd" || exit $?
1555 done
1556 IFS="$save_ifs"
1557 fi
1558
1559 # Now create the libtool archive.
1560 case "$output" in
1561 *.la)
1562 old_library=
1563 test "$build_old_libs" = yes && old_library="$libname.a"
1564
1565 $show "creating $output"
1566
1567 # Only create the output if not a dry run.
1568 if test -z "$run"; then
1569 $echo > $output "\
1570 # $output - a libtool library file
1571 # Generated by ltmain.sh - GNU $PACKAGE $VERSION
1572
1573 # The name that we can dlopen(3).
1574 dlname='$dlname'
1575
1576 # Names of this library.
1577 library_names='$library_names'
1578
1579 # The name of the static archive.
1580 old_library='$old_library'
1581
1582 # Libraries that this one depends upon.
1583 dependency_libs='$dependency_libs'
1584
1585 # Version information for $libname.
1586 current=$current
1587 age=$age
1588 revision=$revision
1589
1590 # Directory that this library needs to be installed in:
1591 libdir='$install_libdir'\
1592 "
1593 fi
1594
1595 # Do a symbolic link so that the libtool archive can be found in
1596 # LD_LIBRARY_PATH before the program is installed.
1597 $show "(cd $objdir && $LN_S ../$output $output)"
1598 $run eval "(cd $objdir && $LN_S ../$output $output)" || exit 1
1599 ;;
1600 esac
1601 exit 0
1602 ;;
1603
1604 # libtool install mode
1605 install)
1606 modename="$modename: install"
1607
1608 # There may be an optional /bin/sh argument at the beginning of
1609 # install_prog (especially on Windows NT).
1610 if test "$nonopt" = "$SHELL"; then
1611 # Aesthetically quote it.
1612 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
1613 case "$arg" in
1614 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1615 arg="\"$arg\""
1616 ;;
1617 esac
1618 install_prog="$arg "
1619 arg="$1"
1620 shift
1621 else
1622 install_prog=
1623 arg="$nonopt"
1624 fi
1625
1626 # The real first argument should be the name of the installation program.
1627 # Aesthetically quote it.
1628 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1629 case "$arg" in
1630 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1631 arg="\"$arg\""
1632 ;;
1633 esac
1634 install_prog="$install_prog$arg"
1635
1636 # We need to accept at least all the BSD install flags.
1637 dest=
1638 files=
1639 opts=
1640 prev=
1641 install_type=
1642 isdir=
1643 stripme=
1644 for arg
1645 do
1646 if test -n "$dest"; then
1647 files="$files $dest"
1648 dest="$arg"
1649 continue
1650 fi
1651
1652 case "$arg" in
1653 -d) isdir=yes ;;
1654 -f) prev="-f" ;;
1655 -g) prev="-g" ;;
1656 -m) prev="-m" ;;
1657 -o) prev="-o" ;;
1658 -s)
1659 stripme=" -s"
1660 continue
1661 ;;
1662 -*) ;;
1663
1664 *)
1665 # If the previous option needed an argument, then skip it.
1666 if test -n "$prev"; then
1667 prev=
1668 else
1669 dest="$arg"
1670 continue
1671 fi
1672 ;;
1673 esac
1674
1675 # Aesthetically quote the argument.
1676 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1677 case "$arg" in
1678 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
1679 arg="\"$arg\""
1680 ;;
1681 esac
1682 install_prog="$install_prog $arg"
1683 done
1684
1685 if test -z "$install_prog"; then
1686 $echo "$modename: you must specify an install program" 1>&2
1687 $echo "$help" 1>&2
1688 exit 1
1689 fi
1690
1691 if test -n "$prev"; then
1692 $echo "$modename: the \`$prev' option requires an argument" 1>&2
1693 $echo "$help" 1>&2
1694 exit 1
1695 fi
1696
1697 if test -z "$files"; then
1698 if test -z "$dest"; then
1699 $echo "$modename: no file or destination specified" 1>&2
1700 else
1701 $echo "$modename: you must specify a destination" 1>&2
1702 fi
1703 $echo "$help" 1>&2
1704 exit 1
1705 fi
1706
1707 # Strip any trailing slash from the destination.
1708 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
1709
1710 # Check to see that the destination is a directory.
1711 test -d "$dest" && isdir=yes
1712 if test -n "$isdir"; then
1713 destdir="$dest"
1714 destname=
1715 else
1716 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
1717 test "X$destdir" = "X$dest" && destdir=.
1718 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
1719
1720 # Not a directory, so check to see that there is only one file specified.
1721 set dummy $files
1722 if test $# -gt 2; then
1723 $echo "$modename: \`$dest' is not a directory" 1>&2
1724 $echo "$help" 1>&2
1725 exit 1
1726 fi
1727 fi
1728 case "$destdir" in
1729 /* | [A-Za-z]:\\*) ;;
1730 *)
1731 for file in $files; do
1732 case "$file" in
1733 *.lo) ;;
1734 *)
1735 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
1736 $echo "$help" 1>&2
1737 exit 1
1738 ;;
1739 esac
1740 done
1741 ;;
1742 esac
1743
1744 # This variable tells wrapper scripts just to set variables rather
1745 # than running their programs.
1746 libtool_install_magic="$magic"
1747
1748 staticlibs=
1749 future_libdirs=
1750 current_libdirs=
1751 for file in $files; do
1752
1753 # Do each installation.
1754 case "$file" in
1755 *.a)
1756 # Do the static libraries later.
1757 staticlibs="$staticlibs $file"
1758 ;;
1759
1760 *.la)
1761 # Check to see that this really is a libtool archive.
1762 if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
1763 else
1764 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
1765 $echo "$help" 1>&2
1766 exit 1
1767 fi
1768
1769 library_names=
1770 old_library=
1771 # If there is no directory component, then add one.
1772 case "$file" in
1773 */* | *\\*) . $file ;;
1774 *) . ./$file ;;
1775 esac
1776
1777 # Add the libdir to current_libdirs if it is the destination.
1778 if test "X$destdir" = "X$libdir"; then
1779 case "$current_libdirs " in
1780 *" $libdir "*) ;;
1781 *) current_libdirs="$current_libdirs $libdir" ;;
1782 esac
1783 else
1784 # Note the libdir as a future libdir.
1785 case "$future_libdirs " in
1786 *" $libdir "*) ;;
1787 *) future_libdirs="$future_libdirs $libdir" ;;
1788 esac
1789 fi
1790
1791 dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
1792 test "X$dir" = "X$file/" && dir=
1793 dir="$dir$objdir"
1794
1795 # See the names of the shared library.
1796 set dummy $library_names
1797 if test -n "$2"; then
1798 realname="$2"
1799 shift
1800 shift
1801
1802 # Install the shared library and build the symlinks.
1803 $show "$install_prog $dir/$realname $destdir/$realname"
1804 $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
1805 test "X$dlname" = "X$realname" && dlname=
1806
1807 if test $# -gt 0; then
1808 # Delete the old symlinks.
1809 rmcmd="$rm"
1810 for linkname
1811 do
1812 rmcmd="$rmcmd $destdir/$linkname"
1813 done
1814 $show "$rmcmd"
1815 $run $rmcmd
1816
1817 # ... and create new ones.
1818 for linkname
1819 do
1820 test "X$dlname" = "X$linkname" && dlname=
1821 $show "(cd $destdir && $LN_S $realname $linkname)"
1822 $run eval "(cd $destdir && $LN_S $realname $linkname)"
1823 done
1824 fi
1825
1826 if test -n "$dlname"; then
1827 # Install the dynamically-loadable library.
1828 $show "$install_prog $dir/$dlname $destdir/$dlname"
1829 $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $?
1830 fi
1831
1832 # Do each command in the postinstall commands.
1833 lib="$destdir/$realname"
1834 eval cmds=\"$postinstall_cmds\"
1835 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1836 for cmd in $cmds; do
1837 IFS="$save_ifs"
1838 $show "$cmd"
1839 $run eval "$cmd" || exit $?
1840 done
1841 IFS="$save_ifs"
1842 fi
1843
1844 # Install the pseudo-library for information purposes.
1845 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1846 $show "$install_prog $file $destdir/$name"
1847 $run eval "$install_prog $file $destdir/$name" || exit $?
1848
1849 # Maybe install the static library, too.
1850 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
1851 ;;
1852
1853 *.lo)
1854 # Install (i.e. copy) a libtool object.
1855
1856 # Figure out destination file name, if it wasn't already specified.
1857 if test -n "$destname"; then
1858 destfile="$destdir/$destname"
1859 else
1860 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1861 destfile="$destdir/$destfile"
1862 fi
1863
1864 # Deduce the name of the destination old-style object file.
1865 case "$destfile" in
1866 *.lo)
1867 staticdest=`$echo "X$destfile" | $Xsed -e 's/\.lo$/\.o/'`
1868 ;;
1869 *.o)
1870 staticdest="$destfile"
1871 destfile=
1872 ;;
1873 *)
1874 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
1875 $echo "$help" 1>&2
1876 exit 1
1877 ;;
1878 esac
1879
1880 # Install the libtool object if requested.
1881 if test -n "$destfile"; then
1882 $show "$install_prog $file $destfile"
1883 $run eval "$install_prog $file $destfile" || exit $?
1884 fi
1885
1886 # Install the old object if enabled.
1887 if test "$build_old_libs" = yes; then
1888 # Deduce the name of the old-style object file.
1889 staticobj=`$echo "X$file" | $Xsed -e 's/\.lo$/\.o/'`
1890
1891 $show "$install_prog $staticobj $staticdest"
1892 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
1893 fi
1894 exit 0
1895 ;;
1896
1897 *)
1898 # Do a test to see if this is really a libtool program.
1899 if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
1900 link_against_libtool_libs=
1901 finalize_command=
1902
1903 # If there is no directory component, then add one.
1904 case "$file" in
1905 */* | *\\*) . $file ;;
1906 *) . ./$file ;;
1907 esac
1908
1909 # Check the variables that should have been set.
1910 if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then
1911 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
1912 exit 1
1913 fi
1914
1915 finalize=yes
1916 for lib in $link_against_libtool_libs; do
1917 # Check to see that each library is installed.
1918 libdir=
1919 if test -f "$lib"; then
1920 # If there is no directory component, then add one.
1921 case "$lib" in
1922 */* | *\\*) . $lib ;;
1923 *) . ./$lib ;;
1924 esac
1925 fi
1926 libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
1927 if test -z "$libdir"; then
1928 $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2
1929 elif test -f "$libfile"; then :
1930 else
1931 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
1932 finalize=no
1933 fi
1934 done
1935
1936 if test "$hardcode_action" = relink; then
1937 if test "$finalize" = yes; then
1938 $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2
1939 $show "$finalize_command"
1940 if $run eval "$finalize_command"; then :
1941 else
1942 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
1943 continue
1944 fi
1945 file="$objdir/$file"T
1946 else
1947 $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2
1948 fi
1949 else
1950 # Install the binary that we compiled earlier.
1951 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
1952 fi
1953 fi
1954
1955 $show "$install_prog$stripme $file $dest"
1956 $run eval "$install_prog\$stripme \$file \$dest" || exit $?
1957 ;;
1958 esac
1959 done
1960
1961 for file in $staticlibs; do
1962 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
1963
1964 # Set up the ranlib parameters.
1965 oldlib="$destdir/$name"
1966
1967 $show "$install_prog $file $oldlib"
1968 $run eval "$install_prog \$file \$oldlib" || exit $?
1969
1970 # Do each command in the postinstall commands.
1971 eval cmds=\"$old_postinstall_cmds\"
1972 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
1973 for cmd in $cmds; do
1974 IFS="$save_ifs"
1975 $show "$cmd"
1976 $run eval "$cmd" || exit $?
1977 done
1978 IFS="$save_ifs"
1979 done
1980
1981 if test -n "$future_libdirs"; then
1982 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
1983 fi
1984
1985 if test -n "$current_libdirs"; then
1986 # Maybe just do a dry run.
1987 test -n "$run" && current_libdirs=" -n$current_libdirs"
1988 exec $SHELL $0 --finish$current_libdirs
1989 exit 1
1990 fi
1991
1992 exit 0
1993 ;;
1994
1995 # libtool finish mode
1996 finish)
1997 modename="$modename: finish"
1998 libdirs="$nonopt"
1999
2000 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2001 for dir
2002 do
2003 libdirs="$libdirs $dir"
2004 done
2005
2006 for libdir in $libdirs; do
2007 if test -n "$finish_cmds"; then
2008 # Do each command in the finish commands.
2009 eval cmds=\"$finish_cmds\"
2010 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
2011 for cmd in $cmds; do
2012 IFS="$save_ifs"
2013 $show "$cmd"
2014 $run eval "$cmd"
2015 done
2016 IFS="$save_ifs"
2017 fi
2018 if test -n "$finish_eval"; then
2019 # Do the single finish_eval.
2020 eval cmds=\"$finish_eval\"
2021 $run eval "$cmds"
2022 fi
2023 done
2024 fi
2025
2026 echo "------------------------------------------------------------------------------"
2027 echo "Libraries have been installed in:"
2028 for libdir in $libdirs; do
2029 echo " $libdir"
2030 done
2031 echo
2032 echo "To link against installed libraries in a given directory, LIBDIR,"
2033 echo "you must use the \`-LLIBDIR' flag during linking."
2034 echo
2035 echo " You will also need to do one of the following:"
2036 if test -n "$shlibpath_var"; then
2037 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
2038 echo " during execution"
2039 fi
2040 if test -n "$runpath_var"; then
2041 echo " - add LIBDIR to the \`$runpath_var' environment variable"
2042 echo " during linking"
2043 fi
2044 if test -n "$hardcode_libdir_flag_spec"; then
2045 libdir=LIBDIR
2046 eval flag=\"$hardcode_libdir_flag_spec\"
2047
2048 echo " - use the \`$flag' linker flag"
2049 fi
2050 if test -f /etc/ld.so.conf; then
2051 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2052 fi
2053 echo
2054 echo "See any operating system documentation about shared libraries for"
2055 echo "more information, such as the ld(1) and ld.so(8) manual pages."
2056 echo "------------------------------------------------------------------------------"
2057 exit 0
2058 ;;
2059
2060 # libtool execute mode
2061 execute)
2062 modename="$modename: execute"
2063
2064 # The first argument is the command name.
2065 cmd="$nonopt"
2066 if test -z "$cmd"; then
2067 $echo "$modename: you must specify a COMMAND" 1>&2
2068 $echo "$help"
2069 exit 1
2070 fi
2071
2072 # Handle -dlopen flags immediately.
2073 for file in $execute_dlfiles; do
2074 if test -f "$file"; then :
2075 else
2076 $echo "$modename: \`$file' is not a file" 1>&2
2077 $echo "$help" 1>&2
2078 exit 1
2079 fi
2080
2081 dir=
2082 case "$file" in
2083 *.la)
2084 # Check to see that this really is a libtool archive.
2085 if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then :
2086 else
2087 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2088 $echo "$help" 1>&2
2089 exit 1
2090 fi
2091
2092 # Read the libtool library.
2093 dlname=
2094 library_names=
2095
2096 # If there is no directory component, then add one.
2097 case "$file" in
2098 */* | *\\*) . $file ;;
2099 *) . ./$file ;;
2100 esac
2101
2102 # Skip this library if it cannot be dlopened.
2103 if test -z "$dlname"; then
2104 # Warn if it was a shared library.
2105 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
2106 continue
2107 fi
2108
2109 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2110 test "X$dir" = "X$file" && dir=.
2111
2112 if test -f "$dir/$objdir/$dlname"; then
2113 dir="$dir/$objdir"
2114 else
2115 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
2116 exit 1
2117 fi
2118 ;;
2119
2120 *.lo)
2121 # Just add the directory containing the .lo file.
2122 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2123 test "X$dir" = "X$file" && dir=.
2124 ;;
2125
2126 *)
2127 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
2128 continue
2129 ;;
2130 esac
2131
2132 # Get the absolute pathname.
2133 absdir=`cd "$dir" && pwd`
2134 test -n "$absdir" && dir="$absdir"
2135
2136 # Now add the directory to shlibpath_var.
2137 if eval "test -z \"\$$shlibpath_var\""; then
2138 eval "$shlibpath_var=\"\$dir\""
2139 else
2140 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2141 fi
2142 done
2143
2144 # This variable tells wrapper scripts just to set shlibpath_var
2145 # rather than running their programs.
2146 libtool_execute_magic="$magic"
2147
2148 # Check if any of the arguments is a wrapper script.
2149 args=
2150 for file
2151 do
2152 case "$file" in
2153 -*) ;;
2154 *)
2155 # Do a test to see if this is really a libtool program.
2156 if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
2157 # If there is no directory component, then add one.
2158 case "$file" in
2159 */* | *\\*) . $file ;;
2160 *) . ./$file ;;
2161 esac
2162
2163 # Transform arg to wrapped name.
2164 file="$progdir/$program"
2165 fi
2166 ;;
2167 esac
2168 # Quote arguments (to preserve shell metacharacters).
2169 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
2170 args="$args \"$file\""
2171 done
2172
2173 if test -z "$run"; then
2174 # Export the shlibpath_var.
2175 eval "export $shlibpath_var"
2176
2177 # Now actually exec the command.
2178 eval "exec \$cmd$args"
2179
2180 $echo "$modename: cannot exec \$cmd$args"
2181 exit 1
2182 else
2183 # Display what would be done.
2184 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
2185 $echo "export $shlibpath_var"
2186 $echo "$cmd$args"
2187 exit 0
2188 fi
2189 ;;
2190
2191 # libtool uninstall mode
2192 uninstall)
2193 modename="$modename: uninstall"
2194 rm="$nonopt"
2195 files=
2196
2197 for arg
2198 do
2199 case "$arg" in
2200 -*) rm="$rm $arg" ;;
2201 *) files="$files $arg" ;;
2202 esac
2203 done
2204
2205 if test -z "$rm"; then
2206 $echo "$modename: you must specify an RM program" 1>&2
2207 $echo "$help" 1>&2
2208 exit 1
2209 fi
2210
2211 for file in $files; do
2212 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
2213 test "X$dir" = "X$file" && dir=.
2214 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
2215
2216 rmfiles="$file"
2217
2218 case "$name" in
2219 *.la)
2220 # Possibly a libtool archive, so verify it.
2221 if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then
2222 . $dir/$name
2223
2224 # Delete the libtool libraries and symlinks.
2225 for n in $library_names; do
2226 rmfiles="$rmfiles $dir/$n"
2227 test "X$n" = "X$dlname" && dlname=
2228 done
2229 test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname"
2230 test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
2231
2232 $show "$rm $rmfiles"
2233 $run $rm $rmfiles
2234
2235 if test -n "$library_names"; then
2236 # Do each command in the postuninstall commands.
2237 eval cmds=\"$postuninstall_cmds\"
2238 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
2239 for cmd in $cmds; do
2240 IFS="$save_ifs"
2241 $show "$cmd"
2242 $run eval "$cmd"
2243 done
2244 IFS="$save_ifs"
2245 fi
2246
2247 if test -n "$old_library"; then
2248 # Do each command in the old_postuninstall commands.
2249 eval cmds=\"$old_postuninstall_cmds\"
2250 IFS="${IFS= }"; save_ifs="$IFS"; IFS=';'
2251 for cmd in $cmds; do
2252 IFS="$save_ifs"
2253 $show "$cmd"
2254 $run eval "$cmd"
2255 done
2256 IFS="$save_ifs"
2257 fi
2258
2259 # FIXME: should reinstall the best remaining shared library.
2260 fi
2261 ;;
2262
2263 *.lo)
2264 if test "$build_old_libs" = yes; then
2265 oldobj=`$echo "X$name" | $Xsed -e 's/\.lo$/\.o/'`
2266 rmfiles="$rmfiles $dir/$oldobj"
2267 fi
2268 $show "$rm $rmfiles"
2269 $run $rm $rmfiles
2270 ;;
2271
2272 *)
2273 $show "$rm $rmfiles"
2274 $run $rm $rmfiles
2275 ;;
2276 esac
2277 done
2278 exit 0
2279 ;;
2280
2281 "")
2282 $echo "$modename: you must specify a MODE" 1>&2
2283 $echo "$generic_help" 1>&2
2284 exit 1
2285 ;;
2286 esac
2287
2288 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2289 $echo "$generic_help" 1>&2
2290 exit 1
2291 fi # test -z "$show_help"
2292
2293 # We need to display help for each of the modes.
2294 case "$mode" in
2295 "") $echo \
2296 "Usage: $modename [OPTION]... [MODE-ARG]...
2297
2298 Provide generalized library-building support services.
2299
2300 -n, --dry-run display commands without modifying any files
2301 --features display configuration information and exit
2302 --finish same as \`--mode=finish'
2303 --help display this help message and exit
2304 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
2305 --quiet same as \`--silent'
2306 --silent don't print informational messages
2307 --version print version information
2308
2309 MODE must be one of the following:
2310
2311 compile compile a source file into a libtool object
2312 execute automatically set library path, then run a program
2313 finish complete the installation of libtool libraries
2314 install install libraries or executables
2315 link create a library or an executable
2316 uninstall remove libraries from an installed directory
2317
2318 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
2319 a more detailed description of MODE."
2320 exit 0
2321 ;;
2322
2323 compile)
2324 $echo \
2325 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2326
2327 Compile a source file into a libtool library object.
2328
2329 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2330 from the given SOURCEFILE.
2331
2332 The output file name is determined by removing the directory component from
2333 SOURCEFILE, then substituting the C source code suffix \`.c' with the
2334 library object suffix, \`.lo'."
2335 ;;
2336
2337 execute)
2338 $echo \
2339 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
2340
2341 Automatically set library path, then run a program.
2342
2343 This mode accepts the following additional options:
2344
2345 -dlopen FILE add the directory containing FILE to the library path
2346
2347 This mode sets the library path environment variable according to \`-dlopen'
2348 flags.
2349
2350 If any of the ARGS are libtool executable wrappers, then they are translated
2351 into their corresponding uninstalled binary, and any of their required library
2352 directories are added to the library path.
2353
2354 Then, COMMAND is executed, with ARGS as arguments."
2355 ;;
2356
2357 finish)
2358 $echo \
2359 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
2360
2361 Complete the installation of libtool libraries.
2362
2363 Each LIBDIR is a directory that contains libtool libraries.
2364
2365 The commands that this mode executes may require superuser privileges. Use
2366 the \`--dry-run' option if you just want to see what would be executed."
2367 ;;
2368
2369 install)
2370 $echo \
2371 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
2372
2373 Install executables or libraries.
2374
2375 INSTALL-COMMAND is the installation command. The first component should be
2376 either the \`install' or \`cp' program.
2377
2378 The rest of the components are interpreted as arguments to that command (only
2379 BSD-compatible install options are recognized)."
2380 ;;
2381
2382 link)
2383 $echo \
2384 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
2385
2386 Link object files or libraries together to form another library, or to
2387 create an executable program.
2388
2389 LINK-COMMAND is a command using the C compiler that you would use to create
2390 a program from several object files.
2391
2392 The following components of LINK-COMMAND are treated specially:
2393
2394 -all-static do not do any dynamic linking at all
2395 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
2396 -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols
2397 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2398 -LLIBDIR search LIBDIR for required installed libraries
2399 -lNAME OUTPUT-FILE requires the installed library libNAME
2400 -no-undefined declare that a library does not refer to external symbols
2401 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
2402 -release RELEASE specify package release information
2403 -rpath LIBDIR the created library will eventually be installed in LIBDIR
2404 -static do not do any dynamic linking of libtool libraries
2405 -version-info CURRENT[:REVISION[:AGE]]
2406 specify library version info [each variable defaults to 0]
2407
2408 All other options (arguments beginning with \`-') are ignored.
2409
2410 Every other argument is treated as a filename. Files ending in \`.la' are
2411 treated as uninstalled libtool libraries, other files are standard or library
2412 object files.
2413
2414 If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only
2415 library objects (\`.lo' files) may be specified, and \`-rpath' is required.
2416
2417 If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar'
2418 and \`ranlib'.
2419
2420 If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is
2421 created, otherwise an executable program is created."
2422 ;;
2423
2424 uninstall)
2425 $echo
2426 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2427
2428 Remove libraries from an installation directory.
2429
2430 RM is the name of the program to use to delete files associated with each FILE
2431 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2432 to RM.
2433
2434 If FILE is a libtool library, all the files associated with it are deleted.
2435 Otherwise, only FILE itself is deleted using RM."
2436 ;;
2437
2438 *)
2439 $echo "$modename: invalid operation mode \`$mode'" 1>&2
2440 $echo "$help" 1>&2
2441 exit 1
2442 ;;
2443 esac
2444
2445 echo
2446 $echo "Try \`$modename --help' for more information about other modes."
2447
2448 exit 0
2449
2450 # Local Variables:
2451 # mode:shell-script
2452 # sh-indentation:2
2453 # End: