don't use LTLIBOBJS
[nvi.git] / dist / ltmain.sh
blob5959c479b0e86af58baeeaae8de9e8f2dbbbecca
1 # ltmain.sh - Provide generalized library-building support services.
2 # NOTE: Changing this file will not affect anything until you rerun configure.
4 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
5 # Free Software Foundation, Inc.
6 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
8 # This program is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
13 # This program is distributed in the hope that it will be useful, but
14 # WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 # General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 # As a special exception to the GNU General Public License, if you
23 # distribute this file as part of a program that contains a
24 # configuration script generated by Autoconf, you may include it under
25 # the same distribution terms that you use for the rest of that program.
27 # Check that we have a working $echo.
28 if test "X$1" = X--no-reexec; then
29 # Discard the --no-reexec flag, and continue.
30 shift
31 elif test "X$1" = X--fallback-echo; then
32 # Avoid inline document here, it may be left over
34 elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
35 # Yippee, $echo works!
37 else
38 # Restart under the correct shell, and then maybe $echo will work.
39 exec $SHELL "$0" --no-reexec ${1+"$@"}
42 if test "X$1" = X--fallback-echo; then
43 # used as fallback echo
44 shift
45 cat <<EOF
47 EOF
48 exit 0
51 # The name of this program.
52 progname=`$echo "$0" | sed 's%^.*/%%'`
53 modename="$progname"
55 # Constants.
56 PROGRAM=ltmain.sh
57 PACKAGE=libtool
58 VERSION=1.4
59 TIMESTAMP=" (1.920 2001/04/24 23:26:18)"
61 default_mode=
62 help="Try \`$progname --help' for more information."
63 magic="%%%MAGIC variable%%%"
64 mkdir="mkdir"
65 mv="mv -f"
66 rm="rm -f"
68 # Sed substitution that helps us do robust quoting. It backslashifies
69 # metacharacters that are still active within double-quoted strings.
70 Xsed='sed -e 1s/^X//'
71 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
72 SP2NL='tr \040 \012'
73 NL2SP='tr \015\012 \040\040'
75 # NLS nuisances.
76 # Only set LANG and LC_ALL to C if already set.
77 # These must not be set unconditionally because not all systems understand
78 # e.g. LANG=C (notably SCO).
79 # We save the old values to restore during execute mode.
80 if test "${LC_ALL+set}" = set; then
81 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
83 if test "${LANG+set}" = set; then
84 save_LANG="$LANG"; LANG=C; export LANG
87 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
88 echo "$modename: not configured to build any kind of library" 1>&2
89 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
90 exit 1
93 # Global variables.
94 mode=$default_mode
95 nonopt=
96 prev=
97 prevopt=
98 run=
99 show="$echo"
100 show_help=
101 execute_dlfiles=
102 lo2o="s/\\.lo\$/.${objext}/"
103 o2lo="s/\\.${objext}\$/.lo/"
105 # Parse our command line options once, thoroughly.
106 while test $# -gt 0
108 arg="$1"
109 shift
111 case $arg in
112 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
113 *) optarg= ;;
114 esac
116 # If the previous option needs an argument, assign it.
117 if test -n "$prev"; then
118 case $prev in
119 execute_dlfiles)
120 execute_dlfiles="$execute_dlfiles $arg"
123 eval "$prev=\$arg"
125 esac
127 prev=
128 prevopt=
129 continue
132 # Have we seen a non-optional argument yet?
133 case $arg in
134 --help)
135 show_help=yes
138 --version)
139 echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
140 exit 0
143 --config)
144 sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
145 exit 0
148 --debug)
149 echo "$progname: enabling shell trace mode"
150 set -x
153 --dry-run | -n)
154 run=:
157 --features)
158 echo "host: $host"
159 if test "$build_libtool_libs" = yes; then
160 echo "enable shared libraries"
161 else
162 echo "disable shared libraries"
164 if test "$build_old_libs" = yes; then
165 echo "enable static libraries"
166 else
167 echo "disable static libraries"
169 exit 0
172 --finish) mode="finish" ;;
174 --mode) prevopt="--mode" prev=mode ;;
175 --mode=*) mode="$optarg" ;;
177 --quiet | --silent)
178 show=:
181 -dlopen)
182 prevopt="-dlopen"
183 prev=execute_dlfiles
187 $echo "$modename: unrecognized option \`$arg'" 1>&2
188 $echo "$help" 1>&2
189 exit 1
193 nonopt="$arg"
194 break
196 esac
197 done
199 if test -n "$prevopt"; then
200 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
201 $echo "$help" 1>&2
202 exit 1
205 if test -z "$show_help"; then
207 # Infer the operation mode.
208 if test -z "$mode"; then
209 case $nonopt in
210 *cc | *++ | gcc* | *-gcc*)
211 mode=link
212 for arg
214 case $arg in
216 mode=compile
217 break
219 esac
220 done
222 *db | *dbx | *strace | *truss)
223 mode=execute
225 *install*|cp|mv)
226 mode=install
228 *rm)
229 mode=uninstall
232 # If we have no mode, but dlfiles were specified, then do execute mode.
233 test -n "$execute_dlfiles" && mode=execute
235 # Just use the default operation mode.
236 if test -z "$mode"; then
237 if test -n "$nonopt"; then
238 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
239 else
240 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
244 esac
247 # Only execute mode is allowed to have -dlopen flags.
248 if test -n "$execute_dlfiles" && test "$mode" != execute; then
249 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
250 $echo "$help" 1>&2
251 exit 1
254 # Change the help message to a mode-specific one.
255 generic_help="$help"
256 help="Try \`$modename --help --mode=$mode' for more information."
258 # These modes are in order of execution frequency so that they run quickly.
259 case $mode in
260 # libtool compile mode
261 compile)
262 modename="$modename: compile"
263 # Get the compilation command and the source file.
264 base_compile=
265 prev=
266 lastarg=
267 srcfile="$nonopt"
268 suppress_output=
270 user_target=no
271 for arg
273 case $prev in
274 "") ;;
275 xcompiler)
276 # Aesthetically quote the previous argument.
277 prev=
278 lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
280 case $arg in
281 # Double-quote args containing other shell metacharacters.
282 # Many Bourne shells cannot handle close brackets correctly
283 # in scan sets, so we specify it separately.
284 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
285 arg="\"$arg\""
287 esac
289 # Add the previous argument to base_compile.
290 if test -z "$base_compile"; then
291 base_compile="$lastarg"
292 else
293 base_compile="$base_compile $lastarg"
295 continue
297 esac
299 # Accept any command-line options.
300 case $arg in
302 if test "$user_target" != "no"; then
303 $echo "$modename: you cannot specify \`-o' more than once" 1>&2
304 exit 1
306 user_target=next
309 -static)
310 build_old_libs=yes
311 continue
314 -prefer-pic)
315 pic_mode=yes
316 continue
319 -prefer-non-pic)
320 pic_mode=no
321 continue
324 -Xcompiler)
325 prev=xcompiler
326 continue
329 -Wc,*)
330 args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
331 lastarg=
332 IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
333 for arg in $args; do
334 IFS="$save_ifs"
336 # Double-quote args containing other shell metacharacters.
337 # Many Bourne shells cannot handle close brackets correctly
338 # in scan sets, so we specify it separately.
339 case $arg in
340 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
341 arg="\"$arg\""
343 esac
344 lastarg="$lastarg $arg"
345 done
346 IFS="$save_ifs"
347 lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
349 # Add the arguments to base_compile.
350 if test -z "$base_compile"; then
351 base_compile="$lastarg"
352 else
353 base_compile="$base_compile $lastarg"
355 continue
357 esac
359 case $user_target in
360 next)
361 # The next one is the -o target name
362 user_target=yes
363 continue
365 yes)
366 # We got the output file
367 user_target=set
368 libobj="$arg"
369 continue
371 esac
373 # Accept the current argument as the source file.
374 lastarg="$srcfile"
375 srcfile="$arg"
377 # Aesthetically quote the previous argument.
379 # Backslashify any backslashes, double quotes, and dollar signs.
380 # These are the only characters that are still specially
381 # interpreted inside of double-quoted scrings.
382 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
384 # Double-quote args containing other shell metacharacters.
385 # Many Bourne shells cannot handle close brackets correctly
386 # in scan sets, so we specify it separately.
387 case $lastarg in
388 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
389 lastarg="\"$lastarg\""
391 esac
393 # Add the previous argument to base_compile.
394 if test -z "$base_compile"; then
395 base_compile="$lastarg"
396 else
397 base_compile="$base_compile $lastarg"
399 done
401 case $user_target in
402 set)
405 # Get the name of the library object.
406 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
409 $echo "$modename: you must specify a target with \`-o'" 1>&2
410 exit 1
412 esac
414 # Recognize several different file suffixes.
415 # If the user specifies -o file.o, it is replaced with file.lo
416 xform='[cCFSfmso]'
417 case $libobj in
418 *.ada) xform=ada ;;
419 *.adb) xform=adb ;;
420 *.ads) xform=ads ;;
421 *.asm) xform=asm ;;
422 *.c++) xform=c++ ;;
423 *.cc) xform=cc ;;
424 *.cpp) xform=cpp ;;
425 *.cxx) xform=cxx ;;
426 *.f90) xform=f90 ;;
427 *.for) xform=for ;;
428 esac
430 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
432 case $libobj in
433 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
435 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
436 exit 1
438 esac
440 if test -z "$base_compile"; then
441 $echo "$modename: you must specify a compilation command" 1>&2
442 $echo "$help" 1>&2
443 exit 1
446 # Delete any leftover library objects.
447 if test "$build_old_libs" = yes; then
448 removelist="$obj $libobj"
449 else
450 removelist="$libobj"
453 $run $rm $removelist
454 trap "$run $rm $removelist; exit 1" 1 2 15
456 # On Cygwin there's no "real" PIC flag so we must build both object types
457 case $host_os in
458 cygwin* | mingw* | pw32* | os2*)
459 pic_mode=default
461 esac
462 if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
463 # non-PIC code in shared libraries is not supported
464 pic_mode=default
467 # Calculate the filename of the output object if compiler does
468 # not support -o with -c
469 if test "$compiler_c_o" = no; then
470 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
471 lockfile="$output_obj.lock"
472 removelist="$removelist $output_obj $lockfile"
473 trap "$run $rm $removelist; exit 1" 1 2 15
474 else
475 need_locks=no
476 lockfile=
479 # Lock this critical section if it is needed
480 # We use this script file to make the link, it avoids creating a new file
481 if test "$need_locks" = yes; then
482 until $run ln "$0" "$lockfile" 2>/dev/null; do
483 $show "Waiting for $lockfile to be removed"
484 sleep 2
485 done
486 elif test "$need_locks" = warn; then
487 if test -f "$lockfile"; then
488 echo "\
489 *** ERROR, $lockfile exists and contains:
490 `cat $lockfile 2>/dev/null`
492 This indicates that another process is trying to use the same
493 temporary object file, and libtool could not work around it because
494 your compiler does not support \`-c' and \`-o' together. If you
495 repeat this compilation, it may succeed, by chance, but you had better
496 avoid parallel builds (make -j) in this platform, or get a better
497 compiler."
499 $run $rm $removelist
500 exit 1
502 echo $srcfile > "$lockfile"
505 if test -n "$fix_srcfile_path"; then
506 eval srcfile=\"$fix_srcfile_path\"
509 # Only build a PIC object if we are building libtool libraries.
510 if test "$build_libtool_libs" = yes; then
511 # Without this assignment, base_compile gets emptied.
512 fbsd_hideous_sh_bug=$base_compile
514 if test "$pic_mode" != no; then
515 # All platforms use -DPIC, to notify preprocessed assembler code.
516 command="$base_compile $srcfile $pic_flag -DPIC"
517 else
518 # Don't build PIC code
519 command="$base_compile $srcfile"
521 if test "$build_old_libs" = yes; then
522 lo_libobj="$libobj"
523 dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
524 if test "X$dir" = "X$libobj"; then
525 dir="$objdir"
526 else
527 dir="$dir/$objdir"
529 libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
531 if test -d "$dir"; then
532 $show "$rm $libobj"
533 $run $rm $libobj
534 else
535 $show "$mkdir $dir"
536 $run $mkdir $dir
537 status=$?
538 if test $status -ne 0 && test ! -d $dir; then
539 exit $status
543 if test "$compiler_o_lo" = yes; then
544 output_obj="$libobj"
545 command="$command -o $output_obj"
546 elif test "$compiler_c_o" = yes; then
547 output_obj="$obj"
548 command="$command -o $output_obj"
551 $run $rm "$output_obj"
552 $show "$command"
553 if $run eval "$command"; then :
554 else
555 test -n "$output_obj" && $run $rm $removelist
556 exit 1
559 if test "$need_locks" = warn &&
560 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
561 echo "\
562 *** ERROR, $lockfile contains:
563 `cat $lockfile 2>/dev/null`
565 but it should contain:
566 $srcfile
568 This indicates that another process is trying to use the same
569 temporary object file, and libtool could not work around it because
570 your compiler does not support \`-c' and \`-o' together. If you
571 repeat this compilation, it may succeed, by chance, but you had better
572 avoid parallel builds (make -j) in this platform, or get a better
573 compiler."
575 $run $rm $removelist
576 exit 1
579 # Just move the object if needed, then go on to compile the next one
580 if test x"$output_obj" != x"$libobj"; then
581 $show "$mv $output_obj $libobj"
582 if $run $mv $output_obj $libobj; then :
583 else
584 error=$?
585 $run $rm $removelist
586 exit $error
590 # If we have no pic_flag, then copy the object into place and finish.
591 if (test -z "$pic_flag" || test "$pic_mode" != default) &&
592 test "$build_old_libs" = yes; then
593 # Rename the .lo from within objdir to obj
594 if test -f $obj; then
595 $show $rm $obj
596 $run $rm $obj
599 $show "$mv $libobj $obj"
600 if $run $mv $libobj $obj; then :
601 else
602 error=$?
603 $run $rm $removelist
604 exit $error
607 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
608 if test "X$xdir" = "X$obj"; then
609 xdir="."
610 else
611 xdir="$xdir"
613 baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
614 libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
615 # Now arrange that obj and lo_libobj become the same file
616 $show "(cd $xdir && $LN_S $baseobj $libobj)"
617 if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
618 exit 0
619 else
620 error=$?
621 $run $rm $removelist
622 exit $error
626 # Allow error messages only from the first compilation.
627 suppress_output=' >/dev/null 2>&1'
630 # Only build a position-dependent object if we build old libraries.
631 if test "$build_old_libs" = yes; then
632 if test "$pic_mode" != yes; then
633 # Don't build PIC code
634 command="$base_compile $srcfile"
635 else
636 # All platforms use -DPIC, to notify preprocessed assembler code.
637 command="$base_compile $srcfile $pic_flag -DPIC"
639 if test "$compiler_c_o" = yes; then
640 command="$command -o $obj"
641 output_obj="$obj"
644 # Suppress compiler output if we already did a PIC compilation.
645 command="$command$suppress_output"
646 $run $rm "$output_obj"
647 $show "$command"
648 if $run eval "$command"; then :
649 else
650 $run $rm $removelist
651 exit 1
654 if test "$need_locks" = warn &&
655 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
656 echo "\
657 *** ERROR, $lockfile contains:
658 `cat $lockfile 2>/dev/null`
660 but it should contain:
661 $srcfile
663 This indicates that another process is trying to use the same
664 temporary object file, and libtool could not work around it because
665 your compiler does not support \`-c' and \`-o' together. If you
666 repeat this compilation, it may succeed, by chance, but you had better
667 avoid parallel builds (make -j) in this platform, or get a better
668 compiler."
670 $run $rm $removelist
671 exit 1
674 # Just move the object if needed
675 if test x"$output_obj" != x"$obj"; then
676 $show "$mv $output_obj $obj"
677 if $run $mv $output_obj $obj; then :
678 else
679 error=$?
680 $run $rm $removelist
681 exit $error
685 # Create an invalid libtool object if no PIC, so that we do not
686 # accidentally link it into a program.
687 if test "$build_libtool_libs" != yes; then
688 $show "echo timestamp > $libobj"
689 $run eval "echo timestamp > \$libobj" || exit $?
690 else
691 # Move the .lo from within objdir
692 $show "$mv $libobj $lo_libobj"
693 if $run $mv $libobj $lo_libobj; then :
694 else
695 error=$?
696 $run $rm $removelist
697 exit $error
702 # Unlock the critical section if it was locked
703 if test "$need_locks" != no; then
704 $run $rm "$lockfile"
707 exit 0
710 # libtool link mode
711 link | relink)
712 modename="$modename: link"
713 case $host in
714 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
715 # It is impossible to link a dll without this setting, and
716 # we shouldn't force the makefile maintainer to figure out
717 # which system we are compiling for in order to pass an extra
718 # flag for every libtool invokation.
719 # allow_undefined=no
721 # FIXME: Unfortunately, there are problems with the above when trying
722 # to make a dll which has undefined symbols, in which case not
723 # even a static library is built. For now, we need to specify
724 # -no-undefined on the libtool link line when we can be certain
725 # that all symbols are satisfied, otherwise we get a static library.
726 allow_undefined=yes
729 allow_undefined=yes
731 esac
732 libtool_args="$nonopt"
733 compile_command="$nonopt"
734 finalize_command="$nonopt"
736 compile_rpath=
737 finalize_rpath=
738 compile_shlibpath=
739 finalize_shlibpath=
740 convenience=
741 old_convenience=
742 deplibs=
743 old_deplibs=
744 compiler_flags=
745 linker_flags=
746 dllsearchpath=
747 lib_search_path=`pwd`
749 avoid_version=no
750 dlfiles=
751 dlprefiles=
752 dlself=no
753 export_dynamic=no
754 export_symbols=
755 export_symbols_regex=
756 generated=
757 libobjs=
758 ltlibs=
759 module=no
760 no_install=no
761 objs=
762 prefer_static_libs=no
763 preload=no
764 prev=
765 prevarg=
766 release=
767 rpath=
768 xrpath=
769 perm_rpath=
770 temp_rpath=
771 thread_safe=no
772 vinfo=
774 # We need to know -static, to get the right output filenames.
775 for arg
777 case $arg in
778 -all-static | -static)
779 if test "X$arg" = "X-all-static"; then
780 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
781 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
783 if test -n "$link_static_flag"; then
784 dlopen_self=$dlopen_self_static
786 else
787 if test -z "$pic_flag" && test -n "$link_static_flag"; then
788 dlopen_self=$dlopen_self_static
791 build_libtool_libs=no
792 build_old_libs=yes
793 prefer_static_libs=yes
794 break
796 esac
797 done
799 # See if our shared archives depend on static archives.
800 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
802 # Go through the arguments, transforming them on the way.
803 while test $# -gt 0; do
804 arg="$1"
805 shift
806 case $arg in
807 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
808 qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
810 *) qarg=$arg ;;
811 esac
812 libtool_args="$libtool_args $qarg"
814 # If the previous option needs an argument, assign it.
815 if test -n "$prev"; then
816 case $prev in
817 output)
818 compile_command="$compile_command @OUTPUT@"
819 finalize_command="$finalize_command @OUTPUT@"
821 esac
823 case $prev in
824 dlfiles|dlprefiles)
825 if test "$preload" = no; then
826 # Add the symbol object into the linking commands.
827 compile_command="$compile_command @SYMFILE@"
828 finalize_command="$finalize_command @SYMFILE@"
829 preload=yes
831 case $arg in
832 *.la | *.lo) ;; # We handle these cases below.
833 force)
834 if test "$dlself" = no; then
835 dlself=needless
836 export_dynamic=yes
838 prev=
839 continue
841 self)
842 if test "$prev" = dlprefiles; then
843 dlself=yes
844 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
845 dlself=yes
846 else
847 dlself=needless
848 export_dynamic=yes
850 prev=
851 continue
854 if test "$prev" = dlfiles; then
855 dlfiles="$dlfiles $arg"
856 else
857 dlprefiles="$dlprefiles $arg"
859 prev=
860 continue
862 esac
864 expsyms)
865 export_symbols="$arg"
866 if test ! -f "$arg"; then
867 $echo "$modename: symbol file \`$arg' does not exist"
868 exit 1
870 prev=
871 continue
873 expsyms_regex)
874 export_symbols_regex="$arg"
875 prev=
876 continue
878 release)
879 release="-$arg"
880 prev=
881 continue
883 rpath | xrpath)
884 # We need an absolute path.
885 case $arg in
886 [\\/]* | [A-Za-z]:[\\/]*) ;;
888 $echo "$modename: only absolute run-paths are allowed" 1>&2
889 exit 1
891 esac
892 if test "$prev" = rpath; then
893 case "$rpath " in
894 *" $arg "*) ;;
895 *) rpath="$rpath $arg" ;;
896 esac
897 else
898 case "$xrpath " in
899 *" $arg "*) ;;
900 *) xrpath="$xrpath $arg" ;;
901 esac
903 prev=
904 continue
906 xcompiler)
907 compiler_flags="$compiler_flags $qarg"
908 prev=
909 compile_command="$compile_command $qarg"
910 finalize_command="$finalize_command $qarg"
911 continue
913 xlinker)
914 linker_flags="$linker_flags $qarg"
915 compiler_flags="$compiler_flags $wl$qarg"
916 prev=
917 compile_command="$compile_command $wl$qarg"
918 finalize_command="$finalize_command $wl$qarg"
919 continue
922 eval "$prev=\"\$arg\""
923 prev=
924 continue
926 esac
927 fi # test -n $prev
929 prevarg="$arg"
931 case $arg in
932 -all-static)
933 if test -n "$link_static_flag"; then
934 compile_command="$compile_command $link_static_flag"
935 finalize_command="$finalize_command $link_static_flag"
937 continue
940 -allow-undefined)
941 # FIXME: remove this flag sometime in the future.
942 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
943 continue
946 -avoid-version)
947 avoid_version=yes
948 continue
951 -dlopen)
952 prev=dlfiles
953 continue
956 -dlpreopen)
957 prev=dlprefiles
958 continue
961 -export-dynamic)
962 export_dynamic=yes
963 continue
966 -export-symbols | -export-symbols-regex)
967 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
968 $echo "$modename: more than one -exported-symbols argument is not allowed"
969 exit 1
971 if test "X$arg" = "X-export-symbols"; then
972 prev=expsyms
973 else
974 prev=expsyms_regex
976 continue
979 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
980 # so, if we see these flags be careful not to treat them like -L
981 -L[A-Z][A-Z]*:*)
982 case $with_gcc/$host in
983 no/*-*-irix*)
984 compile_command="$compile_command $arg"
985 finalize_command="$finalize_command $arg"
987 esac
988 continue
991 -L*)
992 dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
993 # We need an absolute path.
994 case $dir in
995 [\\/]* | [A-Za-z]:[\\/]*) ;;
997 absdir=`cd "$dir" && pwd`
998 if test -z "$absdir"; then
999 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1000 exit 1
1002 dir="$absdir"
1004 esac
1005 case "$deplibs " in
1006 *" -L$dir "*) ;;
1008 deplibs="$deplibs -L$dir"
1009 lib_search_path="$lib_search_path $dir"
1011 esac
1012 case $host in
1013 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1014 case :$dllsearchpath: in
1015 *":$dir:"*) ;;
1016 *) dllsearchpath="$dllsearchpath:$dir";;
1017 esac
1019 esac
1020 continue
1023 -l*)
1024 if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1025 case $host in
1026 *-*-cygwin* | *-*-pw32* | *-*-beos*)
1027 # These systems don't actually have a C or math library (as such)
1028 continue
1030 *-*-mingw* | *-*-os2*)
1031 # These systems don't actually have a C library (as such)
1032 test "X$arg" = "X-lc" && continue
1034 esac
1036 deplibs="$deplibs $arg"
1037 continue
1040 -module)
1041 module=yes
1042 continue
1045 -no-fast-install)
1046 fast_install=no
1047 continue
1050 -no-install)
1051 case $host in
1052 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1053 # The PATH hackery in wrapper scripts is required on Windows
1054 # in order for the loader to find any dlls it needs.
1055 $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1056 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1057 fast_install=no
1059 *) no_install=yes ;;
1060 esac
1061 continue
1064 -no-undefined)
1065 allow_undefined=no
1066 continue
1069 -o) prev=output ;;
1071 -release)
1072 prev=release
1073 continue
1076 -rpath)
1077 prev=rpath
1078 continue
1082 prev=xrpath
1083 continue
1086 -R*)
1087 dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1088 # We need an absolute path.
1089 case $dir in
1090 [\\/]* | [A-Za-z]:[\\/]*) ;;
1092 $echo "$modename: only absolute run-paths are allowed" 1>&2
1093 exit 1
1095 esac
1096 case "$xrpath " in
1097 *" $dir "*) ;;
1098 *) xrpath="$xrpath $dir" ;;
1099 esac
1100 continue
1103 -static)
1104 # The effects of -static are defined in a previous loop.
1105 # We used to do the same as -all-static on platforms that
1106 # didn't have a PIC flag, but the assumption that the effects
1107 # would be equivalent was wrong. It would break on at least
1108 # Digital Unix and AIX.
1109 continue
1112 -thread-safe)
1113 thread_safe=yes
1114 continue
1117 -version-info)
1118 prev=vinfo
1119 continue
1122 -Wc,*)
1123 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1124 arg=
1125 IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
1126 for flag in $args; do
1127 IFS="$save_ifs"
1128 case $flag in
1129 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1130 flag="\"$flag\""
1132 esac
1133 arg="$arg $wl$flag"
1134 compiler_flags="$compiler_flags $flag"
1135 done
1136 IFS="$save_ifs"
1137 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1140 -Wl,*)
1141 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1142 arg=
1143 IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
1144 for flag in $args; do
1145 IFS="$save_ifs"
1146 case $flag in
1147 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1148 flag="\"$flag\""
1150 esac
1151 arg="$arg $wl$flag"
1152 compiler_flags="$compiler_flags $wl$flag"
1153 linker_flags="$linker_flags $flag"
1154 done
1155 IFS="$save_ifs"
1156 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1159 -Xcompiler)
1160 prev=xcompiler
1161 continue
1164 -Xlinker)
1165 prev=xlinker
1166 continue
1169 # Some other compiler flag.
1170 -* | +*)
1171 # Unknown arguments in both finalize_command and compile_command need
1172 # to be aesthetically quoted because they are evaled later.
1173 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1174 case $arg in
1175 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1176 arg="\"$arg\""
1178 esac
1181 *.lo | *.$objext)
1182 # A library or standard object.
1183 if test "$prev" = dlfiles; then
1184 # This file was specified with -dlopen.
1185 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1186 dlfiles="$dlfiles $arg"
1187 prev=
1188 continue
1189 else
1190 # If libtool objects are unsupported, then we need to preload.
1191 prev=dlprefiles
1195 if test "$prev" = dlprefiles; then
1196 # Preload the old-style object.
1197 dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
1198 prev=
1199 else
1200 case $arg in
1201 *.lo) libobjs="$libobjs $arg" ;;
1202 *) objs="$objs $arg" ;;
1203 esac
1207 *.$libext)
1208 # An archive.
1209 deplibs="$deplibs $arg"
1210 old_deplibs="$old_deplibs $arg"
1211 continue
1214 *.la)
1215 # A libtool-controlled library.
1217 if test "$prev" = dlfiles; then
1218 # This library was specified with -dlopen.
1219 dlfiles="$dlfiles $arg"
1220 prev=
1221 elif test "$prev" = dlprefiles; then
1222 # The library was specified with -dlpreopen.
1223 dlprefiles="$dlprefiles $arg"
1224 prev=
1225 else
1226 deplibs="$deplibs $arg"
1228 continue
1231 # Some other compiler argument.
1233 # Unknown arguments in both finalize_command and compile_command need
1234 # to be aesthetically quoted because they are evaled later.
1235 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1236 case $arg in
1237 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1238 arg="\"$arg\""
1240 esac
1242 esac # arg
1244 # Now actually substitute the argument into the commands.
1245 if test -n "$arg"; then
1246 compile_command="$compile_command $arg"
1247 finalize_command="$finalize_command $arg"
1249 done # argument parsing loop
1251 if test -n "$prev"; then
1252 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1253 $echo "$help" 1>&2
1254 exit 1
1257 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1258 eval arg=\"$export_dynamic_flag_spec\"
1259 compile_command="$compile_command $arg"
1260 finalize_command="$finalize_command $arg"
1263 # calculate the name of the file, without its directory
1264 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1265 libobjs_save="$libobjs"
1267 if test -n "$shlibpath_var"; then
1268 # get the directories listed in $shlibpath_var
1269 eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
1270 else
1271 shlib_search_path=
1273 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
1274 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
1276 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1277 if test "X$output_objdir" = "X$output"; then
1278 output_objdir="$objdir"
1279 else
1280 output_objdir="$output_objdir/$objdir"
1282 # Create the object directory.
1283 if test ! -d $output_objdir; then
1284 $show "$mkdir $output_objdir"
1285 $run $mkdir $output_objdir
1286 status=$?
1287 if test $status -ne 0 && test ! -d $output_objdir; then
1288 exit $status
1292 # Determine the type of output
1293 case $output in
1295 $echo "$modename: you must specify an output file" 1>&2
1296 $echo "$help" 1>&2
1297 exit 1
1299 *.$libext) linkmode=oldlib ;;
1300 *.lo | *.$objext) linkmode=obj ;;
1301 *.la) linkmode=lib ;;
1302 *) linkmode=prog ;; # Anything else should be a program.
1303 esac
1305 specialdeplibs=
1306 libs=
1307 # Find all interdependent deplibs by searching for libraries
1308 # that are linked more than once (e.g. -la -lb -la)
1309 for deplib in $deplibs; do
1310 case "$libs " in
1311 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1312 esac
1313 libs="$libs $deplib"
1314 done
1315 deplibs=
1316 newdependency_libs=
1317 newlib_search_path=
1318 need_relink=no # whether we're linking any uninstalled libtool libraries
1319 notinst_deplibs= # not-installed libtool libraries
1320 notinst_path= # paths that contain not-installed libtool libraries
1321 case $linkmode in
1322 lib)
1323 passes="conv link"
1324 for file in $dlfiles $dlprefiles; do
1325 case $file in
1326 *.la) ;;
1328 $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
1329 exit 1
1331 esac
1332 done
1334 prog)
1335 compile_deplibs=
1336 finalize_deplibs=
1337 alldeplibs=no
1338 newdlfiles=
1339 newdlprefiles=
1340 passes="conv scan dlopen dlpreopen link"
1342 *) passes="conv"
1344 esac
1345 for pass in $passes; do
1346 if test $linkmode = prog; then
1347 # Determine which files to process
1348 case $pass in
1349 dlopen)
1350 libs="$dlfiles"
1351 save_deplibs="$deplibs" # Collect dlpreopened libraries
1352 deplibs=
1354 dlpreopen) libs="$dlprefiles" ;;
1355 link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
1356 esac
1358 for deplib in $libs; do
1359 lib=
1360 found=no
1361 case $deplib in
1362 -l*)
1363 if test $linkmode = oldlib && test $linkmode = obj; then
1364 $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2
1365 continue
1367 if test $pass = conv; then
1368 deplibs="$deplib $deplibs"
1369 continue
1371 name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
1372 for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
1373 # Search the libtool library
1374 lib="$searchdir/lib${name}.la"
1375 if test -f "$lib"; then
1376 found=yes
1377 break
1379 done
1380 if test "$found" != yes; then
1381 # deplib doesn't seem to be a libtool library
1382 if test "$linkmode,$pass" = "prog,link"; then
1383 compile_deplibs="$deplib $compile_deplibs"
1384 finalize_deplibs="$deplib $finalize_deplibs"
1385 else
1386 deplibs="$deplib $deplibs"
1387 test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
1389 continue
1391 ;; # -l
1392 -L*)
1393 case $linkmode in
1394 lib)
1395 deplibs="$deplib $deplibs"
1396 test $pass = conv && continue
1397 newdependency_libs="$deplib $newdependency_libs"
1398 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1400 prog)
1401 if test $pass = conv; then
1402 deplibs="$deplib $deplibs"
1403 continue
1405 if test $pass = scan; then
1406 deplibs="$deplib $deplibs"
1407 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1408 else
1409 compile_deplibs="$deplib $compile_deplibs"
1410 finalize_deplibs="$deplib $finalize_deplibs"
1414 $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2
1416 esac # linkmode
1417 continue
1418 ;; # -L
1419 -R*)
1420 if test $pass = link; then
1421 dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
1422 # Make sure the xrpath contains only unique directories.
1423 case "$xrpath " in
1424 *" $dir "*) ;;
1425 *) xrpath="$xrpath $dir" ;;
1426 esac
1428 deplibs="$deplib $deplibs"
1429 continue
1431 *.la) lib="$deplib" ;;
1432 *.$libext)
1433 if test $pass = conv; then
1434 deplibs="$deplib $deplibs"
1435 continue
1437 case $linkmode in
1438 lib)
1439 if test "$deplibs_check_method" != pass_all; then
1440 echo
1441 echo "*** Warning: This library needs some functionality provided by $deplib."
1442 echo "*** I have the capability to make that library automatically link in when"
1443 echo "*** you link to this library. But I can only do this if you have a"
1444 echo "*** shared version of the library, which you do not appear to have."
1445 else
1446 echo
1447 echo "*** Warning: Linking the shared library $output against the"
1448 echo "*** static library $deplib is not portable!"
1449 deplibs="$deplib $deplibs"
1451 continue
1453 prog)
1454 if test $pass != link; then
1455 deplibs="$deplib $deplibs"
1456 else
1457 compile_deplibs="$deplib $compile_deplibs"
1458 finalize_deplibs="$deplib $finalize_deplibs"
1460 continue
1462 esac # linkmode
1463 ;; # *.$libext
1464 *.lo | *.$objext)
1465 if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
1466 # If there is no dlopen support or we're linking statically,
1467 # we need to preload.
1468 newdlprefiles="$newdlprefiles $deplib"
1469 compile_deplibs="$deplib $compile_deplibs"
1470 finalize_deplibs="$deplib $finalize_deplibs"
1471 else
1472 newdlfiles="$newdlfiles $deplib"
1474 continue
1476 %DEPLIBS%)
1477 alldeplibs=yes
1478 continue
1480 esac # case $deplib
1481 if test $found = yes || test -f "$lib"; then :
1482 else
1483 $echo "$modename: cannot find the library \`$lib'" 1>&2
1484 exit 1
1487 # Check to see that this really is a libtool archive.
1488 if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
1489 else
1490 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
1491 exit 1
1494 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
1495 test "X$ladir" = "X$lib" && ladir="."
1497 dlname=
1498 dlopen=
1499 dlpreopen=
1500 libdir=
1501 library_names=
1502 old_library=
1503 # If the library was installed with an old release of libtool,
1504 # it will not redefine variable installed.
1505 installed=yes
1507 # Read the .la file
1508 case $lib in
1509 */* | *\\*) . $lib ;;
1510 *) . ./$lib ;;
1511 esac
1513 if test "$linkmode,$pass" = "lib,link" ||
1514 test "$linkmode,$pass" = "prog,scan" ||
1515 { test $linkmode = oldlib && test $linkmode = obj; }; then
1516 # Add dl[pre]opened files of deplib
1517 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
1518 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
1521 if test $pass = conv; then
1522 # Only check for convenience libraries
1523 deplibs="$lib $deplibs"
1524 if test -z "$libdir"; then
1525 if test -z "$old_library"; then
1526 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
1527 exit 1
1529 # It is a libtool convenience library, so add in its objects.
1530 convenience="$convenience $ladir/$objdir/$old_library"
1531 old_convenience="$old_convenience $ladir/$objdir/$old_library"
1532 tmp_libs=
1533 for deplib in $dependency_libs; do
1534 deplibs="$deplib $deplibs"
1535 case "$tmp_libs " in
1536 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1537 esac
1538 tmp_libs="$tmp_libs $deplib"
1539 done
1540 elif test $linkmode != prog && test $linkmode != lib; then
1541 $echo "$modename: \`$lib' is not a convenience library" 1>&2
1542 exit 1
1544 continue
1545 fi # $pass = conv
1547 # Get the name of the library we link against.
1548 linklib=
1549 for l in $old_library $library_names; do
1550 linklib="$l"
1551 done
1552 if test -z "$linklib"; then
1553 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
1554 exit 1
1557 # This library was specified with -dlopen.
1558 if test $pass = dlopen; then
1559 if test -z "$libdir"; then
1560 $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
1561 exit 1
1563 if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
1564 # If there is no dlname, no dlopen support or we're linking
1565 # statically, we need to preload.
1566 dlprefiles="$dlprefiles $lib"
1567 else
1568 newdlfiles="$newdlfiles $lib"
1570 continue
1571 fi # $pass = dlopen
1573 # We need an absolute path.
1574 case $ladir in
1575 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
1577 abs_ladir=`cd "$ladir" && pwd`
1578 if test -z "$abs_ladir"; then
1579 $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
1580 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1581 abs_ladir="$ladir"
1584 esac
1585 laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
1587 # Find the relevant object directory and library name.
1588 if test "X$installed" = Xyes; then
1589 if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
1590 $echo "$modename: warning: library \`$lib' was moved." 1>&2
1591 dir="$ladir"
1592 absdir="$abs_ladir"
1593 libdir="$abs_ladir"
1594 else
1595 dir="$libdir"
1596 absdir="$libdir"
1598 else
1599 dir="$ladir/$objdir"
1600 absdir="$abs_ladir/$objdir"
1601 # Remove this search path later
1602 notinst_path="$notinst_path $abs_ladir"
1603 fi # $installed = yes
1604 name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
1606 # This library was specified with -dlpreopen.
1607 if test $pass = dlpreopen; then
1608 if test -z "$libdir"; then
1609 $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
1610 exit 1
1612 # Prefer using a static library (so that no silly _DYNAMIC symbols
1613 # are required to link).
1614 if test -n "$old_library"; then
1615 newdlprefiles="$newdlprefiles $dir/$old_library"
1616 # Otherwise, use the dlname, so that lt_dlopen finds it.
1617 elif test -n "$dlname"; then
1618 newdlprefiles="$newdlprefiles $dir/$dlname"
1619 else
1620 newdlprefiles="$newdlprefiles $dir/$linklib"
1622 fi # $pass = dlpreopen
1624 if test -z "$libdir"; then
1625 # Link the convenience library
1626 if test $linkmode = lib; then
1627 deplibs="$dir/$old_library $deplibs"
1628 elif test "$linkmode,$pass" = "prog,link"; then
1629 compile_deplibs="$dir/$old_library $compile_deplibs"
1630 finalize_deplibs="$dir/$old_library $finalize_deplibs"
1631 else
1632 deplibs="$lib $deplibs"
1634 continue
1637 if test $linkmode = prog && test $pass != link; then
1638 newlib_search_path="$newlib_search_path $ladir"
1639 deplibs="$lib $deplibs"
1641 linkalldeplibs=no
1642 if test "$link_all_deplibs" != no || test -z "$library_names" ||
1643 test "$build_libtool_libs" = no; then
1644 linkalldeplibs=yes
1647 tmp_libs=
1648 for deplib in $dependency_libs; do
1649 case $deplib in
1650 -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
1651 esac
1652 # Need to link against all dependency_libs?
1653 if test $linkalldeplibs = yes; then
1654 deplibs="$deplib $deplibs"
1655 else
1656 # Need to hardcode shared library paths
1657 # or/and link against static libraries
1658 newdependency_libs="$deplib $newdependency_libs"
1660 case "$tmp_libs " in
1661 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1662 esac
1663 tmp_libs="$tmp_libs $deplib"
1664 done # for deplib
1665 continue
1666 fi # $linkmode = prog...
1668 link_static=no # Whether the deplib will be linked statically
1669 if test -n "$library_names" &&
1670 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
1671 # Link against this shared library
1673 if test "$linkmode,$pass" = "prog,link" ||
1674 { test $linkmode = lib && test $hardcode_into_libs = yes; }; then
1675 # Hardcode the library path.
1676 # Skip directories that are in the system default run-time
1677 # search path.
1678 case " $sys_lib_dlsearch_path " in
1679 *" $absdir "*) ;;
1681 case "$compile_rpath " in
1682 *" $absdir "*) ;;
1683 *) compile_rpath="$compile_rpath $absdir"
1684 esac
1686 esac
1687 case " $sys_lib_dlsearch_path " in
1688 *" $libdir "*) ;;
1690 case "$finalize_rpath " in
1691 *" $libdir "*) ;;
1692 *) finalize_rpath="$finalize_rpath $libdir"
1693 esac
1695 esac
1696 if test $linkmode = prog; then
1697 # We need to hardcode the library path
1698 if test -n "$shlibpath_var"; then
1699 # Make sure the rpath contains only unique directories.
1700 case "$temp_rpath " in
1701 *" $dir "*) ;;
1702 *" $absdir "*) ;;
1703 *) temp_rpath="$temp_rpath $dir" ;;
1704 esac
1707 fi # $linkmode,$pass = prog,link...
1709 if test "$alldeplibs" = yes &&
1710 { test "$deplibs_check_method" = pass_all ||
1711 { test "$build_libtool_libs" = yes &&
1712 test -n "$library_names"; }; }; then
1713 # We only need to search for static libraries
1714 continue
1717 if test "$installed" = no; then
1718 notinst_deplibs="$notinst_deplibs $lib"
1719 need_relink=yes
1722 if test -n "$old_archive_from_expsyms_cmds"; then
1723 # figure out the soname
1724 set dummy $library_names
1725 realname="$2"
1726 shift; shift
1727 libname=`eval \\$echo \"$libname_spec\"`
1728 # use dlname if we got it. it's perfectly good, no?
1729 if test -n "$dlname"; then
1730 soname="$dlname"
1731 elif test -n "$soname_spec"; then
1732 # bleh windows
1733 case $host in
1734 *cygwin*)
1735 major=`expr $current - $age`
1736 versuffix="-$major"
1738 esac
1739 eval soname=\"$soname_spec\"
1740 else
1741 soname="$realname"
1744 # Make a new name for the extract_expsyms_cmds to use
1745 soroot="$soname"
1746 soname=`echo $soroot | sed -e 's/^.*\///'`
1747 newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
1749 # If the library has no export list, then create one now
1750 if test -f "$output_objdir/$soname-def"; then :
1751 else
1752 $show "extracting exported symbol list from \`$soname'"
1753 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
1754 eval cmds=\"$extract_expsyms_cmds\"
1755 for cmd in $cmds; do
1756 IFS="$save_ifs"
1757 $show "$cmd"
1758 $run eval "$cmd" || exit $?
1759 done
1760 IFS="$save_ifs"
1763 # Create $newlib
1764 if test -f "$output_objdir/$newlib"; then :; else
1765 $show "generating import library for \`$soname'"
1766 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
1767 eval cmds=\"$old_archive_from_expsyms_cmds\"
1768 for cmd in $cmds; do
1769 IFS="$save_ifs"
1770 $show "$cmd"
1771 $run eval "$cmd" || exit $?
1772 done
1773 IFS="$save_ifs"
1775 # make sure the library variables are pointing to the new library
1776 dir=$output_objdir
1777 linklib=$newlib
1778 fi # test -n $old_archive_from_expsyms_cmds
1780 if test $linkmode = prog || test "$mode" != relink; then
1781 add_shlibpath=
1782 add_dir=
1783 add=
1784 lib_linked=yes
1785 case $hardcode_action in
1786 immediate | unsupported)
1787 if test "$hardcode_direct" = no; then
1788 add="$dir/$linklib"
1789 elif test "$hardcode_minus_L" = no; then
1790 case $host in
1791 *-*-sunos*) add_shlibpath="$dir" ;;
1792 esac
1793 add_dir="-L$dir"
1794 add="-l$name"
1795 elif test "$hardcode_shlibpath_var" = no; then
1796 add_shlibpath="$dir"
1797 add="-l$name"
1798 else
1799 lib_linked=no
1802 relink)
1803 if test "$hardcode_direct" = yes; then
1804 add="$dir/$linklib"
1805 elif test "$hardcode_minus_L" = yes; then
1806 add_dir="-L$dir"
1807 add="-l$name"
1808 elif test "$hardcode_shlibpath_var" = yes; then
1809 add_shlibpath="$dir"
1810 add="-l$name"
1811 else
1812 lib_linked=no
1815 *) lib_linked=no ;;
1816 esac
1818 if test "$lib_linked" != yes; then
1819 $echo "$modename: configuration error: unsupported hardcode properties"
1820 exit 1
1823 if test -n "$add_shlibpath"; then
1824 case :$compile_shlibpath: in
1825 *":$add_shlibpath:"*) ;;
1826 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
1827 esac
1829 if test $linkmode = prog; then
1830 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
1831 test -n "$add" && compile_deplibs="$add $compile_deplibs"
1832 else
1833 test -n "$add_dir" && deplibs="$add_dir $deplibs"
1834 test -n "$add" && deplibs="$add $deplibs"
1835 if test "$hardcode_direct" != yes && \
1836 test "$hardcode_minus_L" != yes && \
1837 test "$hardcode_shlibpath_var" = yes; then
1838 case :$finalize_shlibpath: in
1839 *":$libdir:"*) ;;
1840 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
1841 esac
1846 if test $linkmode = prog || test "$mode" = relink; then
1847 add_shlibpath=
1848 add_dir=
1849 add=
1850 # Finalize command for both is simple: just hardcode it.
1851 if test "$hardcode_direct" = yes; then
1852 add="$libdir/$linklib"
1853 elif test "$hardcode_minus_L" = yes; then
1854 add_dir="-L$libdir"
1855 add="-l$name"
1856 elif test "$hardcode_shlibpath_var" = yes; then
1857 case :$finalize_shlibpath: in
1858 *":$libdir:"*) ;;
1859 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
1860 esac
1861 add="-l$name"
1862 else
1863 # We cannot seem to hardcode it, guess we'll fake it.
1864 add_dir="-L$libdir"
1865 add="-l$name"
1868 if test $linkmode = prog; then
1869 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
1870 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
1871 else
1872 test -n "$add_dir" && deplibs="$add_dir $deplibs"
1873 test -n "$add" && deplibs="$add $deplibs"
1876 elif test $linkmode = prog; then
1877 if test "$alldeplibs" = yes &&
1878 { test "$deplibs_check_method" = pass_all ||
1879 { test "$build_libtool_libs" = yes &&
1880 test -n "$library_names"; }; }; then
1881 # We only need to search for static libraries
1882 continue
1885 # Try to link the static library
1886 # Here we assume that one of hardcode_direct or hardcode_minus_L
1887 # is not unsupported. This is valid on all known static and
1888 # shared platforms.
1889 if test "$hardcode_direct" != unsupported; then
1890 test -n "$old_library" && linklib="$old_library"
1891 compile_deplibs="$dir/$linklib $compile_deplibs"
1892 finalize_deplibs="$dir/$linklib $finalize_deplibs"
1893 else
1894 compile_deplibs="-l$name -L$dir $compile_deplibs"
1895 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
1897 elif test "$build_libtool_libs" = yes; then
1898 # Not a shared library
1899 if test "$deplibs_check_method" != pass_all; then
1900 # We're trying link a shared library against a static one
1901 # but the system doesn't support it.
1903 # Just print a warning and add the library to dependency_libs so
1904 # that the program can be linked against the static library.
1905 echo
1906 echo "*** Warning: This library needs some functionality provided by $lib."
1907 echo "*** I have the capability to make that library automatically link in when"
1908 echo "*** you link to this library. But I can only do this if you have a"
1909 echo "*** shared version of the library, which you do not appear to have."
1910 if test "$module" = yes; then
1911 echo "*** Therefore, libtool will create a static module, that should work "
1912 echo "*** as long as the dlopening application is linked with the -dlopen flag."
1913 if test -z "$global_symbol_pipe"; then
1914 echo
1915 echo "*** However, this would only work if libtool was able to extract symbol"
1916 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
1917 echo "*** not find such a program. So, this module is probably useless."
1918 echo "*** \`nm' from GNU binutils and a full rebuild may help."
1920 if test "$build_old_libs" = no; then
1921 build_libtool_libs=module
1922 build_old_libs=yes
1923 else
1924 build_libtool_libs=no
1927 else
1928 convenience="$convenience $dir/$old_library"
1929 old_convenience="$old_convenience $dir/$old_library"
1930 deplibs="$dir/$old_library $deplibs"
1931 link_static=yes
1933 fi # link shared/static library?
1935 if test $linkmode = lib; then
1936 if test -n "$dependency_libs" &&
1937 { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
1938 test $link_static = yes; }; then
1939 # Extract -R from dependency_libs
1940 temp_deplibs=
1941 for libdir in $dependency_libs; do
1942 case $libdir in
1943 -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
1944 case " $xrpath " in
1945 *" $temp_xrpath "*) ;;
1946 *) xrpath="$xrpath $temp_xrpath";;
1947 esac;;
1948 *) temp_deplibs="$temp_deplibs $libdir";;
1949 esac
1950 done
1951 dependency_libs="$temp_deplibs"
1954 newlib_search_path="$newlib_search_path $absdir"
1955 # Link against this library
1956 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
1957 # ... and its dependency_libs
1958 tmp_libs=
1959 for deplib in $dependency_libs; do
1960 newdependency_libs="$deplib $newdependency_libs"
1961 case "$tmp_libs " in
1962 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1963 esac
1964 tmp_libs="$tmp_libs $deplib"
1965 done
1967 if test $link_all_deplibs != no; then
1968 # Add the search paths of all dependency libraries
1969 for deplib in $dependency_libs; do
1970 case $deplib in
1971 -L*) path="$deplib" ;;
1972 *.la)
1973 dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
1974 test "X$dir" = "X$deplib" && dir="."
1975 # We need an absolute path.
1976 case $dir in
1977 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
1979 absdir=`cd "$dir" && pwd`
1980 if test -z "$absdir"; then
1981 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
1982 absdir="$dir"
1985 esac
1986 if grep "^installed=no" $deplib > /dev/null; then
1987 path="-L$absdir/$objdir"
1988 else
1989 eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
1990 if test -z "$libdir"; then
1991 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
1992 exit 1
1994 if test "$absdir" != "$libdir"; then
1995 $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
1997 path="-L$absdir"
2000 *) continue ;;
2001 esac
2002 case " $deplibs " in
2003 *" $path "*) ;;
2004 *) deplibs="$deplibs $path" ;;
2005 esac
2006 done
2007 fi # link_all_deplibs != no
2008 fi # linkmode = lib
2009 done # for deplib in $libs
2010 if test $pass = dlpreopen; then
2011 # Link the dlpreopened libraries before other libraries
2012 for deplib in $save_deplibs; do
2013 deplibs="$deplib $deplibs"
2014 done
2016 if test $pass != dlopen; then
2017 test $pass != scan && dependency_libs="$newdependency_libs"
2018 if test $pass != conv; then
2019 # Make sure lib_search_path contains only unique directories.
2020 lib_search_path=
2021 for dir in $newlib_search_path; do
2022 case "$lib_search_path " in
2023 *" $dir "*) ;;
2024 *) lib_search_path="$lib_search_path $dir" ;;
2025 esac
2026 done
2027 newlib_search_path=
2030 if test "$linkmode,$pass" != "prog,link"; then
2031 vars="deplibs"
2032 else
2033 vars="compile_deplibs finalize_deplibs"
2035 for var in $vars dependency_libs; do
2036 # Add libraries to $var in reverse order
2037 eval tmp_libs=\"\$$var\"
2038 new_libs=
2039 for deplib in $tmp_libs; do
2040 case $deplib in
2041 -L*) new_libs="$deplib $new_libs" ;;
2043 case " $specialdeplibs " in
2044 *" $deplib "*) new_libs="$deplib $new_libs" ;;
2046 case " $new_libs " in
2047 *" $deplib "*) ;;
2048 *) new_libs="$deplib $new_libs" ;;
2049 esac
2051 esac
2053 esac
2054 done
2055 tmp_libs=
2056 for deplib in $new_libs; do
2057 case $deplib in
2058 -L*)
2059 case " $tmp_libs " in
2060 *" $deplib "*) ;;
2061 *) tmp_libs="$tmp_libs $deplib" ;;
2062 esac
2064 *) tmp_libs="$tmp_libs $deplib" ;;
2065 esac
2066 done
2067 eval $var=\"$tmp_libs\"
2068 done # for var
2070 if test "$pass" = "conv" &&
2071 { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then
2072 libs="$deplibs" # reset libs
2073 deplibs=
2075 done # for pass
2076 if test $linkmode = prog; then
2077 dlfiles="$newdlfiles"
2078 dlprefiles="$newdlprefiles"
2081 case $linkmode in
2082 oldlib)
2083 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2084 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
2087 if test -n "$rpath"; then
2088 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
2091 if test -n "$xrpath"; then
2092 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
2095 if test -n "$vinfo"; then
2096 $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
2099 if test -n "$release"; then
2100 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
2103 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
2104 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
2107 # Now set the variables for building old libraries.
2108 build_libtool_libs=no
2109 oldlibs="$output"
2110 objs="$objs$old_deplibs"
2113 lib)
2114 # Make sure we only generate libraries of the form `libNAME.la'.
2115 case $outputname in
2116 lib*)
2117 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2118 eval libname=\"$libname_spec\"
2121 if test "$module" = no; then
2122 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
2123 $echo "$help" 1>&2
2124 exit 1
2126 if test "$need_lib_prefix" != no; then
2127 # Add the "lib" prefix for modules if required
2128 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
2129 eval libname=\"$libname_spec\"
2130 else
2131 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
2134 esac
2136 if test -n "$objs"; then
2137 if test "$deplibs_check_method" != pass_all; then
2138 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
2139 exit 1
2140 else
2141 echo
2142 echo "*** Warning: Linking the shared library $output against the non-libtool"
2143 echo "*** objects $objs is not portable!"
2144 libobjs="$libobjs $objs"
2148 if test "$dlself" != no; then
2149 $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
2152 set dummy $rpath
2153 if test $# -gt 2; then
2154 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
2156 install_libdir="$2"
2158 oldlibs=
2159 if test -z "$rpath"; then
2160 if test "$build_libtool_libs" = yes; then
2161 # Building a libtool convenience library.
2162 libext=al
2163 oldlibs="$output_objdir/$libname.$libext $oldlibs"
2164 build_libtool_libs=convenience
2165 build_old_libs=yes
2168 if test -n "$vinfo"; then
2169 $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
2172 if test -n "$release"; then
2173 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
2175 else
2177 # Parse the version information argument.
2178 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
2179 set dummy $vinfo 0 0 0
2180 IFS="$save_ifs"
2182 if test -n "$8"; then
2183 $echo "$modename: too many parameters to \`-version-info'" 1>&2
2184 $echo "$help" 1>&2
2185 exit 1
2188 current="$2"
2189 revision="$3"
2190 age="$4"
2192 # Check that each of the things are valid numbers.
2193 case $current in
2194 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
2196 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
2197 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2198 exit 1
2200 esac
2202 case $revision in
2203 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
2205 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
2206 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2207 exit 1
2209 esac
2211 case $age in
2212 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;;
2214 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
2215 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2216 exit 1
2218 esac
2220 if test $age -gt $current; then
2221 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
2222 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2223 exit 1
2226 # Calculate the version variables.
2227 major=
2228 versuffix=
2229 verstring=
2230 case $version_type in
2231 none) ;;
2233 darwin)
2234 # Like Linux, but with the current version available in
2235 # verstring for coding it into the library header
2236 major=.`expr $current - $age`
2237 versuffix="$major.$age.$revision"
2238 # Darwin ld doesn't like 0 for these options...
2239 minor_current=`expr $current + 1`
2240 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
2243 freebsd-aout)
2244 major=".$current"
2245 versuffix=".$current.$revision";
2248 freebsd-elf)
2249 major=".$current"
2250 versuffix=".$current";
2253 irix)
2254 major=`expr $current - $age + 1`
2255 verstring="sgi$major.$revision"
2257 # Add in all the interfaces that we are compatible with.
2258 loop=$revision
2259 while test $loop != 0; do
2260 iface=`expr $revision - $loop`
2261 loop=`expr $loop - 1`
2262 verstring="sgi$major.$iface:$verstring"
2263 done
2265 # Before this point, $major must not contain `.'.
2266 major=.$major
2267 versuffix="$major.$revision"
2270 linux)
2271 major=.`expr $current - $age`
2272 versuffix="$major.$age.$revision"
2275 osf)
2276 major=`expr $current - $age`
2277 versuffix=".$current.$age.$revision"
2278 verstring="$current.$age.$revision"
2280 # Add in all the interfaces that we are compatible with.
2281 loop=$age
2282 while test $loop != 0; do
2283 iface=`expr $current - $loop`
2284 loop=`expr $loop - 1`
2285 verstring="$verstring:${iface}.0"
2286 done
2288 # Make executables depend on our current version.
2289 verstring="$verstring:${current}.0"
2292 sunos)
2293 major=".$current"
2294 versuffix=".$current.$revision"
2297 windows)
2298 # Use '-' rather than '.', since we only want one
2299 # extension on DOS 8.3 filesystems.
2300 major=`expr $current - $age`
2301 versuffix="-$major"
2305 $echo "$modename: unknown library version type \`$version_type'" 1>&2
2306 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
2307 exit 1
2309 esac
2311 # Clear the version info if we defaulted, and they specified a release.
2312 if test -z "$vinfo" && test -n "$release"; then
2313 major=
2314 verstring="0.0"
2315 if test "$need_version" = no; then
2316 versuffix=
2317 else
2318 versuffix=".0.0"
2322 # Remove version info from name if versioning should be avoided
2323 if test "$avoid_version" = yes && test "$need_version" = no; then
2324 major=
2325 versuffix=
2326 verstring=""
2329 # Check to see if the archive will have undefined symbols.
2330 if test "$allow_undefined" = yes; then
2331 if test "$allow_undefined_flag" = unsupported; then
2332 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
2333 build_libtool_libs=no
2334 build_old_libs=yes
2336 else
2337 # Don't allow undefined symbols.
2338 allow_undefined_flag="$no_undefined_flag"
2342 if test "$mode" != relink; then
2343 # Remove our outputs.
2344 $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
2345 $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
2348 # Now set the variables for building old libraries.
2349 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
2350 oldlibs="$oldlibs $output_objdir/$libname.$libext"
2352 # Transform .lo files to .o files.
2353 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
2356 # Eliminate all temporary directories.
2357 for path in $notinst_path; do
2358 lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
2359 deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
2360 dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
2361 done
2363 if test -n "$xrpath"; then
2364 # If the user specified any rpath flags, then add them.
2365 temp_xrpath=
2366 for libdir in $xrpath; do
2367 temp_xrpath="$temp_xrpath -R$libdir"
2368 case "$finalize_rpath " in
2369 *" $libdir "*) ;;
2370 *) finalize_rpath="$finalize_rpath $libdir" ;;
2371 esac
2372 done
2373 if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
2374 dependency_libs="$temp_xrpath $dependency_libs"
2378 # Make sure dlfiles contains only unique files that won't be dlpreopened
2379 old_dlfiles="$dlfiles"
2380 dlfiles=
2381 for lib in $old_dlfiles; do
2382 case " $dlprefiles $dlfiles " in
2383 *" $lib "*) ;;
2384 *) dlfiles="$dlfiles $lib" ;;
2385 esac
2386 done
2388 # Make sure dlprefiles contains only unique files
2389 old_dlprefiles="$dlprefiles"
2390 dlprefiles=
2391 for lib in $old_dlprefiles; do
2392 case "$dlprefiles " in
2393 *" $lib "*) ;;
2394 *) dlprefiles="$dlprefiles $lib" ;;
2395 esac
2396 done
2398 if test "$build_libtool_libs" = yes; then
2399 if test -n "$rpath"; then
2400 case $host in
2401 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
2402 # these systems don't actually have a c library (as such)!
2404 *-*-rhapsody* | *-*-darwin1.[012])
2405 # Rhapsody C library is in the System framework
2406 deplibs="$deplibs -framework System"
2408 *-*-netbsd*)
2409 # Don't link with libc until the a.out ld.so is fixed.
2412 # Add libc to deplibs on all other systems if necessary.
2413 if test $build_libtool_need_lc = "yes"; then
2414 deplibs="$deplibs -lc"
2417 esac
2420 # Transform deplibs into only deplibs that can be linked in shared.
2421 name_save=$name
2422 libname_save=$libname
2423 release_save=$release
2424 versuffix_save=$versuffix
2425 major_save=$major
2426 # I'm not sure if I'm treating the release correctly. I think
2427 # release should show up in the -l (ie -lgmp5) so we don't want to
2428 # add it in twice. Is that correct?
2429 release=""
2430 versuffix=""
2431 major=""
2432 newdeplibs=
2433 droppeddeps=no
2434 case $deplibs_check_method in
2435 pass_all)
2436 # Don't check for shared/static. Everything works.
2437 # This might be a little naive. We might want to check
2438 # whether the library exists or not. But this is on
2439 # osf3 & osf4 and I'm not really sure... Just
2440 # implementing what was already the behaviour.
2441 newdeplibs=$deplibs
2443 test_compile)
2444 # This code stresses the "libraries are programs" paradigm to its
2445 # limits. Maybe even breaks it. We compile a program, linking it
2446 # against the deplibs as a proxy for the library. Then we can check
2447 # whether they linked in statically or dynamically with ldd.
2448 $rm conftest.c
2449 cat > conftest.c <<EOF
2450 int main() { return 0; }
2452 $rm conftest
2453 $CC -o conftest conftest.c $deplibs
2454 if test $? -eq 0 ; then
2455 ldd_output=`ldd conftest`
2456 for i in $deplibs; do
2457 name="`expr $i : '-l\(.*\)'`"
2458 # If $name is empty we are operating on a -L argument.
2459 if test -n "$name" && test "$name" != "0"; then
2460 libname=`eval \\$echo \"$libname_spec\"`
2461 deplib_matches=`eval \\$echo \"$library_names_spec\"`
2462 set dummy $deplib_matches
2463 deplib_match=$2
2464 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
2465 newdeplibs="$newdeplibs $i"
2466 else
2467 droppeddeps=yes
2468 echo
2469 echo "*** Warning: This library needs some functionality provided by $i."
2470 echo "*** I have the capability to make that library automatically link in when"
2471 echo "*** you link to this library. But I can only do this if you have a"
2472 echo "*** shared version of the library, which you do not appear to have."
2474 else
2475 newdeplibs="$newdeplibs $i"
2477 done
2478 else
2479 # Error occured in the first compile. Let's try to salvage the situation:
2480 # Compile a seperate program for each library.
2481 for i in $deplibs; do
2482 name="`expr $i : '-l\(.*\)'`"
2483 # If $name is empty we are operating on a -L argument.
2484 if test -n "$name" && test "$name" != "0"; then
2485 $rm conftest
2486 $CC -o conftest conftest.c $i
2487 # Did it work?
2488 if test $? -eq 0 ; then
2489 ldd_output=`ldd conftest`
2490 libname=`eval \\$echo \"$libname_spec\"`
2491 deplib_matches=`eval \\$echo \"$library_names_spec\"`
2492 set dummy $deplib_matches
2493 deplib_match=$2
2494 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
2495 newdeplibs="$newdeplibs $i"
2496 else
2497 droppeddeps=yes
2498 echo
2499 echo "*** Warning: This library needs some functionality provided by $i."
2500 echo "*** I have the capability to make that library automatically link in when"
2501 echo "*** you link to this library. But I can only do this if you have a"
2502 echo "*** shared version of the library, which you do not appear to have."
2504 else
2505 droppeddeps=yes
2506 echo
2507 echo "*** Warning! Library $i is needed by this library but I was not able to"
2508 echo "*** make it link in! You will probably need to install it or some"
2509 echo "*** library that it depends on before this library will be fully"
2510 echo "*** functional. Installing it before continuing would be even better."
2512 else
2513 newdeplibs="$newdeplibs $i"
2515 done
2518 file_magic*)
2519 set dummy $deplibs_check_method
2520 file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2521 for a_deplib in $deplibs; do
2522 name="`expr $a_deplib : '-l\(.*\)'`"
2523 # If $name is empty we are operating on a -L argument.
2524 if test -n "$name" && test "$name" != "0"; then
2525 libname=`eval \\$echo \"$libname_spec\"`
2526 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
2527 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
2528 for potent_lib in $potential_libs; do
2529 # Follow soft links.
2530 if ls -lLd "$potent_lib" 2>/dev/null \
2531 | grep " -> " >/dev/null; then
2532 continue
2534 # The statement above tries to avoid entering an
2535 # endless loop below, in case of cyclic links.
2536 # We might still enter an endless loop, since a link
2537 # loop can be closed while we follow links,
2538 # but so what?
2539 potlib="$potent_lib"
2540 while test -h "$potlib" 2>/dev/null; do
2541 potliblink=`ls -ld $potlib | sed 's/.* -> //'`
2542 case $potliblink in
2543 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
2544 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
2545 esac
2546 done
2547 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
2548 | sed 10q \
2549 | egrep "$file_magic_regex" > /dev/null; then
2550 newdeplibs="$newdeplibs $a_deplib"
2551 a_deplib=""
2552 break 2
2554 done
2555 done
2556 if test -n "$a_deplib" ; then
2557 droppeddeps=yes
2558 echo
2559 echo "*** Warning: This library needs some functionality provided by $a_deplib."
2560 echo "*** I have the capability to make that library automatically link in when"
2561 echo "*** you link to this library. But I can only do this if you have a"
2562 echo "*** shared version of the library, which you do not appear to have."
2564 else
2565 # Add a -L argument.
2566 newdeplibs="$newdeplibs $a_deplib"
2568 done # Gone through all deplibs.
2570 match_pattern*)
2571 set dummy $deplibs_check_method
2572 match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2573 for a_deplib in $deplibs; do
2574 name="`expr $a_deplib : '-l\(.*\)'`"
2575 # If $name is empty we are operating on a -L argument.
2576 if test -n "$name" && test "$name" != "0"; then
2577 libname=`eval \\$echo \"$libname_spec\"`
2578 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
2579 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
2580 for potent_lib in $potential_libs; do
2581 if eval echo \"$potent_lib\" 2>/dev/null \
2582 | sed 10q \
2583 | egrep "$match_pattern_regex" > /dev/null; then
2584 newdeplibs="$newdeplibs $a_deplib"
2585 a_deplib=""
2586 break 2
2588 done
2589 done
2590 if test -n "$a_deplib" ; then
2591 droppeddeps=yes
2592 echo
2593 echo "*** Warning: This library needs some functionality provided by $a_deplib."
2594 echo "*** I have the capability to make that library automatically link in when"
2595 echo "*** you link to this library. But I can only do this if you have a"
2596 echo "*** shared version of the library, which you do not appear to have."
2598 else
2599 # Add a -L argument.
2600 newdeplibs="$newdeplibs $a_deplib"
2602 done # Gone through all deplibs.
2604 none | unknown | *)
2605 newdeplibs=""
2606 if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
2607 -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
2608 grep . >/dev/null; then
2609 echo
2610 if test "X$deplibs_check_method" = "Xnone"; then
2611 echo "*** Warning: inter-library dependencies are not supported in this platform."
2612 else
2613 echo "*** Warning: inter-library dependencies are not known to be supported."
2615 echo "*** All declared inter-library dependencies are being dropped."
2616 droppeddeps=yes
2619 esac
2620 versuffix=$versuffix_save
2621 major=$major_save
2622 release=$release_save
2623 libname=$libname_save
2624 name=$name_save
2626 case $host in
2627 *-*-rhapsody* | *-*-darwin1.[012])
2628 # On Rhapsody replace the C library is the System framework
2629 newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
2631 esac
2633 if test "$droppeddeps" = yes; then
2634 if test "$module" = yes; then
2635 echo
2636 echo "*** Warning: libtool could not satisfy all declared inter-library"
2637 echo "*** dependencies of module $libname. Therefore, libtool will create"
2638 echo "*** a static module, that should work as long as the dlopening"
2639 echo "*** application is linked with the -dlopen flag."
2640 if test -z "$global_symbol_pipe"; then
2641 echo
2642 echo "*** However, this would only work if libtool was able to extract symbol"
2643 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2644 echo "*** not find such a program. So, this module is probably useless."
2645 echo "*** \`nm' from GNU binutils and a full rebuild may help."
2647 if test "$build_old_libs" = no; then
2648 oldlibs="$output_objdir/$libname.$libext"
2649 build_libtool_libs=module
2650 build_old_libs=yes
2651 else
2652 build_libtool_libs=no
2654 else
2655 echo "*** The inter-library dependencies that have been dropped here will be"
2656 echo "*** automatically added whenever a program is linked with this library"
2657 echo "*** or is declared to -dlopen it."
2659 if test $allow_undefined = no; then
2660 echo
2661 echo "*** Since this library must not contain undefined symbols,"
2662 echo "*** because either the platform does not support them or"
2663 echo "*** it was explicitly requested with -no-undefined,"
2664 echo "*** libtool will only create a static version of it."
2665 if test "$build_old_libs" = no; then
2666 oldlibs="$output_objdir/$libname.$libext"
2667 build_libtool_libs=module
2668 build_old_libs=yes
2669 else
2670 build_libtool_libs=no
2675 # Done checking deplibs!
2676 deplibs=$newdeplibs
2679 # All the library-specific variables (install_libdir is set above).
2680 library_names=
2681 old_library=
2682 dlname=
2684 # Test again, we may have decided not to build it any more
2685 if test "$build_libtool_libs" = yes; then
2686 if test $hardcode_into_libs = yes; then
2687 # Hardcode the library paths
2688 hardcode_libdirs=
2689 dep_rpath=
2690 rpath="$finalize_rpath"
2691 test "$mode" != relink && rpath="$compile_rpath$rpath"
2692 for libdir in $rpath; do
2693 if test -n "$hardcode_libdir_flag_spec"; then
2694 if test -n "$hardcode_libdir_separator"; then
2695 if test -z "$hardcode_libdirs"; then
2696 hardcode_libdirs="$libdir"
2697 else
2698 # Just accumulate the unique libdirs.
2699 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
2700 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2703 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2705 esac
2707 else
2708 eval flag=\"$hardcode_libdir_flag_spec\"
2709 dep_rpath="$dep_rpath $flag"
2711 elif test -n "$runpath_var"; then
2712 case "$perm_rpath " in
2713 *" $libdir "*) ;;
2714 *) perm_rpath="$perm_rpath $libdir" ;;
2715 esac
2717 done
2718 # Substitute the hardcoded libdirs into the rpath.
2719 if test -n "$hardcode_libdir_separator" &&
2720 test -n "$hardcode_libdirs"; then
2721 libdir="$hardcode_libdirs"
2722 eval dep_rpath=\"$hardcode_libdir_flag_spec\"
2724 if test -n "$runpath_var" && test -n "$perm_rpath"; then
2725 # We should set the runpath_var.
2726 rpath=
2727 for dir in $perm_rpath; do
2728 rpath="$rpath$dir:"
2729 done
2730 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
2732 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
2735 shlibpath="$finalize_shlibpath"
2736 test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
2737 if test -n "$shlibpath"; then
2738 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
2741 # Get the real and link names of the library.
2742 eval library_names=\"$library_names_spec\"
2743 set dummy $library_names
2744 realname="$2"
2745 shift; shift
2747 if test -n "$soname_spec"; then
2748 eval soname=\"$soname_spec\"
2749 else
2750 soname="$realname"
2752 test -z "$dlname" && dlname=$soname
2754 lib="$output_objdir/$realname"
2755 for link
2757 linknames="$linknames $link"
2758 done
2760 # Ensure that we have .o objects for linkers which dislike .lo
2761 # (e.g. aix) in case we are running --disable-static
2762 for obj in $libobjs; do
2763 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
2764 if test "X$xdir" = "X$obj"; then
2765 xdir="."
2766 else
2767 xdir="$xdir"
2769 baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
2770 oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
2771 if test ! -f $xdir/$oldobj; then
2772 $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
2773 $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
2775 done
2777 # Use standard objects if they are pic
2778 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2780 # Prepare the list of exported symbols
2781 if test -z "$export_symbols"; then
2782 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
2783 $show "generating symbol list for \`$libname.la'"
2784 export_symbols="$output_objdir/$libname.exp"
2785 $run $rm $export_symbols
2786 eval cmds=\"$export_symbols_cmds\"
2787 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2788 for cmd in $cmds; do
2789 IFS="$save_ifs"
2790 $show "$cmd"
2791 $run eval "$cmd" || exit $?
2792 done
2793 IFS="$save_ifs"
2794 if test -n "$export_symbols_regex"; then
2795 $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
2796 $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
2797 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
2798 $run eval '$mv "${export_symbols}T" "$export_symbols"'
2803 if test -n "$export_symbols" && test -n "$include_expsyms"; then
2804 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
2807 if test -n "$convenience"; then
2808 if test -n "$whole_archive_flag_spec"; then
2809 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
2810 else
2811 gentop="$output_objdir/${outputname}x"
2812 $show "${rm}r $gentop"
2813 $run ${rm}r "$gentop"
2814 $show "mkdir $gentop"
2815 $run mkdir "$gentop"
2816 status=$?
2817 if test $status -ne 0 && test ! -d "$gentop"; then
2818 exit $status
2820 generated="$generated $gentop"
2822 for xlib in $convenience; do
2823 # Extract the objects.
2824 case $xlib in
2825 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2826 *) xabs=`pwd`"/$xlib" ;;
2827 esac
2828 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2829 xdir="$gentop/$xlib"
2831 $show "${rm}r $xdir"
2832 $run ${rm}r "$xdir"
2833 $show "mkdir $xdir"
2834 $run mkdir "$xdir"
2835 status=$?
2836 if test $status -ne 0 && test ! -d "$xdir"; then
2837 exit $status
2839 $show "(cd $xdir && $AR x $xabs)"
2840 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2842 libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
2843 done
2847 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
2848 eval flag=\"$thread_safe_flag_spec\"
2849 linker_flags="$linker_flags $flag"
2852 # Make a backup of the uninstalled library when relinking
2853 if test "$mode" = relink; then
2854 $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
2857 # Do each of the archive commands.
2858 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
2859 eval cmds=\"$archive_expsym_cmds\"
2860 else
2861 eval cmds=\"$archive_cmds\"
2863 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2864 for cmd in $cmds; do
2865 IFS="$save_ifs"
2866 $show "$cmd"
2867 $run eval "$cmd" || exit $?
2868 done
2869 IFS="$save_ifs"
2871 # Restore the uninstalled library and exit
2872 if test "$mode" = relink; then
2873 $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
2874 exit 0
2877 # Create links to the real library.
2878 for linkname in $linknames; do
2879 if test "$realname" != "$linkname"; then
2880 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
2881 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
2883 done
2885 # If -module or -export-dynamic was specified, set the dlname.
2886 if test "$module" = yes || test "$export_dynamic" = yes; then
2887 # On all known operating systems, these are identical.
2888 dlname="$soname"
2893 obj)
2894 if test -n "$deplibs"; then
2895 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
2898 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2899 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
2902 if test -n "$rpath"; then
2903 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
2906 if test -n "$xrpath"; then
2907 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
2910 if test -n "$vinfo"; then
2911 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
2914 if test -n "$release"; then
2915 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
2918 case $output in
2919 *.lo)
2920 if test -n "$objs$old_deplibs"; then
2921 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
2922 exit 1
2924 libobj="$output"
2925 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
2928 libobj=
2929 obj="$output"
2931 esac
2933 # Delete the old objects.
2934 $run $rm $obj $libobj
2936 # Objects from convenience libraries. This assumes
2937 # single-version convenience libraries. Whenever we create
2938 # different ones for PIC/non-PIC, this we'll have to duplicate
2939 # the extraction.
2940 reload_conv_objs=
2941 gentop=
2942 # reload_cmds runs $LD directly, so let us get rid of
2943 # -Wl from whole_archive_flag_spec
2946 if test -n "$convenience"; then
2947 if test -n "$whole_archive_flag_spec"; then
2948 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
2949 else
2950 gentop="$output_objdir/${obj}x"
2951 $show "${rm}r $gentop"
2952 $run ${rm}r "$gentop"
2953 $show "mkdir $gentop"
2954 $run mkdir "$gentop"
2955 status=$?
2956 if test $status -ne 0 && test ! -d "$gentop"; then
2957 exit $status
2959 generated="$generated $gentop"
2961 for xlib in $convenience; do
2962 # Extract the objects.
2963 case $xlib in
2964 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2965 *) xabs=`pwd`"/$xlib" ;;
2966 esac
2967 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2968 xdir="$gentop/$xlib"
2970 $show "${rm}r $xdir"
2971 $run ${rm}r "$xdir"
2972 $show "mkdir $xdir"
2973 $run mkdir "$xdir"
2974 status=$?
2975 if test $status -ne 0 && test ! -d "$xdir"; then
2976 exit $status
2978 $show "(cd $xdir && $AR x $xabs)"
2979 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2981 reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
2982 done
2986 # Create the old-style object.
2987 reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
2989 output="$obj"
2990 eval cmds=\"$reload_cmds\"
2991 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2992 for cmd in $cmds; do
2993 IFS="$save_ifs"
2994 $show "$cmd"
2995 $run eval "$cmd" || exit $?
2996 done
2997 IFS="$save_ifs"
2999 # Exit if we aren't doing a library object file.
3000 if test -z "$libobj"; then
3001 if test -n "$gentop"; then
3002 $show "${rm}r $gentop"
3003 $run ${rm}r $gentop
3006 exit 0
3009 if test "$build_libtool_libs" != yes; then
3010 if test -n "$gentop"; then
3011 $show "${rm}r $gentop"
3012 $run ${rm}r $gentop
3015 # Create an invalid libtool object if no PIC, so that we don't
3016 # accidentally link it into a program.
3017 $show "echo timestamp > $libobj"
3018 $run eval "echo timestamp > $libobj" || exit $?
3019 exit 0
3022 if test -n "$pic_flag" || test "$pic_mode" != default; then
3023 # Only do commands if we really have different PIC objects.
3024 reload_objs="$libobjs $reload_conv_objs"
3025 output="$libobj"
3026 eval cmds=\"$reload_cmds\"
3027 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3028 for cmd in $cmds; do
3029 IFS="$save_ifs"
3030 $show "$cmd"
3031 $run eval "$cmd" || exit $?
3032 done
3033 IFS="$save_ifs"
3034 else
3035 # Just create a symlink.
3036 $show $rm $libobj
3037 $run $rm $libobj
3038 xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
3039 if test "X$xdir" = "X$libobj"; then
3040 xdir="."
3041 else
3042 xdir="$xdir"
3044 baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
3045 oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
3046 $show "(cd $xdir && $LN_S $oldobj $baseobj)"
3047 $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
3050 if test -n "$gentop"; then
3051 $show "${rm}r $gentop"
3052 $run ${rm}r $gentop
3055 exit 0
3058 prog)
3059 case $host in
3060 *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;;
3061 esac
3062 if test -n "$vinfo"; then
3063 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
3066 if test -n "$release"; then
3067 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
3070 if test "$preload" = yes; then
3071 if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
3072 test "$dlopen_self_static" = unknown; then
3073 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
3077 case $host in
3078 *-*-rhapsody* | *-*-darwin1.[012])
3079 # On Rhapsody replace the C library is the System framework
3080 compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
3081 finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
3083 esac
3085 compile_command="$compile_command $compile_deplibs"
3086 finalize_command="$finalize_command $finalize_deplibs"
3088 if test -n "$rpath$xrpath"; then
3089 # If the user specified any rpath flags, then add them.
3090 for libdir in $rpath $xrpath; do
3091 # This is the magic to use -rpath.
3092 case "$finalize_rpath " in
3093 *" $libdir "*) ;;
3094 *) finalize_rpath="$finalize_rpath $libdir" ;;
3095 esac
3096 done
3099 # Now hardcode the library paths
3100 rpath=
3101 hardcode_libdirs=
3102 for libdir in $compile_rpath $finalize_rpath; do
3103 if test -n "$hardcode_libdir_flag_spec"; then
3104 if test -n "$hardcode_libdir_separator"; then
3105 if test -z "$hardcode_libdirs"; then
3106 hardcode_libdirs="$libdir"
3107 else
3108 # Just accumulate the unique libdirs.
3109 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3110 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3113 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3115 esac
3117 else
3118 eval flag=\"$hardcode_libdir_flag_spec\"
3119 rpath="$rpath $flag"
3121 elif test -n "$runpath_var"; then
3122 case "$perm_rpath " in
3123 *" $libdir "*) ;;
3124 *) perm_rpath="$perm_rpath $libdir" ;;
3125 esac
3127 case $host in
3128 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
3129 case :$dllsearchpath: in
3130 *":$libdir:"*) ;;
3131 *) dllsearchpath="$dllsearchpath:$libdir";;
3132 esac
3134 esac
3135 done
3136 # Substitute the hardcoded libdirs into the rpath.
3137 if test -n "$hardcode_libdir_separator" &&
3138 test -n "$hardcode_libdirs"; then
3139 libdir="$hardcode_libdirs"
3140 eval rpath=\" $hardcode_libdir_flag_spec\"
3142 compile_rpath="$rpath"
3144 rpath=
3145 hardcode_libdirs=
3146 for libdir in $finalize_rpath; do
3147 if test -n "$hardcode_libdir_flag_spec"; then
3148 if test -n "$hardcode_libdir_separator"; then
3149 if test -z "$hardcode_libdirs"; then
3150 hardcode_libdirs="$libdir"
3151 else
3152 # Just accumulate the unique libdirs.
3153 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3154 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3157 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3159 esac
3161 else
3162 eval flag=\"$hardcode_libdir_flag_spec\"
3163 rpath="$rpath $flag"
3165 elif test -n "$runpath_var"; then
3166 case "$finalize_perm_rpath " in
3167 *" $libdir "*) ;;
3168 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
3169 esac
3171 done
3172 # Substitute the hardcoded libdirs into the rpath.
3173 if test -n "$hardcode_libdir_separator" &&
3174 test -n "$hardcode_libdirs"; then
3175 libdir="$hardcode_libdirs"
3176 eval rpath=\" $hardcode_libdir_flag_spec\"
3178 finalize_rpath="$rpath"
3180 if test -n "$libobjs" && test "$build_old_libs" = yes; then
3181 # Transform all the library objects into standard objects.
3182 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3183 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3186 dlsyms=
3187 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3188 if test -n "$NM" && test -n "$global_symbol_pipe"; then
3189 dlsyms="${outputname}S.c"
3190 else
3191 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
3195 if test -n "$dlsyms"; then
3196 case $dlsyms in
3197 "") ;;
3198 *.c)
3199 # Discover the nlist of each of the dlfiles.
3200 nlist="$output_objdir/${outputname}.nm"
3202 $show "$rm $nlist ${nlist}S ${nlist}T"
3203 $run $rm "$nlist" "${nlist}S" "${nlist}T"
3205 # Parse the name list into a source file.
3206 $show "creating $output_objdir/$dlsyms"
3208 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
3209 /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
3210 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
3212 #ifdef __cplusplus
3213 extern \"C\" {
3214 #endif
3216 /* Prevent the only kind of declaration conflicts we can make. */
3217 #define lt_preloaded_symbols some_other_symbol
3219 /* External symbol declarations for the compiler. */\
3222 if test "$dlself" = yes; then
3223 $show "generating symbol list for \`$output'"
3225 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
3227 # Add our own program objects to the symbol list.
3228 progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3229 for arg in $progfiles; do
3230 $show "extracting global C symbols from \`$arg'"
3231 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
3232 done
3234 if test -n "$exclude_expsyms"; then
3235 $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3236 $run eval '$mv "$nlist"T "$nlist"'
3239 if test -n "$export_symbols_regex"; then
3240 $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3241 $run eval '$mv "$nlist"T "$nlist"'
3244 # Prepare the list of exported symbols
3245 if test -z "$export_symbols"; then
3246 export_symbols="$output_objdir/$output.exp"
3247 $run $rm $export_symbols
3248 $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3249 else
3250 $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
3251 $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
3252 $run eval 'mv "$nlist"T "$nlist"'
3256 for arg in $dlprefiles; do
3257 $show "extracting global C symbols from \`$arg'"
3258 name=`echo "$arg" | sed -e 's%^.*/%%'`
3259 $run eval 'echo ": $name " >> "$nlist"'
3260 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
3261 done
3263 if test -z "$run"; then
3264 # Make sure we have at least an empty file.
3265 test -f "$nlist" || : > "$nlist"
3267 if test -n "$exclude_expsyms"; then
3268 egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3269 $mv "$nlist"T "$nlist"
3272 # Try sorting and uniquifying the output.
3273 if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
3275 else
3276 grep -v "^: " < "$nlist" > "$nlist"S
3279 if test -f "$nlist"S; then
3280 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
3281 else
3282 echo '/* NONE */' >> "$output_objdir/$dlsyms"
3285 $echo >> "$output_objdir/$dlsyms" "\
3287 #undef lt_preloaded_symbols
3289 #if defined (__STDC__) && __STDC__
3290 # define lt_ptr_t void *
3291 #else
3292 # define lt_ptr_t char *
3293 # define const
3294 #endif
3296 /* The mapping between symbol names and symbols. */
3297 const struct {
3298 const char *name;
3299 lt_ptr_t address;
3301 lt_preloaded_symbols[] =
3305 sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
3306 -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
3307 < "$nlist" >> "$output_objdir/$dlsyms"
3309 $echo >> "$output_objdir/$dlsyms" "\
3310 {0, (lt_ptr_t) 0}
3313 /* This works around a problem in FreeBSD linker */
3314 #ifdef FREEBSD_WORKAROUND
3315 static const void *lt_preloaded_setup() {
3316 return lt_preloaded_symbols;
3318 #endif
3320 #ifdef __cplusplus
3322 #endif\
3326 pic_flag_for_symtable=
3327 case $host in
3328 # compiling the symbol table file with pic_flag works around
3329 # a FreeBSD bug that causes programs to crash when -lm is
3330 # linked before any other PIC object. But we must not use
3331 # pic_flag when linking with -static. The problem exists in
3332 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3333 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3334 case "$compile_command " in
3335 *" -static "*) ;;
3336 *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
3337 esac;;
3338 *-*-hpux*)
3339 case "$compile_command " in
3340 *" -static "*) ;;
3341 *) pic_flag_for_symtable=" $pic_flag -DPIC";;
3342 esac
3343 esac
3345 # Now compile the dynamic symbol file.
3346 $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
3347 $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
3349 # Clean up the generated files.
3350 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
3351 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
3353 # Transform the symbol file into the correct name.
3354 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
3355 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
3358 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
3359 exit 1
3361 esac
3362 else
3363 # We keep going just in case the user didn't refer to
3364 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
3365 # really was required.
3367 # Nullify the symbol file.
3368 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
3369 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
3372 if test $need_relink = no || test "$build_libtool_libs" != yes; then
3373 # Replace the output file specification.
3374 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
3375 link_command="$compile_command$compile_rpath"
3377 # We have no uninstalled library dependencies, so finalize right now.
3378 $show "$link_command"
3379 $run eval "$link_command"
3380 status=$?
3382 # Delete the generated files.
3383 if test -n "$dlsyms"; then
3384 $show "$rm $output_objdir/${outputname}S.${objext}"
3385 $run $rm "$output_objdir/${outputname}S.${objext}"
3388 exit $status
3391 if test -n "$shlibpath_var"; then
3392 # We should set the shlibpath_var
3393 rpath=
3394 for dir in $temp_rpath; do
3395 case $dir in
3396 [\\/]* | [A-Za-z]:[\\/]*)
3397 # Absolute path.
3398 rpath="$rpath$dir:"
3401 # Relative path: add a thisdir entry.
3402 rpath="$rpath\$thisdir/$dir:"
3404 esac
3405 done
3406 temp_rpath="$rpath"
3409 if test -n "$compile_shlibpath$finalize_shlibpath"; then
3410 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
3412 if test -n "$finalize_shlibpath"; then
3413 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
3416 compile_var=
3417 finalize_var=
3418 if test -n "$runpath_var"; then
3419 if test -n "$perm_rpath"; then
3420 # We should set the runpath_var.
3421 rpath=
3422 for dir in $perm_rpath; do
3423 rpath="$rpath$dir:"
3424 done
3425 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
3427 if test -n "$finalize_perm_rpath"; then
3428 # We should set the runpath_var.
3429 rpath=
3430 for dir in $finalize_perm_rpath; do
3431 rpath="$rpath$dir:"
3432 done
3433 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
3437 if test "$no_install" = yes; then
3438 # We don't need to create a wrapper script.
3439 link_command="$compile_var$compile_command$compile_rpath"
3440 # Replace the output file specification.
3441 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
3442 # Delete the old output file.
3443 $run $rm $output
3444 # Link the executable and exit
3445 $show "$link_command"
3446 $run eval "$link_command" || exit $?
3447 exit 0
3450 if test "$hardcode_action" = relink; then
3451 # Fast installation is not supported
3452 link_command="$compile_var$compile_command$compile_rpath"
3453 relink_command="$finalize_var$finalize_command$finalize_rpath"
3455 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
3456 $echo "$modename: \`$output' will be relinked during installation" 1>&2
3457 else
3458 if test "$fast_install" != no; then
3459 link_command="$finalize_var$compile_command$finalize_rpath"
3460 if test "$fast_install" = yes; then
3461 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
3462 else
3463 # fast_install is set to needless
3464 relink_command=
3466 else
3467 link_command="$compile_var$compile_command$compile_rpath"
3468 relink_command="$finalize_var$finalize_command$finalize_rpath"
3472 # Replace the output file specification.
3473 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
3475 # Delete the old output files.
3476 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
3478 $show "$link_command"
3479 $run eval "$link_command" || exit $?
3481 # Now create the wrapper script.
3482 $show "creating $output"
3484 # Quote the relink command for shipping.
3485 if test -n "$relink_command"; then
3486 # Preserve any variables that may affect compiler behavior
3487 for var in $variables_saved_for_relink; do
3488 if eval test -z \"\${$var+set}\"; then
3489 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
3490 elif eval var_value=\$$var; test -z "$var_value"; then
3491 relink_command="$var=; export $var; $relink_command"
3492 else
3493 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
3494 relink_command="$var=\"$var_value\"; export $var; $relink_command"
3496 done
3497 relink_command="cd `pwd`; $relink_command"
3498 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
3501 # Quote $echo for shipping.
3502 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
3503 case $0 in
3504 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
3505 *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
3506 esac
3507 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
3508 else
3509 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
3512 # Only actually do things if our run command is non-null.
3513 if test -z "$run"; then
3514 # win32 will think the script is a binary if it has
3515 # a .exe suffix, so we strip it off here.
3516 case $output in
3517 *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
3518 esac
3519 # test for cygwin because mv fails w/o .exe extensions
3520 case $host in
3521 *cygwin*) exeext=.exe ;;
3522 *) exeext= ;;
3523 esac
3524 $rm $output
3525 trap "$rm $output; exit 1" 1 2 15
3527 $echo > $output "\
3528 #! $SHELL
3530 # $output - temporary wrapper script for $objdir/$outputname
3531 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
3533 # The $output program cannot be directly executed until all the libtool
3534 # libraries that it depends on are installed.
3536 # This wrapper script should never be moved out of the build directory.
3537 # If it is, it will not operate correctly.
3539 # Sed substitution that helps us do robust quoting. It backslashifies
3540 # metacharacters that are still active within double-quoted strings.
3541 Xsed='sed -e 1s/^X//'
3542 sed_quote_subst='$sed_quote_subst'
3544 # The HP-UX ksh and POSIX shell print the target directory to stdout
3545 # if CDPATH is set.
3546 if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
3548 relink_command=\"$relink_command\"
3550 # This environment variable determines our operation mode.
3551 if test \"\$libtool_install_magic\" = \"$magic\"; then
3552 # install mode needs the following variable:
3553 notinst_deplibs='$notinst_deplibs'
3554 else
3555 # When we are sourced in execute mode, \$file and \$echo are already set.
3556 if test \"\$libtool_execute_magic\" != \"$magic\"; then
3557 echo=\"$qecho\"
3558 file=\"\$0\"
3559 # Make sure echo works.
3560 if test \"X\$1\" = X--no-reexec; then
3561 # Discard the --no-reexec flag, and continue.
3562 shift
3563 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
3564 # Yippee, \$echo works!
3566 else
3567 # Restart under the correct shell, and then maybe \$echo will work.
3568 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
3572 $echo >> $output "\
3574 # Find the directory that this script lives in.
3575 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
3576 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
3578 # Follow symbolic links until we get to the real thisdir.
3579 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
3580 while test -n \"\$file\"; do
3581 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
3583 # If there was a directory component, then change thisdir.
3584 if test \"x\$destdir\" != \"x\$file\"; then
3585 case \"\$destdir\" in
3586 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
3587 *) thisdir=\"\$thisdir/\$destdir\" ;;
3588 esac
3591 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
3592 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
3593 done
3595 # Try to get the absolute directory name.
3596 absdir=\`cd \"\$thisdir\" && pwd\`
3597 test -n \"\$absdir\" && thisdir=\"\$absdir\"
3600 if test "$fast_install" = yes; then
3601 echo >> $output "\
3602 program=lt-'$outputname'$exeext
3603 progdir=\"\$thisdir/$objdir\"
3605 if test ! -f \"\$progdir/\$program\" || \\
3606 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
3607 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
3609 file=\"\$\$-\$program\"
3611 if test ! -d \"\$progdir\"; then
3612 $mkdir \"\$progdir\"
3613 else
3614 $rm \"\$progdir/\$file\"
3617 echo >> $output "\
3619 # relink executable if necessary
3620 if test -n \"\$relink_command\"; then
3621 if (eval \$relink_command); then :
3622 else
3623 $rm \"\$progdir/\$file\"
3624 exit 1
3628 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
3629 { $rm \"\$progdir/\$program\";
3630 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
3631 $rm \"\$progdir/\$file\"
3633 else
3634 echo >> $output "\
3635 program='$outputname'
3636 progdir=\"\$thisdir/$objdir\"
3640 echo >> $output "\
3642 if test -f \"\$progdir/\$program\"; then"
3644 # Export our shlibpath_var if we have one.
3645 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3646 $echo >> $output "\
3647 # Add our own library path to $shlibpath_var
3648 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
3650 # Some systems cannot cope with colon-terminated $shlibpath_var
3651 # The second colon is a workaround for a bug in BeOS R4 sed
3652 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
3654 export $shlibpath_var
3658 # fixup the dll searchpath if we need to.
3659 if test -n "$dllsearchpath"; then
3660 $echo >> $output "\
3661 # Add the dll search path components to the executable PATH
3662 PATH=$dllsearchpath:\$PATH
3666 $echo >> $output "\
3667 if test \"\$libtool_execute_magic\" != \"$magic\"; then
3668 # Run the actual program with our arguments.
3670 case $host in
3671 # win32 systems need to use the prog path for dll
3672 # lookup to work
3673 *-*-cygwin* | *-*-pw32*)
3674 $echo >> $output "\
3675 exec \$progdir/\$program \${1+\"\$@\"}
3679 # Backslashes separate directories on plain windows
3680 *-*-mingw | *-*-os2*)
3681 $echo >> $output "\
3682 exec \$progdir\\\\\$program \${1+\"\$@\"}
3687 $echo >> $output "\
3688 # Export the path to the program.
3689 PATH=\"\$progdir:\$PATH\"
3690 export PATH
3692 exec \$program \${1+\"\$@\"}
3695 esac
3696 $echo >> $output "\
3697 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
3698 exit 1
3700 else
3701 # The program doesn't exist.
3702 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
3703 \$echo \"This script is just a wrapper for \$program.\" 1>&2
3704 echo \"See the $PACKAGE documentation for more information.\" 1>&2
3705 exit 1
3709 chmod +x $output
3711 exit 0
3713 esac
3715 # See if we need to build an old-fashioned archive.
3716 for oldlib in $oldlibs; do
3718 if test "$build_libtool_libs" = convenience; then
3719 oldobjs="$libobjs_save"
3720 addlibs="$convenience"
3721 build_libtool_libs=no
3722 else
3723 if test "$build_libtool_libs" = module; then
3724 oldobjs="$libobjs_save"
3725 build_libtool_libs=no
3726 else
3727 oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
3729 addlibs="$old_convenience"
3732 if test -n "$addlibs"; then
3733 gentop="$output_objdir/${outputname}x"
3734 $show "${rm}r $gentop"
3735 $run ${rm}r "$gentop"
3736 $show "mkdir $gentop"
3737 $run mkdir "$gentop"
3738 status=$?
3739 if test $status -ne 0 && test ! -d "$gentop"; then
3740 exit $status
3742 generated="$generated $gentop"
3744 # Add in members from convenience archives.
3745 for xlib in $addlibs; do
3746 # Extract the objects.
3747 case $xlib in
3748 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
3749 *) xabs=`pwd`"/$xlib" ;;
3750 esac
3751 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
3752 xdir="$gentop/$xlib"
3754 $show "${rm}r $xdir"
3755 $run ${rm}r "$xdir"
3756 $show "mkdir $xdir"
3757 $run mkdir "$xdir"
3758 status=$?
3759 if test $status -ne 0 && test ! -d "$xdir"; then
3760 exit $status
3762 $show "(cd $xdir && $AR x $xabs)"
3763 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
3765 oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
3766 done
3769 # Do each command in the archive commands.
3770 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
3771 eval cmds=\"$old_archive_from_new_cmds\"
3772 else
3773 # Ensure that we have .o objects in place in case we decided
3774 # not to build a shared library, and have fallen back to building
3775 # static libs even though --disable-static was passed!
3776 for oldobj in $oldobjs; do
3777 if test ! -f $oldobj; then
3778 xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
3779 if test "X$xdir" = "X$oldobj"; then
3780 xdir="."
3781 else
3782 xdir="$xdir"
3784 baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
3785 obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
3786 $show "(cd $xdir && ${LN_S} $obj $baseobj)"
3787 $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
3789 done
3791 eval cmds=\"$old_archive_cmds\"
3793 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3794 for cmd in $cmds; do
3795 IFS="$save_ifs"
3796 $show "$cmd"
3797 $run eval "$cmd" || exit $?
3798 done
3799 IFS="$save_ifs"
3800 done
3802 if test -n "$generated"; then
3803 $show "${rm}r$generated"
3804 $run ${rm}r$generated
3807 # Now create the libtool archive.
3808 case $output in
3809 *.la)
3810 old_library=
3811 test "$build_old_libs" = yes && old_library="$libname.$libext"
3812 $show "creating $output"
3814 # Preserve any variables that may affect compiler behavior
3815 for var in $variables_saved_for_relink; do
3816 if eval test -z \"\${$var+set}\"; then
3817 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
3818 elif eval var_value=\$$var; test -z "$var_value"; then
3819 relink_command="$var=; export $var; $relink_command"
3820 else
3821 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
3822 relink_command="$var=\"$var_value\"; export $var; $relink_command"
3824 done
3825 # Quote the link command for shipping.
3826 relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args"
3827 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
3829 # Only create the output if not a dry run.
3830 if test -z "$run"; then
3831 for installed in no yes; do
3832 if test "$installed" = yes; then
3833 if test -z "$install_libdir"; then
3834 break
3836 output="$output_objdir/$outputname"i
3837 # Replace all uninstalled libtool libraries with the installed ones
3838 newdependency_libs=
3839 for deplib in $dependency_libs; do
3840 case $deplib in
3841 *.la)
3842 name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
3843 eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
3844 if test -z "$libdir"; then
3845 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
3846 exit 1
3848 newdependency_libs="$newdependency_libs $libdir/$name"
3850 *) newdependency_libs="$newdependency_libs $deplib" ;;
3851 esac
3852 done
3853 dependency_libs="$newdependency_libs"
3854 newdlfiles=
3855 for lib in $dlfiles; do
3856 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
3857 eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
3858 if test -z "$libdir"; then
3859 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
3860 exit 1
3862 newdlfiles="$newdlfiles $libdir/$name"
3863 done
3864 dlfiles="$newdlfiles"
3865 newdlprefiles=
3866 for lib in $dlprefiles; do
3867 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
3868 eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
3869 if test -z "$libdir"; then
3870 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
3871 exit 1
3873 newdlprefiles="$newdlprefiles $libdir/$name"
3874 done
3875 dlprefiles="$newdlprefiles"
3877 $rm $output
3878 # place dlname in correct position for cygwin
3879 tdlname=$dlname
3880 case $host,$output,$installed,$module,$dlname in
3881 *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
3882 esac
3883 $echo > $output "\
3884 # $outputname - a libtool library file
3885 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
3887 # Please DO NOT delete this file!
3888 # It is necessary for linking the library.
3890 # The name that we can dlopen(3).
3891 dlname='$tdlname'
3893 # Names of this library.
3894 library_names='$library_names'
3896 # The name of the static archive.
3897 old_library='$old_library'
3899 # Libraries that this one depends upon.
3900 dependency_libs='$dependency_libs'
3902 # Version information for $libname.
3903 current=$current
3904 age=$age
3905 revision=$revision
3907 # Is this an already installed library?
3908 installed=$installed
3910 # Files to dlopen/dlpreopen
3911 dlopen='$dlfiles'
3912 dlpreopen='$dlprefiles'
3914 # Directory that this library needs to be installed in:
3915 libdir='$install_libdir'"
3916 if test "$installed" = no && test $need_relink = yes; then
3917 $echo >> $output "\
3918 relink_command=\"$relink_command\""
3920 done
3923 # Do a symbolic link so that the libtool archive can be found in
3924 # LD_LIBRARY_PATH before the program is installed.
3925 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
3926 $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
3928 esac
3929 exit 0
3932 # libtool install mode
3933 install)
3934 modename="$modename: install"
3936 # There may be an optional sh(1) argument at the beginning of
3937 # install_prog (especially on Windows NT).
3938 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
3939 # Allow the use of GNU shtool's install command.
3940 $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
3941 # Aesthetically quote it.
3942 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
3943 case $arg in
3944 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3945 arg="\"$arg\""
3947 esac
3948 install_prog="$arg "
3949 arg="$1"
3950 shift
3951 else
3952 install_prog=
3953 arg="$nonopt"
3956 # The real first argument should be the name of the installation program.
3957 # Aesthetically quote it.
3958 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
3959 case $arg in
3960 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
3961 arg="\"$arg\""
3963 esac
3964 install_prog="$install_prog$arg"
3966 # We need to accept at least all the BSD install flags.
3967 dest=
3968 files=
3969 opts=
3970 prev=
3971 install_type=
3972 isdir=no
3973 stripme=
3974 for arg
3976 if test -n "$dest"; then
3977 files="$files $dest"
3978 dest="$arg"
3979 continue
3982 case $arg in
3983 -d) isdir=yes ;;
3984 -f) prev="-f" ;;
3985 -g) prev="-g" ;;
3986 -m) prev="-m" ;;
3987 -o) prev="-o" ;;
3989 stripme=" -s"
3990 continue
3992 -*) ;;
3995 # If the previous option needed an argument, then skip it.
3996 if test -n "$prev"; then
3997 prev=
3998 else
3999 dest="$arg"
4000 continue
4003 esac
4005 # Aesthetically quote the argument.
4006 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
4007 case $arg in
4008 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
4009 arg="\"$arg\""
4011 esac
4012 install_prog="$install_prog $arg"
4013 done
4015 if test -z "$install_prog"; then
4016 $echo "$modename: you must specify an install program" 1>&2
4017 $echo "$help" 1>&2
4018 exit 1
4021 if test -n "$prev"; then
4022 $echo "$modename: the \`$prev' option requires an argument" 1>&2
4023 $echo "$help" 1>&2
4024 exit 1
4027 if test -z "$files"; then
4028 if test -z "$dest"; then
4029 $echo "$modename: no file or destination specified" 1>&2
4030 else
4031 $echo "$modename: you must specify a destination" 1>&2
4033 $echo "$help" 1>&2
4034 exit 1
4037 # Strip any trailing slash from the destination.
4038 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
4040 # Check to see that the destination is a directory.
4041 test -d "$dest" && isdir=yes
4042 if test "$isdir" = yes; then
4043 destdir="$dest"
4044 destname=
4045 else
4046 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
4047 test "X$destdir" = "X$dest" && destdir=.
4048 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
4050 # Not a directory, so check to see that there is only one file specified.
4051 set dummy $files
4052 if test $# -gt 2; then
4053 $echo "$modename: \`$dest' is not a directory" 1>&2
4054 $echo "$help" 1>&2
4055 exit 1
4058 case $destdir in
4059 [\\/]* | [A-Za-z]:[\\/]*) ;;
4061 for file in $files; do
4062 case $file in
4063 *.lo) ;;
4065 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
4066 $echo "$help" 1>&2
4067 exit 1
4069 esac
4070 done
4072 esac
4074 # This variable tells wrapper scripts just to set variables rather
4075 # than running their programs.
4076 libtool_install_magic="$magic"
4078 staticlibs=
4079 future_libdirs=
4080 current_libdirs=
4081 for file in $files; do
4083 # Do each installation.
4084 case $file in
4085 *.$libext)
4086 # Do the static libraries later.
4087 staticlibs="$staticlibs $file"
4090 *.la)
4091 # Check to see that this really is a libtool archive.
4092 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
4093 else
4094 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
4095 $echo "$help" 1>&2
4096 exit 1
4099 library_names=
4100 old_library=
4101 relink_command=
4102 # If there is no directory component, then add one.
4103 case $file in
4104 */* | *\\*) . $file ;;
4105 *) . ./$file ;;
4106 esac
4108 # Add the libdir to current_libdirs if it is the destination.
4109 if test "X$destdir" = "X$libdir"; then
4110 case "$current_libdirs " in
4111 *" $libdir "*) ;;
4112 *) current_libdirs="$current_libdirs $libdir" ;;
4113 esac
4114 else
4115 # Note the libdir as a future libdir.
4116 case "$future_libdirs " in
4117 *" $libdir "*) ;;
4118 *) future_libdirs="$future_libdirs $libdir" ;;
4119 esac
4122 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
4123 test "X$dir" = "X$file/" && dir=
4124 dir="$dir$objdir"
4126 if test -n "$relink_command"; then
4127 $echo "$modename: warning: relinking \`$file'" 1>&2
4128 $show "$relink_command"
4129 if $run eval "$relink_command"; then :
4130 else
4131 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
4132 continue
4136 # See the names of the shared library.
4137 set dummy $library_names
4138 if test -n "$2"; then
4139 realname="$2"
4140 shift
4141 shift
4143 srcname="$realname"
4144 test -n "$relink_command" && srcname="$realname"T
4146 # Install the shared library and build the symlinks.
4147 $show "$install_prog $dir/$srcname $destdir/$realname"
4148 $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
4149 if test -n "$stripme" && test -n "$striplib"; then
4150 $show "$striplib $destdir/$realname"
4151 $run eval "$striplib $destdir/$realname" || exit $?
4154 if test $# -gt 0; then
4155 # Delete the old symlinks, and create new ones.
4156 for linkname
4158 if test "$linkname" != "$realname"; then
4159 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
4160 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
4162 done
4165 # Do each command in the postinstall commands.
4166 lib="$destdir/$realname"
4167 eval cmds=\"$postinstall_cmds\"
4168 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
4169 for cmd in $cmds; do
4170 IFS="$save_ifs"
4171 $show "$cmd"
4172 $run eval "$cmd" || exit $?
4173 done
4174 IFS="$save_ifs"
4177 # Install the pseudo-library for information purposes.
4178 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4179 instname="$dir/$name"i
4180 $show "$install_prog $instname $destdir/$name"
4181 $run eval "$install_prog $instname $destdir/$name" || exit $?
4183 # Maybe install the static library, too.
4184 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
4187 *.lo)
4188 # Install (i.e. copy) a libtool object.
4190 # Figure out destination file name, if it wasn't already specified.
4191 if test -n "$destname"; then
4192 destfile="$destdir/$destname"
4193 else
4194 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4195 destfile="$destdir/$destfile"
4198 # Deduce the name of the destination old-style object file.
4199 case $destfile in
4200 *.lo)
4201 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
4203 *.$objext)
4204 staticdest="$destfile"
4205 destfile=
4208 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
4209 $echo "$help" 1>&2
4210 exit 1
4212 esac
4214 # Install the libtool object if requested.
4215 if test -n "$destfile"; then
4216 $show "$install_prog $file $destfile"
4217 $run eval "$install_prog $file $destfile" || exit $?
4220 # Install the old object if enabled.
4221 if test "$build_old_libs" = yes; then
4222 # Deduce the name of the old-style object file.
4223 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
4225 $show "$install_prog $staticobj $staticdest"
4226 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
4228 exit 0
4232 # Figure out destination file name, if it wasn't already specified.
4233 if test -n "$destname"; then
4234 destfile="$destdir/$destname"
4235 else
4236 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4237 destfile="$destdir/$destfile"
4240 # Do a test to see if this is really a libtool program.
4241 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
4242 notinst_deplibs=
4243 relink_command=
4245 # If there is no directory component, then add one.
4246 case $file in
4247 */* | *\\*) . $file ;;
4248 *) . ./$file ;;
4249 esac
4251 # Check the variables that should have been set.
4252 if test -z "$notinst_deplibs"; then
4253 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
4254 exit 1
4257 finalize=yes
4258 for lib in $notinst_deplibs; do
4259 # Check to see that each library is installed.
4260 libdir=
4261 if test -f "$lib"; then
4262 # If there is no directory component, then add one.
4263 case $lib in
4264 */* | *\\*) . $lib ;;
4265 *) . ./$lib ;;
4266 esac
4268 libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
4269 if test -n "$libdir" && test ! -f "$libfile"; then
4270 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
4271 finalize=no
4273 done
4275 relink_command=
4276 # If there is no directory component, then add one.
4277 case $file in
4278 */* | *\\*) . $file ;;
4279 *) . ./$file ;;
4280 esac
4282 outputname=
4283 if test "$fast_install" = no && test -n "$relink_command"; then
4284 if test "$finalize" = yes && test -z "$run"; then
4285 tmpdir="/tmp"
4286 test -n "$TMPDIR" && tmpdir="$TMPDIR"
4287 tmpdir="$tmpdir/libtool-$$"
4288 if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
4289 else
4290 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
4291 continue
4293 file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4294 outputname="$tmpdir/$file"
4295 # Replace the output file specification.
4296 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
4298 $show "$relink_command"
4299 if $run eval "$relink_command"; then :
4300 else
4301 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
4302 ${rm}r "$tmpdir"
4303 continue
4305 file="$outputname"
4306 else
4307 $echo "$modename: warning: cannot relink \`$file'" 1>&2
4309 else
4310 # Install the binary that we compiled earlier.
4311 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
4315 # remove .exe since cygwin /usr/bin/install will append another
4316 # one anyways
4317 case $install_prog,$host in
4318 /usr/bin/install*,*cygwin*)
4319 case $file:$destfile in
4320 *.exe:*.exe)
4321 # this is ok
4323 *.exe:*)
4324 destfile=$destfile.exe
4326 *:*.exe)
4327 destfile=`echo $destfile | sed -e 's,.exe$,,'`
4329 esac
4331 esac
4332 $show "$install_prog$stripme $file $destfile"
4333 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
4334 test -n "$outputname" && ${rm}r "$tmpdir"
4336 esac
4337 done
4339 for file in $staticlibs; do
4340 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4342 # Set up the ranlib parameters.
4343 oldlib="$destdir/$name"
4345 $show "$install_prog $file $oldlib"
4346 $run eval "$install_prog \$file \$oldlib" || exit $?
4348 if test -n "$stripme" && test -n "$striplib"; then
4349 $show "$old_striplib $oldlib"
4350 $run eval "$old_striplib $oldlib" || exit $?
4353 # Do each command in the postinstall commands.
4354 eval cmds=\"$old_postinstall_cmds\"
4355 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
4356 for cmd in $cmds; do
4357 IFS="$save_ifs"
4358 $show "$cmd"
4359 $run eval "$cmd" || exit $?
4360 done
4361 IFS="$save_ifs"
4362 done
4364 if test -n "$future_libdirs"; then
4365 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
4368 if test -n "$current_libdirs"; then
4369 # Maybe just do a dry run.
4370 test -n "$run" && current_libdirs=" -n$current_libdirs"
4371 exec $SHELL $0 --finish$current_libdirs
4372 exit 1
4375 exit 0
4378 # libtool finish mode
4379 finish)
4380 modename="$modename: finish"
4381 libdirs="$nonopt"
4382 admincmds=
4384 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4385 for dir
4387 libdirs="$libdirs $dir"
4388 done
4390 for libdir in $libdirs; do
4391 if test -n "$finish_cmds"; then
4392 # Do each command in the finish commands.
4393 eval cmds=\"$finish_cmds\"
4394 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
4395 for cmd in $cmds; do
4396 IFS="$save_ifs"
4397 $show "$cmd"
4398 $run eval "$cmd" || admincmds="$admincmds
4399 $cmd"
4400 done
4401 IFS="$save_ifs"
4403 if test -n "$finish_eval"; then
4404 # Do the single finish_eval.
4405 eval cmds=\"$finish_eval\"
4406 $run eval "$cmds" || admincmds="$admincmds
4407 $cmds"
4409 done
4412 # Exit here if they wanted silent mode.
4413 test "$show" = ":" && exit 0
4415 echo "----------------------------------------------------------------------"
4416 echo "Libraries have been installed in:"
4417 for libdir in $libdirs; do
4418 echo " $libdir"
4419 done
4420 echo
4421 echo "If you ever happen to want to link against installed libraries"
4422 echo "in a given directory, LIBDIR, you must either use libtool, and"
4423 echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
4424 echo "flag during linking and do at least one of the following:"
4425 if test -n "$shlibpath_var"; then
4426 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
4427 echo " during execution"
4429 if test -n "$runpath_var"; then
4430 echo " - add LIBDIR to the \`$runpath_var' environment variable"
4431 echo " during linking"
4433 if test -n "$hardcode_libdir_flag_spec"; then
4434 libdir=LIBDIR
4435 eval flag=\"$hardcode_libdir_flag_spec\"
4437 echo " - use the \`$flag' linker flag"
4439 if test -n "$admincmds"; then
4440 echo " - have your system administrator run these commands:$admincmds"
4442 if test -f /etc/ld.so.conf; then
4443 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
4445 echo
4446 echo "See any operating system documentation about shared libraries for"
4447 echo "more information, such as the ld(1) and ld.so(8) manual pages."
4448 echo "----------------------------------------------------------------------"
4449 exit 0
4452 # libtool execute mode
4453 execute)
4454 modename="$modename: execute"
4456 # The first argument is the command name.
4457 cmd="$nonopt"
4458 if test -z "$cmd"; then
4459 $echo "$modename: you must specify a COMMAND" 1>&2
4460 $echo "$help"
4461 exit 1
4464 # Handle -dlopen flags immediately.
4465 for file in $execute_dlfiles; do
4466 if test ! -f "$file"; then
4467 $echo "$modename: \`$file' is not a file" 1>&2
4468 $echo "$help" 1>&2
4469 exit 1
4472 dir=
4473 case $file in
4474 *.la)
4475 # Check to see that this really is a libtool archive.
4476 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
4477 else
4478 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
4479 $echo "$help" 1>&2
4480 exit 1
4483 # Read the libtool library.
4484 dlname=
4485 library_names=
4487 # If there is no directory component, then add one.
4488 case $file in
4489 */* | *\\*) . $file ;;
4490 *) . ./$file ;;
4491 esac
4493 # Skip this library if it cannot be dlopened.
4494 if test -z "$dlname"; then
4495 # Warn if it was a shared library.
4496 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
4497 continue
4500 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
4501 test "X$dir" = "X$file" && dir=.
4503 if test -f "$dir/$objdir/$dlname"; then
4504 dir="$dir/$objdir"
4505 else
4506 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
4507 exit 1
4511 *.lo)
4512 # Just add the directory containing the .lo file.
4513 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
4514 test "X$dir" = "X$file" && dir=.
4518 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
4519 continue
4521 esac
4523 # Get the absolute pathname.
4524 absdir=`cd "$dir" && pwd`
4525 test -n "$absdir" && dir="$absdir"
4527 # Now add the directory to shlibpath_var.
4528 if eval "test -z \"\$$shlibpath_var\""; then
4529 eval "$shlibpath_var=\"\$dir\""
4530 else
4531 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
4533 done
4535 # This variable tells wrapper scripts just to set shlibpath_var
4536 # rather than running their programs.
4537 libtool_execute_magic="$magic"
4539 # Check if any of the arguments is a wrapper script.
4540 args=
4541 for file
4543 case $file in
4544 -*) ;;
4546 # Do a test to see if this is really a libtool program.
4547 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
4548 # If there is no directory component, then add one.
4549 case $file in
4550 */* | *\\*) . $file ;;
4551 *) . ./$file ;;
4552 esac
4554 # Transform arg to wrapped name.
4555 file="$progdir/$program"
4558 esac
4559 # Quote arguments (to preserve shell metacharacters).
4560 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
4561 args="$args \"$file\""
4562 done
4564 if test -z "$run"; then
4565 if test -n "$shlibpath_var"; then
4566 # Export the shlibpath_var.
4567 eval "export $shlibpath_var"
4570 # Restore saved enviroment variables
4571 if test "${save_LC_ALL+set}" = set; then
4572 LC_ALL="$save_LC_ALL"; export LC_ALL
4574 if test "${save_LANG+set}" = set; then
4575 LANG="$save_LANG"; export LANG
4578 # Now actually exec the command.
4579 eval "exec \$cmd$args"
4581 $echo "$modename: cannot exec \$cmd$args"
4582 exit 1
4583 else
4584 # Display what would be done.
4585 if test -n "$shlibpath_var"; then
4586 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
4587 $echo "export $shlibpath_var"
4589 $echo "$cmd$args"
4590 exit 0
4594 # libtool clean and uninstall mode
4595 clean | uninstall)
4596 modename="$modename: $mode"
4597 rm="$nonopt"
4598 files=
4599 rmforce=
4600 exit_status=0
4602 # This variable tells wrapper scripts just to set variables rather
4603 # than running their programs.
4604 libtool_install_magic="$magic"
4606 for arg
4608 case $arg in
4609 -f) rm="$rm $arg"; rmforce=yes ;;
4610 -*) rm="$rm $arg" ;;
4611 *) files="$files $arg" ;;
4612 esac
4613 done
4615 if test -z "$rm"; then
4616 $echo "$modename: you must specify an RM program" 1>&2
4617 $echo "$help" 1>&2
4618 exit 1
4621 rmdirs=
4623 for file in $files; do
4624 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
4625 if test "X$dir" = "X$file"; then
4626 dir=.
4627 objdir="$objdir"
4628 else
4629 objdir="$dir/$objdir"
4631 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4632 test $mode = uninstall && objdir="$dir"
4634 # Remember objdir for removal later, being careful to avoid duplicates
4635 if test $mode = clean; then
4636 case " $rmdirs " in
4637 *" $objdir "*) ;;
4638 *) rmdirs="$rmdirs $objdir" ;;
4639 esac
4642 # Don't error if the file doesn't exist and rm -f was used.
4643 if (test -L "$file") >/dev/null 2>&1 \
4644 || (test -h "$file") >/dev/null 2>&1 \
4645 || test -f "$file"; then
4647 elif test -d "$file"; then
4648 exit_status=1
4649 continue
4650 elif test "$rmforce" = yes; then
4651 continue
4654 rmfiles="$file"
4656 case $name in
4657 *.la)
4658 # Possibly a libtool archive, so verify it.
4659 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
4660 . $dir/$name
4662 # Delete the libtool libraries and symlinks.
4663 for n in $library_names; do
4664 rmfiles="$rmfiles $objdir/$n"
4665 done
4666 test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
4667 test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
4669 if test $mode = uninstall; then
4670 if test -n "$library_names"; then
4671 # Do each command in the postuninstall commands.
4672 eval cmds=\"$postuninstall_cmds\"
4673 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
4674 for cmd in $cmds; do
4675 IFS="$save_ifs"
4676 $show "$cmd"
4677 $run eval "$cmd"
4678 if test $? != 0 && test "$rmforce" != yes; then
4679 exit_status=1
4681 done
4682 IFS="$save_ifs"
4685 if test -n "$old_library"; then
4686 # Do each command in the old_postuninstall commands.
4687 eval cmds=\"$old_postuninstall_cmds\"
4688 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
4689 for cmd in $cmds; do
4690 IFS="$save_ifs"
4691 $show "$cmd"
4692 $run eval "$cmd"
4693 if test $? != 0 && test "$rmforce" != yes; then
4694 exit_status=1
4696 done
4697 IFS="$save_ifs"
4699 # FIXME: should reinstall the best remaining shared library.
4704 *.lo)
4705 if test "$build_old_libs" = yes; then
4706 oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
4707 rmfiles="$rmfiles $dir/$oldobj"
4712 # Do a test to see if this is a libtool program.
4713 if test $mode = clean &&
4714 (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
4715 relink_command=
4716 . $dir/$file
4718 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
4719 if test "$fast_install" = yes && test -n "$relink_command"; then
4720 rmfiles="$rmfiles $objdir/lt-$name"
4724 esac
4725 $show "$rm $rmfiles"
4726 $run $rm $rmfiles || exit_status=1
4727 done
4729 # Try to remove the ${objdir}s in the directories where we deleted files
4730 for dir in $rmdirs; do
4731 if test -d "$dir"; then
4732 $show "rmdir $dir"
4733 $run rmdir $dir >/dev/null 2>&1
4735 done
4737 exit $exit_status
4741 $echo "$modename: you must specify a MODE" 1>&2
4742 $echo "$generic_help" 1>&2
4743 exit 1
4745 esac
4747 $echo "$modename: invalid operation mode \`$mode'" 1>&2
4748 $echo "$generic_help" 1>&2
4749 exit 1
4750 fi # test -z "$show_help"
4752 # We need to display help for each of the modes.
4753 case $mode in
4754 "") $echo \
4755 "Usage: $modename [OPTION]... [MODE-ARG]...
4757 Provide generalized library-building support services.
4759 --config show all configuration variables
4760 --debug enable verbose shell tracing
4761 -n, --dry-run display commands without modifying any files
4762 --features display basic configuration information and exit
4763 --finish same as \`--mode=finish'
4764 --help display this help message and exit
4765 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
4766 --quiet same as \`--silent'
4767 --silent don't print informational messages
4768 --version print version information
4770 MODE must be one of the following:
4772 clean remove files from the build directory
4773 compile compile a source file into a libtool object
4774 execute automatically set library path, then run a program
4775 finish complete the installation of libtool libraries
4776 install install libraries or executables
4777 link create a library or an executable
4778 uninstall remove libraries from an installed directory
4780 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
4781 a more detailed description of MODE."
4782 exit 0
4785 clean)
4786 $echo \
4787 "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
4789 Remove files from the build directory.
4791 RM is the name of the program to use to delete files associated with each FILE
4792 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
4793 to RM.
4795 If FILE is a libtool library, object or program, all the files associated
4796 with it are deleted. Otherwise, only FILE itself is deleted using RM."
4799 compile)
4800 $echo \
4801 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
4803 Compile a source file into a libtool library object.
4805 This mode accepts the following additional options:
4807 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
4808 -prefer-pic try to building PIC objects only
4809 -prefer-non-pic try to building non-PIC objects only
4810 -static always build a \`.o' file suitable for static linking
4812 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
4813 from the given SOURCEFILE.
4815 The output file name is determined by removing the directory component from
4816 SOURCEFILE, then substituting the C source code suffix \`.c' with the
4817 library object suffix, \`.lo'."
4820 execute)
4821 $echo \
4822 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
4824 Automatically set library path, then run a program.
4826 This mode accepts the following additional options:
4828 -dlopen FILE add the directory containing FILE to the library path
4830 This mode sets the library path environment variable according to \`-dlopen'
4831 flags.
4833 If any of the ARGS are libtool executable wrappers, then they are translated
4834 into their corresponding uninstalled binary, and any of their required library
4835 directories are added to the library path.
4837 Then, COMMAND is executed, with ARGS as arguments."
4840 finish)
4841 $echo \
4842 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
4844 Complete the installation of libtool libraries.
4846 Each LIBDIR is a directory that contains libtool libraries.
4848 The commands that this mode executes may require superuser privileges. Use
4849 the \`--dry-run' option if you just want to see what would be executed."
4852 install)
4853 $echo \
4854 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
4856 Install executables or libraries.
4858 INSTALL-COMMAND is the installation command. The first component should be
4859 either the \`install' or \`cp' program.
4861 The rest of the components are interpreted as arguments to that command (only
4862 BSD-compatible install options are recognized)."
4865 link)
4866 $echo \
4867 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
4869 Link object files or libraries together to form another library, or to
4870 create an executable program.
4872 LINK-COMMAND is a command using the C compiler that you would use to create
4873 a program from several object files.
4875 The following components of LINK-COMMAND are treated specially:
4877 -all-static do not do any dynamic linking at all
4878 -avoid-version do not add a version suffix if possible
4879 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
4880 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
4881 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
4882 -export-symbols SYMFILE
4883 try to export only the symbols listed in SYMFILE
4884 -export-symbols-regex REGEX
4885 try to export only the symbols matching REGEX
4886 -LLIBDIR search LIBDIR for required installed libraries
4887 -lNAME OUTPUT-FILE requires the installed library libNAME
4888 -module build a library that can dlopened
4889 -no-fast-install disable the fast-install mode
4890 -no-install link a not-installable executable
4891 -no-undefined declare that a library does not refer to external symbols
4892 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
4893 -release RELEASE specify package release information
4894 -rpath LIBDIR the created library will eventually be installed in LIBDIR
4895 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
4896 -static do not do any dynamic linking of libtool libraries
4897 -version-info CURRENT[:REVISION[:AGE]]
4898 specify library version info [each variable defaults to 0]
4900 All other options (arguments beginning with \`-') are ignored.
4902 Every other argument is treated as a filename. Files ending in \`.la' are
4903 treated as uninstalled libtool libraries, other files are standard or library
4904 object files.
4906 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
4907 only library objects (\`.lo' files) may be specified, and \`-rpath' is
4908 required, except when creating a convenience library.
4910 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
4911 using \`ar' and \`ranlib', or on Windows using \`lib'.
4913 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
4914 is created, otherwise an executable program is created."
4917 uninstall)
4918 $echo \
4919 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
4921 Remove libraries from an installation directory.
4923 RM is the name of the program to use to delete files associated with each FILE
4924 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
4925 to RM.
4927 If FILE is a libtool library, all the files associated with it are deleted.
4928 Otherwise, only FILE itself is deleted using RM."
4932 $echo "$modename: invalid operation mode \`$mode'" 1>&2
4933 $echo "$help" 1>&2
4934 exit 1
4936 esac
4938 echo
4939 $echo "Try \`$modename --help' for more information about other modes."
4941 exit 0
4943 # Local Variables:
4944 # mode:shell-script
4945 # sh-indentation:2
4946 # End: