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