2001-01-24 Fernando Nasser <fnasser@redhat.com>
[deliverable/binutils-gdb.git] / ltmain.sh
CommitLineData
252b5132
RH
1# ltmain.sh - Provide generalized library-building support services.
2# NOTE: Changing this file will not affect anything until you rerun ltconfig.
3#
6cf86f7f 4# Copyright (C) 1996-2000 Free Software Foundation, Inc.
2031769e 5# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
252b5132
RH
6#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2 of the License, or
10# (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful, but
13# WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15# General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20#
21# As a special exception to the GNU General Public License, if you
22# distribute this file as part of a program that contains a
23# configuration script generated by Autoconf, you may include it under
24# the same distribution terms that you use for the rest of that program.
25
26# Check that we have a working $echo.
27if test "X$1" = X--no-reexec; then
28 # Discard the --no-reexec flag, and continue.
29 shift
30elif test "X$1" = X--fallback-echo; then
2031769e
ILT
31 # Avoid inline document here, it may be left over
32 :
252b5132
RH
33elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
34 # Yippee, $echo works!
35 :
36else
37 # Restart under the correct shell, and then maybe $echo will work.
38 exec $SHELL "$0" --no-reexec ${1+"$@"}
39fi
40
2031769e
ILT
41if test "X$1" = X--fallback-echo; then
42 # used as fallback echo
43 shift
44 cat <<EOF
45$*
46EOF
47 exit 0
48fi
49
252b5132
RH
50# The name of this program.
51progname=`$echo "$0" | sed 's%^.*/%%'`
52modename="$progname"
53
54# Constants.
55PROGRAM=ltmain.sh
56PACKAGE=libtool
6cf86f7f 57VERSION=1.4a
d64552c5 58TIMESTAMP=" (1.641.2.122 2000/09/30 05:27:52)"
252b5132
RH
59
60default_mode=
61help="Try \`$progname --help' for more information."
62magic="%%%MAGIC variable%%%"
63mkdir="mkdir"
64mv="mv -f"
65rm="rm -f"
66
67# Sed substitution that helps us do robust quoting. It backslashifies
68# metacharacters that are still active within double-quoted strings.
69Xsed='sed -e 1s/^X//'
70sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
71SP2NL='tr \040 \012'
2031769e 72NL2SP='tr \015\012 \040\040'
252b5132
RH
73
74# NLS nuisances.
75# Only set LANG and LC_ALL to C if already set.
76# These must not be set unconditionally because not all systems understand
77# e.g. LANG=C (notably SCO).
78# We save the old values to restore during execute mode.
79if test "${LC_ALL+set}" = set; then
80 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
81fi
82if test "${LANG+set}" = set; then
83 save_LANG="$LANG"; LANG=C; export LANG
84fi
85
86if test "$LTCONFIG_VERSION" != "$VERSION"; then
87 echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2
88 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
89 exit 1
90fi
91
92if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
93 echo "$modename: not configured to build any kind of library" 1>&2
94 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
95 exit 1
96fi
97
98# Global variables.
99mode=$default_mode
100nonopt=
101prev=
102prevopt=
103run=
104show="$echo"
105show_help=
106execute_dlfiles=
107lo2o="s/\\.lo\$/.${objext}/"
2031769e 108o2lo="s/\\.${objext}\$/.lo/"
252b5132
RH
109
110# Parse our command line options once, thoroughly.
111while test $# -gt 0
112do
113 arg="$1"
114 shift
115
116 case "$arg" in
117 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
118 *) optarg= ;;
119 esac
120
121 # If the previous option needs an argument, assign it.
122 if test -n "$prev"; then
123 case "$prev" in
124 execute_dlfiles)
125 eval "$prev=\"\$$prev \$arg\""
126 ;;
6cf86f7f
AO
127 tag)
128 tagname="$arg"
129
130 # Check whether tagname contains only valid characters
131 case "$tagname" in
132 *[!-_A-Za-z0-9,/]*)
133 echo "$progname: invalid tag name: $tagname" 1>&2
134 exit 1
135 ;;
136 esac
137
138 if grep "^### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then
139 taglist="$taglist $tagname"
140 # Evaluate the configuration.
141 eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
142 else
143 echo "$progname: ignoring unknown tag $tagname" 1>&2
144 fi
145 ;;
252b5132
RH
146 *)
147 eval "$prev=\$arg"
148 ;;
149 esac
150
151 prev=
152 prevopt=
153 continue
154 fi
155
156 # Have we seen a non-optional argument yet?
157 case "$arg" in
158 --help)
159 show_help=yes
160 ;;
161
162 --version)
163 echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
164 exit 0
165 ;;
166
167 --config)
6cf86f7f
AO
168 sed -n -e '/^### BEGIN LIBTOOL CONFIG/,/^### END LIBTOOL CONFIG/p' < "$0"
169 # Now print the configurations for the tags.
170 for tagname in $taglist; do
171 sed -n -e "/^### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0"
172 done
252b5132
RH
173 exit 0
174 ;;
175
176 --debug)
177 echo "$progname: enabling shell trace mode"
178 set -x
179 ;;
180
181 --dry-run | -n)
182 run=:
183 ;;
184
185 --features)
186 echo "host: $host"
187 if test "$build_libtool_libs" = yes; then
188 echo "enable shared libraries"
189 else
190 echo "disable shared libraries"
191 fi
192 if test "$build_old_libs" = yes; then
193 echo "enable static libraries"
194 else
195 echo "disable static libraries"
196 fi
197 exit 0
198 ;;
199
200 --finish) mode="finish" ;;
201
202 --mode) prevopt="--mode" prev=mode ;;
203 --mode=*) mode="$optarg" ;;
204
205 --quiet | --silent)
206 show=:
207 ;;
208
6cf86f7f
AO
209 --tag) prevopt="--tag" prev=tag ;;
210 --tag=*)
211 set tag "$optarg" ${1+"$@"}
212 shift
213 prev=tag
214 ;;
215
252b5132
RH
216 -dlopen)
217 prevopt="-dlopen"
218 prev=execute_dlfiles
219 ;;
220
221 -*)
222 $echo "$modename: unrecognized option \`$arg'" 1>&2
223 $echo "$help" 1>&2
224 exit 1
225 ;;
226
227 *)
228 nonopt="$arg"
229 break
230 ;;
231 esac
232done
233
234if test -n "$prevopt"; then
235 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
236 $echo "$help" 1>&2
237 exit 1
238fi
239
240if test -z "$show_help"; then
241
242 # Infer the operation mode.
243 if test -z "$mode"; then
244 case "$nonopt" in
245 *cc | *++ | gcc* | *-gcc*)
246 mode=link
247 for arg
248 do
249 case "$arg" in
250 -c)
251 mode=compile
252 break
253 ;;
254 esac
255 done
256 ;;
257 *db | *dbx | *strace | *truss)
258 mode=execute
259 ;;
260 *install*|cp|mv)
261 mode=install
262 ;;
263 *rm)
264 mode=uninstall
265 ;;
266 *)
267 # If we have no mode, but dlfiles were specified, then do execute mode.
268 test -n "$execute_dlfiles" && mode=execute
269
270 # Just use the default operation mode.
271 if test -z "$mode"; then
272 if test -n "$nonopt"; then
273 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
274 else
275 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
276 fi
277 fi
278 ;;
279 esac
280 fi
281
282 # Only execute mode is allowed to have -dlopen flags.
283 if test -n "$execute_dlfiles" && test "$mode" != execute; then
284 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
285 $echo "$help" 1>&2
286 exit 1
287 fi
288
289 # Change the help message to a mode-specific one.
290 generic_help="$help"
291 help="Try \`$modename --help --mode=$mode' for more information."
292
293 # These modes are in order of execution frequency so that they run quickly.
294 case "$mode" in
295 # libtool compile mode
296 compile)
297 modename="$modename: compile"
298 # Get the compilation command and the source file.
299 base_compile=
6cf86f7f 300 prev=
252b5132
RH
301 lastarg=
302 srcfile="$nonopt"
303 suppress_output=
304
305 user_target=no
306 for arg
307 do
6cf86f7f
AO
308 case "$prev" in
309 "") ;;
310 xcompiler)
311 # Aesthetically quote the previous argument.
312 prev=
313 lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
314
315 case "$arg" in
316 # Double-quote args containing other shell metacharacters.
317 # Many Bourne shells cannot handle close brackets correctly
318 # in scan sets, so we specify it separately.
319 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
320 arg="\"$arg\""
321 ;;
322 esac
323
324 # Add the previous argument to base_compile.
325 if test -z "$base_compile"; then
326 base_compile="$lastarg"
327 else
328 base_compile="$base_compile $lastarg"
329 fi
330 continue
331 ;;
332 esac
333
252b5132
RH
334 # Accept any command-line options.
335 case "$arg" in
336 -o)
337 if test "$user_target" != "no"; then
338 $echo "$modename: you cannot specify \`-o' more than once" 1>&2
339 exit 1
340 fi
341 user_target=next
342 ;;
343
344 -static)
345 build_old_libs=yes
346 continue
347 ;;
6cf86f7f
AO
348
349 -prefer-pic)
350 pic_mode=yes
351 continue
352 ;;
353
354 -prefer-non-pic)
355 pic_mode=no
356 continue
357 ;;
358
359 -Xcompiler)
360 prev=xcompiler
361 continue
362 ;;
363
364 -Wc,*)
365 args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
366 lastarg=
367 IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
368 for arg in $args; do
369 IFS="$save_ifs"
370
371 # Double-quote args containing other shell metacharacters.
372 # Many Bourne shells cannot handle close brackets correctly
373 # in scan sets, so we specify it separately.
374 case "$arg" in
375 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
376 arg="\"$arg\""
377 ;;
378 esac
379 lastarg="$lastarg $arg"
380 done
381 IFS="$save_ifs"
382 lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
383
384 # Add the arguments to base_compile.
385 if test -z "$base_compile"; then
386 base_compile="$lastarg"
387 else
388 base_compile="$base_compile $lastarg"
389 fi
390 continue
391 ;;
252b5132
RH
392 esac
393
394 case "$user_target" in
395 next)
396 # The next one is the -o target name
397 user_target=yes
398 continue
399 ;;
400 yes)
401 # We got the output file
402 user_target=set
403 libobj="$arg"
404 continue
405 ;;
406 esac
407
408 # Accept the current argument as the source file.
409 lastarg="$srcfile"
410 srcfile="$arg"
411
412 # Aesthetically quote the previous argument.
413
414 # Backslashify any backslashes, double quotes, and dollar signs.
415 # These are the only characters that are still specially
416 # interpreted inside of double-quoted scrings.
417 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
418
419 # Double-quote args containing other shell metacharacters.
6cf86f7f
AO
420 # Many Bourne shells cannot handle close brackets correctly
421 # in scan sets, so we specify it separately.
252b5132 422 case "$lastarg" in
6cf86f7f 423 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
252b5132
RH
424 lastarg="\"$lastarg\""
425 ;;
426 esac
427
428 # Add the previous argument to base_compile.
429 if test -z "$base_compile"; then
430 base_compile="$lastarg"
431 else
432 base_compile="$base_compile $lastarg"
433 fi
434 done
435
436 case "$user_target" in
437 set)
438 ;;
439 no)
440 # Get the name of the library object.
441 libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
442 ;;
443 *)
444 $echo "$modename: you must specify a target with \`-o'" 1>&2
445 exit 1
446 ;;
447 esac
448
449 # Recognize several different file suffixes.
450 # If the user specifies -o file.o, it is replaced with file.lo
451 xform='[cCFSfmso]'
452 case "$libobj" in
453 *.ada) xform=ada ;;
454 *.adb) xform=adb ;;
455 *.ads) xform=ads ;;
456 *.asm) xform=asm ;;
457 *.c++) xform=c++ ;;
458 *.cc) xform=cc ;;
6cf86f7f 459 *.class) xform=class ;;
252b5132
RH
460 *.cpp) xform=cpp ;;
461 *.cxx) xform=cxx ;;
462 *.f90) xform=f90 ;;
463 *.for) xform=for ;;
6cf86f7f 464 *.java) xform=java ;;
252b5132
RH
465 esac
466
467 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
468
469 case "$libobj" in
470 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
471 *)
472 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
473 exit 1
474 ;;
475 esac
476
6cf86f7f
AO
477 # Infer tagged configuration to use if any are available and
478 # if one wasn't chosen via the "--tag" command line option.
479 # Only attempt this if the compiler in the base compile
480 # command doesn't match the default compiler.
481 if test -n "$available_tags" && test -z "$tagname"; then
482 case $base_compile in
483 "$CC "*) ;;
484 # Blanks in the command may have been stripped by the calling shell,
485 # but not from the CC environment variable when ltconfig was run.
103a2e99 486 "`$echo $CC` "*) ;;
6cf86f7f
AO
487 *)
488 for z in $available_tags; do
489 if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
490 # Evaluate the configuration.
491 eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
492 case $base_compile in
493 "$CC "*)
494 # The compiler in the base compile command matches
495 # the one in the tagged configuration.
496 # Assume this is the tagged configuration we want.
497 tagname=$z
498 break
499 ;;
103a2e99 500 "`$echo $CC` "*)
6cf86f7f
AO
501 tagname=$z
502 break
503 ;;
504 esac
505 fi
506 done
507 # If $tagname still isn't set, then no tagged configuration
508 # was found and let the user know that the "--tag" command
509 # line option must be used.
510 if test -z "$tagname"; then
511 echo "$modename: unable to infer tagged configuration"
512 echo "$modename: specify a tag with \`--tag'" 1>&2
513 exit 1
514# else
515# echo "$modename: using $tagname tagged configuration"
516 fi
517 ;;
518 esac
519 fi
520
521 objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
522 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
523 if test "X$xdir" = "X$obj"; then
524 xdir=
525 else
526 xdir=$xdir/
527 fi
528 lobj=${xdir}$objdir/$objname
529
252b5132
RH
530 if test -z "$base_compile"; then
531 $echo "$modename: you must specify a compilation command" 1>&2
532 $echo "$help" 1>&2
533 exit 1
534 fi
535
536 # Delete any leftover library objects.
537 if test "$build_old_libs" = yes; then
6cf86f7f 538 removelist="$obj $lobj $libobj ${libobj}T"
252b5132 539 else
6cf86f7f 540 removelist="$lobj $libobj ${libobj}T"
252b5132
RH
541 fi
542
543 $run $rm $removelist
544 trap "$run $rm $removelist; exit 1" 1 2 15
545
6cf86f7f
AO
546 # On Cygwin there's no "real" PIC flag so we must build both object types
547 case "$host_os" in
d64552c5 548 cygwin* | mingw* | pw32* | os2*)
6cf86f7f
AO
549 pic_mode=default
550 ;;
551 esac
552 if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
553 # non-PIC code in shared libraries is not supported
554 pic_mode=default
555 fi
556
252b5132
RH
557 # Calculate the filename of the output object if compiler does
558 # not support -o with -c
559 if test "$compiler_c_o" = no; then
d64552c5 560 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
252b5132
RH
561 lockfile="$output_obj.lock"
562 removelist="$removelist $output_obj $lockfile"
563 trap "$run $rm $removelist; exit 1" 1 2 15
564 else
6cf86f7f 565 output_obj=
252b5132
RH
566 need_locks=no
567 lockfile=
568 fi
569
570 # Lock this critical section if it is needed
571 # We use this script file to make the link, it avoids creating a new file
572 if test "$need_locks" = yes; then
103a2e99 573 until $run ln "$0" "$lockfile" 2>/dev/null; do
252b5132
RH
574 $show "Waiting for $lockfile to be removed"
575 sleep 2
576 done
577 elif test "$need_locks" = warn; then
578 if test -f "$lockfile"; then
579 echo "\
580*** ERROR, $lockfile exists and contains:
581`cat $lockfile 2>/dev/null`
582
583This indicates that another process is trying to use the same
584temporary object file, and libtool could not work around it because
585your compiler does not support \`-c' and \`-o' together. If you
586repeat this compilation, it may succeed, by chance, but you had better
587avoid parallel builds (make -j) in this platform, or get a better
588compiler."
589
590 $run $rm $removelist
591 exit 1
592 fi
593 echo $srcfile > "$lockfile"
594 fi
595
596 if test -n "$fix_srcfile_path"; then
597 eval srcfile=\"$fix_srcfile_path\"
598 fi
599
6cf86f7f
AO
600 $run $rm "$libobj" "${libobj}T"
601
602 # Create a libtool object file (analogous to a ".la" file),
603 # but don't create it if we're doing a dry run.
604 test -z "$run" && cat > ${libobj}T <<EOF
605# $libobj - a libtool object file
606# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
607#
608# Please DO NOT delete this file!
609# It is necessary for linking the library.
610
611# Name of the PIC object.
612EOF
613
252b5132
RH
614 # Only build a PIC object if we are building libtool libraries.
615 if test "$build_libtool_libs" = yes; then
616 # Without this assignment, base_compile gets emptied.
617 fbsd_hideous_sh_bug=$base_compile
618
6cf86f7f
AO
619 if test "$pic_mode" != no; then
620 command="$base_compile $srcfile $pic_flag"
621 else
622 # Don't build PIC code
623 command="$base_compile $srcfile"
252b5132 624 fi
6cf86f7f
AO
625
626 if test ! -d ${xdir}$objdir; then
627 $show "$mkdir ${xdir}$objdir"
628 $run $mkdir ${xdir}$objdir
629 status=$?
630 if test $status -ne 0 && test ! -d ${xdir}$objdir; then
631 exit $status
632 fi
633 fi
634
635 if test -z "$output_obj"; then
636 # Place PIC objects in $objdir
637 command="$command -o $lobj"
252b5132
RH
638 fi
639
6cf86f7f
AO
640 $run $rm "$lobj" "$output_obj"
641
252b5132
RH
642 $show "$command"
643 if $run eval "$command"; then :
644 else
645 test -n "$output_obj" && $run $rm $removelist
646 exit 1
647 fi
648
649 if test "$need_locks" = warn &&
650 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
651 echo "\
652*** ERROR, $lockfile contains:
653`cat $lockfile 2>/dev/null`
654
655but it should contain:
656$srcfile
657
658This indicates that another process is trying to use the same
659temporary object file, and libtool could not work around it because
660your compiler does not support \`-c' and \`-o' together. If you
661repeat this compilation, it may succeed, by chance, but you had better
662avoid parallel builds (make -j) in this platform, or get a better
663compiler."
664
665 $run $rm $removelist
666 exit 1
667 fi
668
669 # Just move the object if needed, then go on to compile the next one
6cf86f7f
AO
670 if test -n "$output_obj" && test "x$output_obj" != "x$lobj"; then
671 $show "$mv $output_obj $lobj"
672 if $run $mv $output_obj $lobj; then :
252b5132
RH
673 else
674 error=$?
675 $run $rm $removelist
676 exit $error
677 fi
678 fi
679
6cf86f7f
AO
680 # Append the name of the PIC object to the libtool object file.
681 test -z "$run" && cat >> ${libobj}T <<EOF
682pic_object='$objdir/$objname'
252b5132 683
6cf86f7f 684EOF
252b5132
RH
685
686 # Allow error messages only from the first compilation.
687 suppress_output=' >/dev/null 2>&1'
6cf86f7f
AO
688 else
689 # No PIC object so indicate it doesn't exist in the libtool
690 # object file.
691 test -z "$run" && cat >> ${libobj}T <<EOF
692pic_object=none
693
694EOF
252b5132
RH
695 fi
696
697 # Only build a position-dependent object if we build old libraries.
698 if test "$build_old_libs" = yes; then
6cf86f7f
AO
699 if test "$pic_mode" != yes; then
700 # Don't build PIC code
701 command="$base_compile $srcfile"
702 else
703 command="$base_compile $srcfile $pic_flag"
704 fi
252b5132
RH
705 if test "$compiler_c_o" = yes; then
706 command="$command -o $obj"
252b5132
RH
707 fi
708
709 # Suppress compiler output if we already did a PIC compilation.
710 command="$command$suppress_output"
6cf86f7f 711 $run $rm "$obj" "$output_obj"
252b5132
RH
712 $show "$command"
713 if $run eval "$command"; then :
714 else
715 $run $rm $removelist
716 exit 1
717 fi
718
719 if test "$need_locks" = warn &&
720 test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then
721 echo "\
722*** ERROR, $lockfile contains:
723`cat $lockfile 2>/dev/null`
724
725but it should contain:
726$srcfile
727
728This indicates that another process is trying to use the same
729temporary object file, and libtool could not work around it because
730your compiler does not support \`-c' and \`-o' together. If you
731repeat this compilation, it may succeed, by chance, but you had better
732avoid parallel builds (make -j) in this platform, or get a better
733compiler."
734
735 $run $rm $removelist
736 exit 1
737 fi
738
739 # Just move the object if needed
6cf86f7f 740 if test -n "$output_obj" && test "x$output_obj" != "x$obj"; then
252b5132
RH
741 $show "$mv $output_obj $obj"
742 if $run $mv $output_obj $obj; then :
743 else
744 error=$?
745 $run $rm $removelist
746 exit $error
747 fi
748 fi
749
6cf86f7f
AO
750 # Append the name of the non-PIC object the libtool object file.
751 # Only append if the libtool object file exists.
752 test -z "$run" && cat >> ${libobj}T <<EOF
753# Name of the non-PIC object.
754non_pic_object='$objname'
755
756EOF
757 else
758 # Append the name of the non-PIC object the libtool object file.
759 # Only append if the libtool object file exists.
760 test -z "$run" && cat >> ${libobj}T <<EOF
761# Name of the non-PIC object.
762non_pic_object=none
763
764EOF
252b5132
RH
765 fi
766
6cf86f7f
AO
767 $run $mv "${libobj}T" "${libobj}"
768
252b5132
RH
769 # Unlock the critical section if it was locked
770 if test "$need_locks" != no; then
103a2e99 771 $run $rm "$lockfile"
252b5132
RH
772 fi
773
774 exit 0
775 ;;
776
777 # libtool link mode
6cf86f7f 778 link | relink)
252b5132 779 modename="$modename: link"
252b5132 780 case "$host" in
d64552c5 781 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
252b5132
RH
782 # It is impossible to link a dll without this setting, and
783 # we shouldn't force the makefile maintainer to figure out
784 # which system we are compiling for in order to pass an extra
785 # flag for every libtool invokation.
786 # allow_undefined=no
787
788 # FIXME: Unfortunately, there are problems with the above when trying
789 # to make a dll which has undefined symbols, in which case not
790 # even a static library is built. For now, we need to specify
791 # -no-undefined on the libtool link line when we can be certain
792 # that all symbols are satisfied, otherwise we get a static library.
793 allow_undefined=yes
252b5132
RH
794 ;;
795 *)
796 allow_undefined=yes
797 ;;
798 esac
6cf86f7f
AO
799 libtool_args="$nonopt"
800 base_compile="$nonopt"
2031769e
ILT
801 compile_command="$nonopt"
802 finalize_command="$nonopt"
252b5132
RH
803
804 compile_rpath=
805 finalize_rpath=
806 compile_shlibpath=
807 finalize_shlibpath=
808 convenience=
809 old_convenience=
810 deplibs=
6cf86f7f
AO
811 old_deplibs=
812 compiler_flags=
813 linker_flags=
814 dllsearchpath=
815 lib_search_path=`pwd`
252b5132 816
252b5132
RH
817 avoid_version=no
818 dlfiles=
819 dlprefiles=
820 dlself=no
821 export_dynamic=no
822 export_symbols=
823 export_symbols_regex=
824 generated=
825 libobjs=
252b5132
RH
826 ltlibs=
827 module=no
6cf86f7f 828 no_install=no
252b5132 829 objs=
6cf86f7f 830 non_pic_objects=
2031769e 831 prefer_static_libs=no
252b5132
RH
832 preload=no
833 prev=
834 prevarg=
835 release=
836 rpath=
837 xrpath=
838 perm_rpath=
839 temp_rpath=
840 thread_safe=no
841 vinfo=
842
843 # We need to know -static, to get the right output filenames.
844 for arg
845 do
846 case "$arg" in
847 -all-static | -static)
2031769e
ILT
848 if test "X$arg" = "X-all-static"; then
849 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
252b5132 850 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
2031769e
ILT
851 fi
852 if test -n "$link_static_flag"; then
853 dlopen_self=$dlopen_self_static
854 fi
855 else
856 if test -z "$pic_flag" && test -n "$link_static_flag"; then
857 dlopen_self=$dlopen_self_static
858 fi
252b5132
RH
859 fi
860 build_libtool_libs=no
861 build_old_libs=yes
2031769e 862 prefer_static_libs=yes
252b5132
RH
863 break
864 ;;
865 esac
866 done
867
868 # See if our shared archives depend on static archives.
869 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
870
871 # Go through the arguments, transforming them on the way.
872 while test $# -gt 0; do
873 arg="$1"
6cf86f7f 874 base_compile="$base_compile $arg"
252b5132 875 shift
6cf86f7f
AO
876 case "$arg" in
877 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
878 qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
879 ;;
880 *) qarg=$arg ;;
881 esac
882 libtool_args="$libtool_args $qarg"
252b5132
RH
883
884 # If the previous option needs an argument, assign it.
885 if test -n "$prev"; then
886 case "$prev" in
887 output)
888 compile_command="$compile_command @OUTPUT@"
889 finalize_command="$finalize_command @OUTPUT@"
890 ;;
891 esac
892
893 case "$prev" in
894 dlfiles|dlprefiles)
895 if test "$preload" = no; then
896 # Add the symbol object into the linking commands.
897 compile_command="$compile_command @SYMFILE@"
898 finalize_command="$finalize_command @SYMFILE@"
899 preload=yes
900 fi
901 case "$arg" in
902 *.la | *.lo) ;; # We handle these cases below.
2031769e
ILT
903 force)
904 if test "$dlself" = no; then
905 dlself=needless
906 export_dynamic=yes
907 fi
908 prev=
909 continue
910 ;;
252b5132
RH
911 self)
912 if test "$prev" = dlprefiles; then
913 dlself=yes
914 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
915 dlself=yes
2031769e
ILT
916 else
917 dlself=needless
918 export_dynamic=yes
252b5132
RH
919 fi
920 prev=
921 continue
922 ;;
923 *)
2031769e
ILT
924 if test "$prev" = dlfiles; then
925 dlfiles="$dlfiles $arg"
926 else
927 dlprefiles="$dlprefiles $arg"
928 fi
252b5132 929 prev=
6cf86f7f 930 continue
252b5132
RH
931 ;;
932 esac
933 ;;
934 expsyms)
935 export_symbols="$arg"
936 if test ! -f "$arg"; then
937 $echo "$modename: symbol file \`$arg' does not exist"
938 exit 1
939 fi
940 prev=
941 continue
942 ;;
943 expsyms_regex)
944 export_symbols_regex="$arg"
945 prev=
946 continue
947 ;;
948 release)
949 release="-$arg"
950 prev=
951 continue
952 ;;
2031769e
ILT
953 rpath | xrpath)
954 # We need an absolute path.
955 case "$arg" in
956 [\\/]* | [A-Za-z]:[\\/]*) ;;
957 *)
958 $echo "$modename: only absolute run-paths are allowed" 1>&2
959 exit 1
960 ;;
961 esac
962 if test "$prev" = rpath; then
963 case "$rpath " in
964 *" $arg "*) ;;
965 *) rpath="$rpath $arg" ;;
966 esac
967 else
968 case "$xrpath " in
969 *" $arg "*) ;;
970 *) xrpath="$xrpath $arg" ;;
971 esac
972 fi
252b5132
RH
973 prev=
974 continue
975 ;;
6cf86f7f
AO
976 xcompiler)
977 compiler_flags="$compiler_flags $qarg"
978 prev=
979 compile_command="$compile_command $qarg"
980 finalize_command="$finalize_command $qarg"
981 continue
982 ;;
983 xlinker)
984 linker_flags="$linker_flags $qarg"
985 compiler_flags="$compiler_flags $wl$qarg"
986 prev=
987 compile_command="$compile_command $wl$qarg"
988 finalize_command="$finalize_command $wl$qarg"
989 continue
990 ;;
252b5132
RH
991 *)
992 eval "$prev=\"\$arg\""
993 prev=
994 continue
995 ;;
996 esac
997 fi
998
999 prevarg="$arg"
1000
1001 case "$arg" in
1002 -all-static)
1003 if test -n "$link_static_flag"; then
1004 compile_command="$compile_command $link_static_flag"
1005 finalize_command="$finalize_command $link_static_flag"
252b5132
RH
1006 fi
1007 continue
1008 ;;
1009
1010 -allow-undefined)
1011 # FIXME: remove this flag sometime in the future.
1012 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1013 continue
1014 ;;
1015
1016 -avoid-version)
1017 avoid_version=yes
1018 continue
1019 ;;
1020
1021 -dlopen)
1022 prev=dlfiles
1023 continue
1024 ;;
1025
1026 -dlpreopen)
1027 prev=dlprefiles
1028 continue
1029 ;;
1030
1031 -export-dynamic)
2031769e
ILT
1032 export_dynamic=yes
1033 continue
252b5132
RH
1034 ;;
1035
1036 -export-symbols | -export-symbols-regex)
1037 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
2031769e 1038 $echo "$modename: not more than one -exported-symbols argument allowed"
252b5132
RH
1039 exit 1
1040 fi
2031769e 1041 if test "X$arg" = "X-export-symbols"; then
252b5132
RH
1042 prev=expsyms
1043 else
1044 prev=expsyms_regex
1045 fi
1046 continue
1047 ;;
1048
103a2e99
AO
1049 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1050 # so, if we see these flags be careful not to treat them like -L
1051 -L[A-Z][A-Z]*:*)
1052 case $with_gcc/$host in
1053 no/*-*-irix*)
1054 compile_command="$compile_command $arg"
1055 finalize_command="$finalize_command $arg"
1056 ;;
1057 esac
1058 continue
1059 ;;
1060
252b5132 1061 -L*)
2031769e
ILT
1062 dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1063 # We need an absolute path.
252b5132 1064 case "$dir" in
2031769e 1065 [\\/]* | [A-Za-z]:[\\/]*) ;;
252b5132 1066 *)
2031769e
ILT
1067 absdir=`cd "$dir" && pwd`
1068 if test -z "$absdir"; then
6cf86f7f
AO
1069 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1070 exit 1
2031769e
ILT
1071 fi
1072 dir="$absdir"
252b5132
RH
1073 ;;
1074 esac
6cf86f7f
AO
1075 case "$deplibs " in
1076 *" -L$dir "*) ;;
1077 *)
1078 deplibs="$deplibs -L$dir"
1079 lib_search_path="$lib_search_path $dir"
1080 ;;
252b5132
RH
1081 esac
1082 case "$host" in
d64552c5 1083 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
252b5132 1084 case ":$dllsearchpath:" in
6cf86f7f
AO
1085 *":$dir:"*) ;;
1086 *) dllsearchpath="$dllsearchpath:$dir";;
252b5132
RH
1087 esac
1088 ;;
1089 esac
6cf86f7f 1090 continue
252b5132
RH
1091 ;;
1092
1093 -l*)
2031769e
ILT
1094 if test "$arg" = "-lc"; then
1095 case "$host" in
d64552c5 1096 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
2031769e
ILT
1097 # These systems don't actually have c library (as such)
1098 continue
1099 ;;
1100 esac
1101 elif test "$arg" = "-lm"; then
1102 case "$host" in
d64552c5 1103 *-*-cygwin* | *-*-pw32* | *-*-beos*)
2031769e
ILT
1104 # These systems don't actually have math library (as such)
1105 continue
1106 ;;
1107 esac
1108 fi
252b5132 1109 deplibs="$deplibs $arg"
6cf86f7f 1110 continue
252b5132
RH
1111 ;;
1112
1113 -module)
2031769e
ILT
1114 module=yes
1115 continue
252b5132 1116 ;;
2031769e 1117
6cf86f7f
AO
1118 -no-fast-install)
1119 fast_install=no
1120 continue
1121 ;;
1122
1123 -no-install)
1124 case "$host" in
d64552c5 1125 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
6cf86f7f
AO
1126 # The PATH hackery in wrapper scripts is required on Windows
1127 # in order for the loader to find any dlls it needs.
1128 $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1129 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1130 fast_install=no
1131 ;;
1132 *-*-rhapsody*)
1133 # rhapsody is a little odd...
1134 deplibs="$deplibs -framework System"
1135 ;;
1136 *)
1137 no_install=yes
1138 ;;
1139 esac
1140 continue
1141 ;;
1142
252b5132
RH
1143 -no-undefined)
1144 allow_undefined=no
1145 continue
1146 ;;
1147
1148 -o) prev=output ;;
1149
1150 -release)
1151 prev=release
1152 continue
1153 ;;
1154
1155 -rpath)
1156 prev=rpath
1157 continue
1158 ;;
1159
1160 -R)
1161 prev=xrpath
1162 continue
1163 ;;
1164
1165 -R*)
2031769e
ILT
1166 dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1167 # We need an absolute path.
1168 case "$dir" in
1169 [\\/]* | [A-Za-z]:[\\/]*) ;;
1170 *)
1171 $echo "$modename: only absolute run-paths are allowed" 1>&2
1172 exit 1
1173 ;;
1174 esac
1175 case "$xrpath " in
1176 *" $dir "*) ;;
1177 *) xrpath="$xrpath $dir" ;;
1178 esac
252b5132
RH
1179 continue
1180 ;;
1181
1182 -static)
103a2e99
AO
1183 # The effects of -static are defined in a previous loop.
1184 # We used to do the same as -all-static on platforms that
1185 # didn't have a PIC flag, but the assumption that the effects
1186 # would be equivalent was wrong. It would break on at least
1187 # Digital Unix and AIX.
252b5132
RH
1188 continue
1189 ;;
1190
1191 -thread-safe)
1192 thread_safe=yes
1193 continue
1194 ;;
1195
1196 -version-info)
1197 prev=vinfo
1198 continue
1199 ;;
1200
6cf86f7f
AO
1201 -Wc,*)
1202 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1203 arg=
1204 IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
1205 for flag in $args; do
1206 IFS="$save_ifs"
1207 case "$flag" in
1208 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1209 flag="\"$flag\""
1210 ;;
1211 esac
1212 arg="$arg $wl$flag"
1213 compiler_flags="$compiler_flags $flag"
1214 done
1215 IFS="$save_ifs"
1216 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1217 ;;
1218
1219 -Wl,*)
1220 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1221 arg=
1222 IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
1223 for flag in $args; do
1224 IFS="$save_ifs"
1225 case "$flag" in
1226 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1227 flag="\"$flag\""
1228 ;;
1229 esac
1230 arg="$arg $wl$flag"
1231 compiler_flags="$compiler_flags $wl$flag"
1232 linker_flags="$linker_flags $flag"
1233 done
1234 IFS="$save_ifs"
1235 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1236 ;;
1237
1238 -Xcompiler)
1239 prev=xcompiler
1240 continue
1241 ;;
1242
1243 -Xlinker)
1244 prev=xlinker
1245 continue
1246 ;;
1247
252b5132
RH
1248 # Some other compiler flag.
1249 -* | +*)
1250 # Unknown arguments in both finalize_command and compile_command need
1251 # to be aesthetically quoted because they are evaled later.
1252 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1253 case "$arg" in
6cf86f7f 1254 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
252b5132
RH
1255 arg="\"$arg\""
1256 ;;
1257 esac
1258 ;;
1259
6cf86f7f 1260 *.$objext)
252b5132
RH
1261 # A standard object.
1262 objs="$objs $arg"
1263 ;;
1264
1265 *.lo)
6cf86f7f
AO
1266 # A libtool-controlled object.
1267
1268 # Check to see that this really is a libtool object.
1269 if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1270 pic_object=
1271 non_pic_object=
1272
1273 # Read the .lo file
1274 # If there is no directory component, then add one.
1275 case "$arg" in
1276 */* | *\\*) . $arg ;;
1277 *) . ./$arg ;;
1278 esac
1279
1280 if test -z "$pic_object" || \
1281 test -z "$non_pic_object" ||
1282 test "$pic_object" = none && \
1283 test "$non_pic_object" = none; then
1284 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1285 exit 1
1286 fi
1287
1288 # Extract subdirectory from the argument.
1289 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1290 if test "X$xdir" = "X$arg"; then
1291 xdir=
252b5132 1292 else
6cf86f7f 1293 xdir="$xdir/"
252b5132 1294 fi
252b5132 1295
6cf86f7f
AO
1296 if test "$pic_object" != none; then
1297 # Prepend the subdirectory the object is found in.
1298 pic_object="$xdir$pic_object"
1299
1300 if test "$prev" = dlfiles; then
1301 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1302 dlfiles="$dlfiles $pic_object"
1303 prev=
1304 continue
1305 else
1306 # If libtool objects are unsupported, then we need to preload.
1307 prev=dlprefiles
1308 fi
1309 fi
1310
1311 # CHECK ME: I think I busted this. -Ossama
1312 if test "$prev" = dlprefiles; then
1313 # Preload the old-style object.
1314 dlprefiles="$dlprefiles $pic_object"
1315 prev=
1316 fi
1317
1318 # A PIC object.
1319 libobjs="$libobjs $pic_object"
1320 arg="$pic_object"
1321 fi
1322
1323 # Non-PIC object.
1324 if test "$non_pic_object" != none; then
1325 # Prepend the subdirectory the object is found in.
1326 non_pic_object="$xdir$non_pic_object"
1327
1328 # A standard non-PIC object
1329 non_pic_objects="$non_pic_objects $non_pic_object"
1330 if test -z "$pic_object" || test "$pic_object" = none ; then
1331 arg="$non_pic_object"
1332 fi
1333 fi
1334 else
1335 # Only an error if not doing a dry-run.
1336 if test -z "$run"; then
1337 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1338 exit 1
1339 else
1340 # Dry-run case.
1341
1342 # Extract subdirectory from the argument.
1343 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1344 if test "X$xdir" = "X$arg"; then
1345 xdir=
1346 else
1347 xdir="$xdir/"
1348 fi
1349
1350 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1351 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1352 libobjs="$libobjs $pic_object"
1353 non_pic_objects="$non_pic_objects $non_pic_object"
1354 fi
252b5132 1355 fi
6cf86f7f
AO
1356 ;;
1357
1358 *.$libext)
1359 # An archive.
1360 deplibs="$deplibs $arg"
1361 old_deplibs="$old_deplibs $arg"
1362 continue
252b5132
RH
1363 ;;
1364
1365 *.la)
1366 # A libtool-controlled library.
1367
6cf86f7f
AO
1368 if test "$prev" = dlfiles; then
1369 # This library was specified with -dlopen.
1370 dlfiles="$dlfiles $arg"
1371 prev=
1372 elif test "$prev" = dlprefiles; then
1373 # The library was specified with -dlpreopen.
1374 dlprefiles="$dlprefiles $arg"
1375 prev=
252b5132 1376 else
6cf86f7f 1377 deplibs="$deplibs $arg"
252b5132 1378 fi
6cf86f7f
AO
1379 continue
1380 ;;
252b5132 1381
6cf86f7f
AO
1382 # Some other compiler argument.
1383 *)
1384 # Unknown arguments in both finalize_command and compile_command need
1385 # to be aesthetically quoted because they are evaled later.
1386 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
252b5132 1387 case "$arg" in
6cf86f7f
AO
1388 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1389 arg="\"$arg\""
1390 ;;
252b5132 1391 esac
6cf86f7f
AO
1392 ;;
1393 esac
252b5132 1394
6cf86f7f
AO
1395 # Now actually substitute the argument into the commands.
1396 if test -n "$arg"; then
1397 compile_command="$compile_command $arg"
1398 finalize_command="$finalize_command $arg"
1399 fi
1400 done
252b5132 1401
6cf86f7f
AO
1402 if test -n "$prev"; then
1403 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1404 $echo "$help" 1>&2
1405 exit 1
1406 fi
252b5132 1407
6cf86f7f
AO
1408 # Infer tagged configuration to use if any are available and
1409 # if one wasn't chosen via the "--tag" command line option.
1410 # Only attempt this if the compiler in the base link
1411 # command doesn't match the default compiler.
1412 if test -n "$available_tags" && test -z "$tagname"; then
1413 case $base_compile in
1414 "$CC "*) ;;
1415 # Blanks in the command may have been stripped by the calling shell,
1416 # but not from the CC environment variable when ltconfig was run.
103a2e99 1417 "`$echo $CC` "*) ;;
6cf86f7f
AO
1418 *)
1419 for z in $available_tags; do
1420 if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
1421 # Evaluate the configuration.
1422 eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
1423 case $base_compile in
1424 "$CC "*)
1425 # The compiler in $compile_command matches
1426 # the one in the tagged configuration.
1427 # Assume this is the tagged configuration we want.
1428 tagname=$z
1429 break
1430 ;;
103a2e99 1431 "`$echo $CC` "*)
6cf86f7f
AO
1432 tagname=$z
1433 break
1434 ;;
1435 esac
1436 fi
1437 done
1438 # If $tagname still isn't set, then no tagged configuration
1439 # was found and let the user know that the "--tag" command
1440 # line option must be used.
1441 if test -z "$tagname"; then
1442 echo "$modename: unable to infer tagged configuration"
1443 echo "$modename: specify a tag with \`--tag'" 1>&2
1444 exit 1
1445# else
1446# echo "$modename: using $tagname tagged configuration"
1447 fi
1448 ;;
1449 esac
1450 fi
1451
1452 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1453 eval arg=\"$export_dynamic_flag_spec\"
1454 compile_command="$compile_command $arg"
1455 finalize_command="$finalize_command $arg"
1456 fi
1457
1458 oldlibs=
1459 # calculate the name of the file, without its directory
1460 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1461 libobjs_save="$libobjs"
1462
1463 if test -n "$shlibpath_var"; then
1464 # get the directories listed in $shlibpath_var
1465 eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
1466 else
1467 shlib_search_path=
1468 fi
1469 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
1470 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
1471
1472 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1473 if test "X$output_objdir" = "X$output"; then
1474 output_objdir="$objdir"
1475 else
1476 output_objdir="$output_objdir/$objdir"
1477 fi
1478 # Create the object directory.
1479 if test ! -d $output_objdir; then
1480 $show "$mkdir $output_objdir"
1481 $run $mkdir $output_objdir
1482 status=$?
1483 if test $status -ne 0 && test ! -d $output_objdir; then
1484 exit $status
1485 fi
1486 fi
1487
1488 # Determine the type of output
1489 case "$output" in
1490 "")
1491 $echo "$modename: you must specify an output file" 1>&2
1492 $echo "$help" 1>&2
1493 exit 1
1494 ;;
1495 *.$libext) linkmode=oldlib ;;
1496 *.lo | *.$objext) linkmode=obj ;;
1497 *.la) linkmode=lib ;;
1498 *) linkmode=prog ;; # Anything else should be a program.
1499 esac
1500
1501 specialdeplibs=
1502 libs=
1503 # Find all interdependent deplibs by searching for libraries
1504 # that are linked more than once (e.g. -la -lb -la)
1505 for deplib in $deplibs; do
1506 case "$libs " in
1507 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1508 esac
1509 libs="$libs $deplib"
1510 done
1511
1512 if test $linkmode = lib; then
1513 libs="$predeps $libs $compiler_lib_search_path $postdeps"
1514 fi
1515
1516 deplibs=
1517 newdependency_libs=
1518 newlib_search_path=
1519 need_relink=no # whether we're linking any uninstalled libtool libraries
1520 uninst_deplibs= # uninstalled libtool libraries
1521 uninst_path= # paths that contain uninstalled libtool libraries
1522 case $linkmode in
1523 lib)
1524 passes="conv link"
1525 for file in $dlfiles $dlprefiles; do
1526 case "$file" in
1527 *.la) ;;
1528 *)
1529 $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
1530 exit 1
1531 ;;
1532 esac
1533 done
1534 ;;
1535 prog)
1536 compile_deplibs=
1537 finalize_deplibs=
1538 alldeplibs=no
1539 newdlfiles=
1540 newdlprefiles=
1541 passes="conv scan dlopen dlpreopen link"
1542 ;;
1543 *) passes="conv"
1544 ;;
1545 esac
1546 for pass in $passes; do
1547 if test "$linkmode,$pass" = "lib,link" ||
1548 test "$linkmode,$pass" = "prog,scan"; then
1549 libs="$deplibs"
1550 deplibs=
1551 fi
1552 if test $linkmode = prog; then
1553 case $pass in
1554 dlopen) libs="$dlfiles" ;;
1555 dlpreopen) libs="$dlprefiles" ;;
1556 link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
1557 esac
1558 fi
1559 if test $pass = dlopen; then
1560 # Collect dlpreopened libraries
1561 save_deplibs="$deplibs"
1562 deplibs=
1563 fi
1564 for deplib in $libs; do
1565 lib=
1566 found=no
1567 case "$deplib" in
1568 -l*)
1569 if test $linkmode != lib && test $linkmode != prog; then
1570 $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
1571 continue
1572 fi
1573 if test $pass = conv; then
1574 deplibs="$deplib $deplibs"
1575 continue
1576 fi
1577 name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
1578 for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
1579 # Search the libtool library
1580 lib="$searchdir/lib${name}.la"
1581 if test -f "$lib"; then
1582 found=yes
1583 break
1584 fi
1585 done
1586 if test "$found" != yes; then
1587 if test "$linkmode,$pass" = "prog,link"; then
1588 compile_deplibs="$deplib $compile_deplibs"
1589 finalize_deplibs="$deplib $finalize_deplibs"
1590 else
1591 deplibs="$deplib $deplibs"
1592 test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
1593 fi
1594 continue
1595 fi
1596 ;;
1597 -L*)
1598 case $linkmode in
1599 lib)
1600 deplibs="$deplib $deplibs"
1601 test $pass = conv && continue
1602 newdependency_libs="$deplib $newdependency_libs"
1603 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1604 ;;
1605 prog)
1606 if test $pass = conv; then
1607 deplibs="$deplib $deplibs"
1608 continue
1609 fi
1610 if test $pass = scan; then
1611 deplibs="$deplib $deplibs"
1612 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1613 else
1614 compile_deplibs="$deplib $compile_deplibs"
1615 finalize_deplibs="$deplib $finalize_deplibs"
1616 fi
1617 ;;
1618 *)
1619 $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
1620 ;;
1621 esac
1622 continue
1623 ;;
1624 -R*)
1625 if test $pass = link; then
1626 dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
1627 # Make sure the xrpath contains only unique directories.
1628 case "$xrpath " in
1629 *" $dir "*) ;;
1630 *) xrpath="$xrpath $dir" ;;
1631 esac
1632 fi
1633 deplibs="$deplib $deplibs"
1634 continue
1635 ;;
1636 *.la) lib="$deplib" ;;
1637 *.$libext)
1638 if test $pass = conv; then
1639 deplibs="$deplib $deplibs"
1640 continue
1641 fi
1642 case $linkmode in
1643 lib)
1644 if test "$deplibs_check_method" != pass_all; then
1645 echo
1646 echo "*** Warning: This library needs some functionality provided by $deplib."
1647 echo "*** I have the capability to make that library automatically link in when"
1648 echo "*** you link to this library. But I can only do this if you have a"
1649 echo "*** shared version of the library, which you do not appear to have."
1650 else
1651 echo
1652 echo "*** Warning: Linking the shared library $output against the"
1653 echo "*** static library $deplib is not portable!"
1654 deplibs="$deplib $deplibs"
1655 fi
1656 continue
1657 ;;
1658 prog)
1659 if test $pass != link; then
1660 deplibs="$deplib $deplibs"
1661 else
1662 compile_deplibs="$deplib $compile_deplibs"
1663 finalize_deplibs="$deplib $finalize_deplibs"
1664 fi
1665 continue
1666 ;;
1667 esac
1668 ;;
1669 *.lo | *.$objext)
1670 if test $pass = conv; then
1671 deplibs="$deplib $deplibs"
1672 elif test $linkmode = prog; then
1673 if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
1674 # If there is no dlopen support or we're linking statically,
1675 # we need to preload.
1676 newdlprefiles="$newdlprefiles $deplib"
1677 compile_deplibs="$deplib $compile_deplibs"
1678 finalize_deplibs="$deplib $finalize_deplibs"
1679 else
1680 newdlfiles="$newdlfiles $deplib"
1681 fi
252b5132 1682 fi
6cf86f7f
AO
1683 continue
1684 ;;
1685 %DEPLIBS%)
1686 alldeplibs=yes
1687 continue
1688 ;;
1689 esac
1690 if test $found = yes || test -f "$lib"; then :
1691 else
1692 $echo "$modename: cannot find the library \`$lib'" 1>&2
1693 exit 1
252b5132
RH
1694 fi
1695
6cf86f7f
AO
1696 # Check to see that this really is a libtool archive.
1697 if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
1698 else
1699 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
1700 exit 1
252b5132
RH
1701 fi
1702
6cf86f7f
AO
1703 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
1704 test "X$ladir" = "X$lib" && ladir="."
1705
1706 dlname=
1707 dlopen=
1708 dlpreopen=
1709 libdir=
1710 library_names=
1711 old_library=
1712 # If the library was installed with an old release of libtool,
1713 # it will not redefine variable installed.
1714 installed=yes
1715
1716 # Read the .la file
1717 case "$lib" in
1718 */* | *\\*) . $lib ;;
1719 *) . ./$lib ;;
1720 esac
1721
1722 if test "$linkmode,$pass" = "lib,link" ||
1723 test "$linkmode,$pass" = "prog,scan" ||
1724 { test $linkmode != prog && test $linkmode != lib; }; then
1725 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
1726 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
1727 fi
1728
1729 if test $pass = conv; then
1730 # only check for convenience libraries
1731 deplibs="$lib $deplibs"
1732 if test -z "$libdir"; then
1733 if test -z "$old_library"; then
1734 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
1735 exit 1
1736 fi
1737 # It is a libtool convenience library, so add in its objects.
1738 convenience="$convenience $ladir/$objdir/$old_library"
1739 old_convenience="$old_convenience $ladir/$objdir/$old_library"
1740 tmp_libs=
1741 for deplib in $dependency_libs; do
1742 deplibs="$deplib $deplibs"
1743 case "$tmp_libs " in
1744 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1745 esac
1746 tmp_libs="$tmp_libs $deplib"
1747 done
1748 elif test $linkmode != prog && test $linkmode != lib; then
1749 $echo "$modename: \`$lib' is not a convenience library" 1>&2
1750 exit 1
1751 fi
252b5132
RH
1752 continue
1753 fi
1754
6cf86f7f
AO
1755 # Get the name of the library we link against.
1756 linklib=
1757 for l in $old_library $library_names; do
1758 linklib="$l"
1759 done
1760 if test -z "$linklib"; then
1761 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
1762 exit 1
1763 fi
1764
252b5132 1765 # This library was specified with -dlopen.
6cf86f7f
AO
1766 if test $pass = dlopen; then
1767 if test -z "$libdir"; then
1768 $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
1769 exit 1
1770 fi
1771 if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
252b5132
RH
1772 # If there is no dlname, no dlopen support or we're linking statically,
1773 # we need to preload.
6cf86f7f 1774 dlprefiles="$dlprefiles $lib"
252b5132 1775 else
6cf86f7f
AO
1776 newdlfiles="$newdlfiles $lib"
1777 fi
1778 continue
1779 fi
1780
1781 # We need an absolute path.
1782 case "$ladir" in
1783 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
1784 *)
1785 abs_ladir=`cd "$ladir" && pwd`
1786 if test -z "$abs_ladir"; then
1787 $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
1788 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
1789 abs_ladir="$ladir"
1790 fi
1791 ;;
1792 esac
1793 laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
1794
1795 # Find the relevant object directory and library name.
1796 if test "X$installed" = Xyes; then
1797 if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
1798 $echo "$modename: warning: library \`$lib' was moved." 1>&2
1799 dir="$ladir"
1800 absdir="$abs_ladir"
1801 libdir="$abs_ladir"
1802 else
1803 dir="$libdir"
1804 absdir="$libdir"
252b5132 1805 fi
6cf86f7f
AO
1806 else
1807 dir="$ladir/$objdir"
1808 absdir="$abs_ladir/$objdir"
1809 # Remove this search path later
1810 uninst_path="$uninst_path $abs_ladir"
252b5132 1811 fi
6cf86f7f 1812 name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
252b5132 1813
6cf86f7f
AO
1814 # This library was specified with -dlpreopen.
1815 if test $pass = dlpreopen; then
1816 if test -z "$libdir"; then
1817 $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
1818 exit 1
1819 fi
252b5132
RH
1820 # Prefer using a static library (so that no silly _DYNAMIC symbols
1821 # are required to link).
1822 if test -n "$old_library"; then
6cf86f7f 1823 newdlprefiles="$newdlprefiles $dir/$old_library"
103a2e99
AO
1824 # Otherwise, use the dlname, so that lt_dlopen finds it.
1825 elif test -n "$dlname"; then
1826 newdlprefiles="$newdlprefiles $dir/$dlname"
252b5132 1827 else
6cf86f7f 1828 newdlprefiles="$newdlprefiles $dir/$linklib"
252b5132 1829 fi
252b5132
RH
1830 fi
1831
6cf86f7f
AO
1832 if test -z "$libdir"; then
1833 # link the convenience library
1834 if test $linkmode = lib; then
1835 deplibs="$dir/$old_library $deplibs"
1836 elif test "$linkmode,$pass" = "prog,link"; then
1837 compile_deplibs="$dir/$old_library $compile_deplibs"
1838 finalize_deplibs="$dir/$old_library $finalize_deplibs"
1839 else
1840 deplibs="$lib $deplibs" # used for prog,scan pass
252b5132 1841 fi
6cf86f7f
AO
1842 continue
1843 fi
252b5132 1844
6cf86f7f
AO
1845 if test $linkmode = prog && test $pass != link; then
1846 newlib_search_path="$newlib_search_path $ladir"
1847 deplibs="$lib $deplibs"
1848
1849 linkalldeplibs=no
1850 if test "$link_all_deplibs" != no || test -z "$library_names" ||
1851 test "$build_libtool_libs" = no; then
1852 linkalldeplibs=yes
1853 fi
1854
1855 tmp_libs=
1856 for deplib in $dependency_libs; do
1857 case "$deplib" in
1858 -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
1859 esac
1860 # Need to link against all dependency_libs?
1861 if test $linkalldeplibs = yes; then
1862 deplibs="$deplib $deplibs"
1863 else
1864 # Need to hardcode shared library paths
1865 # or/and link against static libraries
1866 newdependency_libs="$deplib $newdependency_libs"
252b5132 1867 fi
6cf86f7f
AO
1868 case "$tmp_libs " in
1869 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1870 esac
1871 tmp_libs="$tmp_libs $deplib"
1872 done
1873 continue
1874 fi
1875
1876 if test "$linkmode,$pass" = "prog,link"; then
1877 if test -n "$library_names" &&
6cf86f7f
AO
1878 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
1879 # We need to hardcode the library path
1880 if test -n "$shlibpath_var"; then
1881 # Make sure the rpath contains only unique directories.
1882 case "$temp_rpath " in
1883 *" $dir "*) ;;
1884 *" $absdir "*) ;;
1885 *) temp_rpath="$temp_rpath $dir" ;;
1886 esac
1887 fi
1888
1889 # Hardcode the library path.
1890 # Skip directories that are in the system default run-time
1891 # search path.
1892 case " $sys_lib_dlsearch_path " in
252b5132 1893 *" $absdir "*) ;;
6cf86f7f
AO
1894 *)
1895 case "$compile_rpath " in
1896 *" $absdir "*) ;;
1897 *) compile_rpath="$compile_rpath $absdir"
1898 esac
1899 ;;
252b5132 1900 esac
252b5132 1901
6cf86f7f 1902 case " $sys_lib_dlsearch_path " in
252b5132 1903 *" $libdir "*) ;;
6cf86f7f
AO
1904 *)
1905 case "$finalize_rpath " in
1906 *" $libdir "*) ;;
1907 *) finalize_rpath="$finalize_rpath $libdir"
1908 esac
1909 ;;
252b5132 1910 esac
6cf86f7f 1911 fi
252b5132 1912
6cf86f7f
AO
1913 if test "$alldeplibs" = yes &&
1914 { test "$deplibs_check_method" = pass_all ||
1915 { test "$build_libtool_libs" = yes &&
1916 test -n "$library_names"; }; }; then
1917 # We only need to search for static libraries
1918 continue
1919 fi
1920 fi
1921
1922 link_static=no # Whether the deplib will be linked statically
1923 if test -n "$library_names" &&
1924 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
1925 if test "$installed" = no; then
1926 uninst_deplibs="$uninst_deplibs $lib"
1927 need_relink=yes
1928 fi
1929 # This is a shared library
103a2e99
AO
1930 if test $linkmode = lib &&
1931 test $hardcode_into_libs = yes; then
6cf86f7f
AO
1932 # Hardcode the library path.
1933 # Skip directories that are in the system default run-time
1934 # search path.
1935 case " $sys_lib_dlsearch_path " in
1936 *" $absdir "*) ;;
1937 *)
1938 case "$compile_rpath " in
1939 *" $absdir "*) ;;
1940 *) compile_rpath="$compile_rpath $absdir"
252b5132 1941 esac
6cf86f7f
AO
1942 ;;
1943 esac
1944 case " $sys_lib_dlsearch_path " in
1945 *" $libdir "*) ;;
1946 *)
1947 case "$finalize_rpath " in
1948 *" $libdir "*) ;;
1949 *) finalize_rpath="$finalize_rpath $libdir"
252b5132 1950 esac
6cf86f7f
AO
1951 ;;
1952 esac
1953 fi
1954
1955 if test -n "$old_archive_from_expsyms_cmds"; then
1956 # figure out the soname
1957 set dummy $library_names
1958 realname="$2"
1959 shift; shift
1960 libname=`eval \\$echo \"$libname_spec\"`
1961 if test -n "$soname_spec"; then
1962 eval soname=\"$soname_spec\"
1963 else
1964 soname="$realname"
1965 fi
1966
1967 # Make a new name for the extract_expsyms_cmds to use
1968 newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
1969
1970 # If the library has no export list, then create one now
1971 if test -f "$output_objdir/$soname-def"; then :
1972 else
1973 $show "extracting exported symbol list from \`$soname'"
1974 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
1975 eval cmds=\"$extract_expsyms_cmds\"
1976 for cmd in $cmds; do
1977 IFS="$save_ifs"
1978 $show "$cmd"
1979 $run eval "$cmd" || exit $?
1980 done
1981 IFS="$save_ifs"
1982 fi
1983
1984 # Create $newlib
1985 if test -f "$output_objdir/$newlib"; then :; else
1986 $show "generating import library for \`$soname'"
1987 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
1988 eval cmds=\"$old_archive_from_expsyms_cmds\"
1989 for cmd in $cmds; do
1990 IFS="$save_ifs"
1991 $show "$cmd"
1992 $run eval "$cmd" || exit $?
1993 done
1994 IFS="$save_ifs"
1995 fi
1996 # make sure the library variables are pointing to the new library
1997 dir=$output_objdir
1998 linklib=$newlib
1999 fi
2000
2001 if test $linkmode = prog || test "$mode" != relink; then
2002 add_shlibpath=
2003 add_dir=
2004 add=
2005 lib_linked=yes
2006 case "$hardcode_action" in
2007 immediate | unsupported)
2008 if test "$hardcode_direct" = no; then
2009 add="$dir/$linklib"
2010 elif test "$hardcode_minus_L" = no; then
2011 case "$host" in
2012 *-*-sunos*) add_shlibpath="$dir" ;;
2013 esac
2014 add_dir="-L$dir"
2015 add="-l$name"
2016 elif test "$hardcode_shlibpath_var" = no; then
2017 add_shlibpath="$dir"
2018 add="-l$name"
2019 else
2020 lib_linked=no
2021 fi
2022 ;;
2023 relink)
2024 if test "$hardcode_direct" = yes; then
2025 add="$dir/$linklib"
2026 elif test "$hardcode_minus_L" = yes; then
2027 add_dir="-L$dir"
2028 add="-l$name"
2029 elif test "$hardcode_shlibpath_var" = yes; then
2030 add_shlibpath="$dir"
2031 add="-l$name"
2032 else
2033 lib_linked=no
2034 fi
2035 ;;
2036 *) lib_linked=no ;;
2037 esac
2038
2039 if test "$lib_linked" != yes; then
2040 $echo "$modename: configuration error: unsupported hardcode properties"
2041 exit 1
2042 fi
2043
2044 if test -n "$add_shlibpath"; then
252b5132 2045 case ":$compile_shlibpath:" in
6cf86f7f
AO
2046 *":$add_shlibpath:"*) ;;
2047 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
252b5132 2048 esac
6cf86f7f
AO
2049 fi
2050 if test $linkmode = prog; then
2051 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2052 test -n "$add" && compile_deplibs="$add $compile_deplibs"
252b5132 2053 else
6cf86f7f
AO
2054 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2055 test -n "$add" && deplibs="$add $deplibs"
2056 if test "$hardcode_direct" != yes && \
2057 test "$hardcode_minus_L" != yes && \
2058 test "$hardcode_shlibpath_var" = yes; then
2059 case ":$finalize_shlibpath:" in
2060 *":$libdir:"*) ;;
2061 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2062 esac
2063 fi
252b5132 2064 fi
6cf86f7f 2065 fi
252b5132 2066
6cf86f7f
AO
2067 if test $linkmode = prog || test "$mode" = relink; then
2068 add_shlibpath=
2069 add_dir=
2070 add=
2071 # Finalize command for both is simple: just hardcode it.
252b5132 2072 if test "$hardcode_direct" = yes; then
6cf86f7f 2073 add="$libdir/$linklib"
252b5132 2074 elif test "$hardcode_minus_L" = yes; then
6cf86f7f
AO
2075 add_dir="-L$libdir"
2076 add="-l$name"
252b5132 2077 elif test "$hardcode_shlibpath_var" = yes; then
6cf86f7f
AO
2078 case ":$finalize_shlibpath:" in
2079 *":$libdir:"*) ;;
2080 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
252b5132 2081 esac
6cf86f7f 2082 add="-l$name"
252b5132 2083 else
6cf86f7f
AO
2084 # We cannot seem to hardcode it, guess we'll fake it.
2085 add_dir="-L$libdir"
2086 add="-l$name"
252b5132 2087 fi
252b5132 2088
6cf86f7f
AO
2089 if test $linkmode = prog; then
2090 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2091 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2092 else
2093 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2094 test -n "$add" && deplibs="$add $deplibs"
2095 fi
252b5132 2096 fi
6cf86f7f 2097 elif test $linkmode = prog; then
252b5132
RH
2098 # Here we assume that one of hardcode_direct or hardcode_minus_L
2099 # is not unsupported. This is valid on all known static and
2100 # shared platforms.
2101 if test "$hardcode_direct" != unsupported; then
2102 test -n "$old_library" && linklib="$old_library"
6cf86f7f
AO
2103 compile_deplibs="$dir/$linklib $compile_deplibs"
2104 finalize_deplibs="$dir/$linklib $finalize_deplibs"
252b5132 2105 else
6cf86f7f
AO
2106 compile_deplibs="-l$name -L$dir $compile_deplibs"
2107 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2108 fi
2109 elif test "$build_libtool_libs" = yes; then
2110 # Not a shared library
2111 if test "$deplibs_check_method" != pass_all; then
2112 # We're trying link a shared library against a static one
2113 # but the system doesn't support it.
2114 # Just print a warning and add the library to dependency_libs so
2115 # that the program can be linked against the static library.
2116 echo
2117 echo "*** Warning: This library needs some functionality provided by $lib."
2118 echo "*** I have the capability to make that library automatically link in when"
2119 echo "*** you link to this library. But I can only do this if you have a"
2120 echo "*** shared version of the library, which you do not appear to have."
2121 else
2122 convenience="$convenience $dir/$old_library"
2123 old_convenience="$old_convenience $dir/$old_library"
2124 deplibs="$dir/$old_library $deplibs"
2125 link_static=yes
2126 fi
2127 fi
2128
2129 if test $linkmode = lib; then
2130 if test -n "$dependency_libs" &&
103a2e99 2131 { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
6cf86f7f
AO
2132 test $link_static = yes; }; then
2133 # Extract -R from dependency_libs
2134 temp_deplibs=
2135 for libdir in $dependency_libs; do
2136 case "$libdir" in
2137 -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2138 case " $xrpath " in
2139 *" $temp_xrpath "*) ;;
2140 *) xrpath="$xrpath $temp_xrpath";;
2141 esac;;
2142 *) temp_deplibs="$temp_deplibs $libdir";;
2143 esac
2144 done
2145 dependency_libs="$temp_deplibs"
2146 fi
2147
2148 newlib_search_path="$newlib_search_path $absdir"
2149 # Link against this library
2150 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2151 # ... and its dependency_libs
2152 tmp_libs=
2153 for deplib in $dependency_libs; do
2154 newdependency_libs="$deplib $newdependency_libs"
2155 case "$tmp_libs " in
2156 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2157 esac
2158 tmp_libs="$tmp_libs $deplib"
2159 done
2160
2161 if test $link_all_deplibs != no; then
2162 # Add the search paths of all dependency libraries
2163 for deplib in $dependency_libs; do
2164 case "$deplib" in
2165 -L*) path="$deplib" ;;
2166 *.la)
2167 dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2168 test "X$dir" = "X$deplib" && dir="."
2169 # We need an absolute path.
2170 case "$dir" in
2171 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2172 *)
2173 absdir=`cd "$dir" && pwd`
2174 if test -z "$absdir"; then
2175 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2176 absdir="$dir"
2177 fi
2178 ;;
2179 esac
2180 if grep "^installed=no" $deplib > /dev/null; then
2181 path="-L$absdir/$objdir"
2182 else
2183 eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2184 if test -z "$libdir"; then
2185 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2186 exit 1
2187 fi
2188 if test "$absdir" != "$libdir"; then
2189 $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2190 fi
2191 path="-L$absdir"
2192 fi
2193 ;;
2194 *) continue ;;
2195 esac
2196 case " $deplibs " in
2197 *" $path "*) ;;
2198 *) deplibs="$path $deplibs" ;;
2199 esac
2200 done
2201 fi
2202 fi
2203 done
2204 dependency_libs="$newdependency_libs"
2205 if test $pass = dlpreopen; then
2206 # Link the dlpreopened libraries before other libraries
2207 for deplib in $save_deplibs; do
2208 deplibs="$deplib $deplibs"
2209 done
2210 fi
2211 if test $pass != dlopen; then
2212 if test $pass != conv; then
2213 # Make sure lib_search_path contains only unique directories.
2214 lib_search_path=
2215 for dir in $newlib_search_path; do
2216 case "$lib_search_path " in
2217 *" $dir "*) ;;
2218 *) lib_search_path="$lib_search_path $dir" ;;
2219 esac
2220 done
2221 newlib_search_path=
2222 fi
2223
2224 if test "$linkmode,$pass" != "prog,link"; then
2225 vars="deplibs"
2226 else
2227 vars="compile_deplibs finalize_deplibs"
2228 fi
2229 for var in $vars dependency_libs; do
2230 # Make sure that $var contains only unique libraries
2231 # and add them in reverse order
2232 eval tmp_libs=\"\$$var\"
2233 new_libs=
2234 for deplib in $tmp_libs; do
2235 case "$deplib" in
2236 -L*) new_libs="$deplib $new_libs" ;;
2237 *)
2238 case " $specialdeplibs " in
2239 *" $deplib "*) new_libs="$deplib $new_libs" ;;
2240 *)
2241 case " $new_libs " in
2242 *" $deplib "*) ;;
2243 *) new_libs="$deplib $new_libs" ;;
2244 esac
2245 ;;
2246 esac
2247 ;;
252b5132 2248 esac
6cf86f7f
AO
2249 done
2250 tmp_libs=
2251 for deplib in $new_libs; do
2252 case "$deplib" in
2253 -L*)
2254 case " $tmp_libs " in
2255 *" $deplib "*) ;;
2256 *) tmp_libs="$tmp_libs $deplib" ;;
2257 esac
2258 ;;
2259 *) tmp_libs="$tmp_libs $deplib" ;;
252b5132 2260 esac
6cf86f7f
AO
2261 done
2262 eval $var=\"$tmp_libs\"
2263 done
252b5132
RH
2264 fi
2265 done
6cf86f7f
AO
2266 if test $linkmode = prog; then
2267 dlfiles="$newdlfiles"
2268 dlprefiles="$newdlprefiles"
2031769e
ILT
2269 fi
2270
6cf86f7f
AO
2271 case $linkmode in
2272 oldlib)
252b5132
RH
2273 if test -n "$deplibs"; then
2274 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
2275 fi
2276
2031769e 2277 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
252b5132
RH
2278 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
2279 fi
2280
2281 if test -n "$rpath"; then
2282 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
2283 fi
2284
2285 if test -n "$xrpath"; then
2286 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
2287 fi
2288
2289 if test -n "$vinfo"; then
2290 $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2
2291 fi
2292
2293 if test -n "$release"; then
2294 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
2295 fi
2296
2031769e 2297 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
252b5132
RH
2298 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
2299 fi
2300
2301 # Now set the variables for building old libraries.
2302 build_libtool_libs=no
2303 oldlibs="$output"
6cf86f7f 2304 objs="$objs$old_deplibs"
252b5132
RH
2305 ;;
2306
6cf86f7f 2307 lib)
252b5132
RH
2308 # Make sure we only generate libraries of the form `libNAME.la'.
2309 case "$outputname" in
2310 lib*)
2311 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2312 eval libname=\"$libname_spec\"
2313 ;;
2314 *)
2315 if test "$module" = no; then
2316 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
2317 $echo "$help" 1>&2
2318 exit 1
2319 fi
2320 if test "$need_lib_prefix" != no; then
2321 # Add the "lib" prefix for modules if required
2322 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
2323 eval libname=\"$libname_spec\"
2324 else
2325 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
2326 fi
2327 ;;
2328 esac
2329
252b5132 2330 if test -n "$objs"; then
6cf86f7f
AO
2331 if test "$deplibs_check_method" != pass_all; then
2332 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
2333 exit 1
2334 else
2335 echo
2336 echo "*** Warning: Linking the shared library $output against the non-libtool"
2337 echo "*** objects $objs is not portable!"
2338 libobjs="$libobjs $objs"
2339 fi
252b5132
RH
2340 fi
2341
6cf86f7f
AO
2342 if test "$dlself" != no; then
2343 $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
252b5132
RH
2344 fi
2345
2346 set dummy $rpath
2347 if test $# -gt 2; then
2348 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
2349 fi
2350 install_libdir="$2"
2351
2352 oldlibs=
2353 if test -z "$rpath"; then
2354 if test "$build_libtool_libs" = yes; then
2355 # Building a libtool convenience library.
6cf86f7f
AO
2356 # Some compilers have problems with a `.al' extension so
2357 # convenience libraries should have the same extension an
2358 # archive normally would.
252b5132
RH
2359 oldlibs="$output_objdir/$libname.$libext $oldlibs"
2360 build_libtool_libs=convenience
2361 build_old_libs=yes
2362 fi
252b5132
RH
2363
2364 if test -n "$vinfo"; then
2365 $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
2366 fi
2367
2368 if test -n "$release"; then
2369 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
2370 fi
2371 else
2372
2373 # Parse the version information argument.
2374 IFS="${IFS= }"; save_ifs="$IFS"; IFS=':'
2375 set dummy $vinfo 0 0 0
2376 IFS="$save_ifs"
2377
2378 if test -n "$8"; then
2379 $echo "$modename: too many parameters to \`-version-info'" 1>&2
2380 $echo "$help" 1>&2
2381 exit 1
2382 fi
2383
2384 current="$2"
2385 revision="$3"
2386 age="$4"
2387
2388 # Check that each of the things are valid numbers.
2389 case "$current" in
2390 0 | [1-9] | [1-9][0-9]*) ;;
2391 *)
2392 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
2393 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2394 exit 1
2395 ;;
2396 esac
2397
2398 case "$revision" in
2399 0 | [1-9] | [1-9][0-9]*) ;;
2400 *)
2401 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
2402 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2403 exit 1
2404 ;;
2405 esac
2406
2407 case "$age" in
2408 0 | [1-9] | [1-9][0-9]*) ;;
2409 *)
2410 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
2411 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2412 exit 1
2413 ;;
2414 esac
2415
2416 if test $age -gt $current; then
2417 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
2418 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2419 exit 1
2420 fi
2421
2422 # Calculate the version variables.
2423 major=
2424 versuffix=
2425 verstring=
2426 case "$version_type" in
2427 none) ;;
2428
2429 irix)
2430 major=`expr $current - $age + 1`
252b5132
RH
2431 verstring="sgi$major.$revision"
2432
2433 # Add in all the interfaces that we are compatible with.
2434 loop=$revision
2435 while test $loop != 0; do
2436 iface=`expr $revision - $loop`
2437 loop=`expr $loop - 1`
2438 verstring="sgi$major.$iface:$verstring"
2439 done
6cf86f7f
AO
2440
2441 # Before this point, $major must not contain `.'.
2442 major=.$major
2443 versuffix="$major.$revision"
252b5132
RH
2444 ;;
2445
2446 linux)
2447 major=.`expr $current - $age`
2448 versuffix="$major.$age.$revision"
2449 ;;
2450
2451 osf)
2452 major=`expr $current - $age`
2453 versuffix=".$current.$age.$revision"
2454 verstring="$current.$age.$revision"
2455
2456 # Add in all the interfaces that we are compatible with.
2457 loop=$age
2458 while test $loop != 0; do
2459 iface=`expr $current - $loop`
2460 loop=`expr $loop - 1`
2461 verstring="$verstring:${iface}.0"
2462 done
2463
2464 # Make executables depend on our current version.
2465 verstring="$verstring:${current}.0"
2466 ;;
2467
2468 sunos)
2469 major=".$current"
2470 versuffix=".$current.$revision"
2471 ;;
2472
2473 freebsd-aout)
2474 major=".$current"
2475 versuffix=".$current.$revision";
2476 ;;
2477
2478 freebsd-elf)
2479 major=".$current"
2480 versuffix=".$current";
2481 ;;
2482
2483 windows)
d64552c5
AO
2484 # Use '-' rather than '.', since we only want one
2485 # extension on DOS 8.3 filesystems.
252b5132 2486 major=`expr $current - $age`
d64552c5 2487 versuffix="-$major"
252b5132
RH
2488 ;;
2489
2490 *)
2491 $echo "$modename: unknown library version type \`$version_type'" 1>&2
2492 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
2493 exit 1
2494 ;;
2495 esac
2496
2497 # Clear the version info if we defaulted, and they specified a release.
2498 if test -z "$vinfo" && test -n "$release"; then
2499 major=
2500 verstring="0.0"
2501 if test "$need_version" = no; then
2502 versuffix=
2503 else
2504 versuffix=".0.0"
2505 fi
2506 fi
2507
2508 # Remove version info from name if versioning should be avoided
2509 if test "$avoid_version" = yes && test "$need_version" = no; then
2510 major=
2511 versuffix=
2512 verstring=""
2513 fi
6cf86f7f 2514
252b5132
RH
2515 # Check to see if the archive will have undefined symbols.
2516 if test "$allow_undefined" = yes; then
2517 if test "$allow_undefined_flag" = unsupported; then
2518 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
2519 build_libtool_libs=no
2520 build_old_libs=yes
2521 fi
2522 else
2523 # Don't allow undefined symbols.
2524 allow_undefined_flag="$no_undefined_flag"
2525 fi
252b5132
RH
2526 fi
2527
6cf86f7f
AO
2528 if test "$mode" != relink; then
2529 # Remove our outputs, but don't remove object files since they
2530 # may have been created when compiling PIC objects.
2531 removelist=
2532 tempremovelist=`echo "$output_objdir/*"`
2533 for p in $tempremovelist; do
2534 case "$p" in
2535 *.$objext)
2536 ;;
2537 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
2538 removelist="$removelist $p"
2539 ;;
2540 *) ;;
2541 esac
2542 done
2543 if test -n "$removelist"; then
2544 $show "${rm}r $removelist"
2545 $run ${rm}r $removelist
2546 fi
252b5132
RH
2547 fi
2548
2549 # Now set the variables for building old libraries.
2550 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
2551 oldlibs="$oldlibs $output_objdir/$libname.$libext"
2552
2553 # Transform .lo files to .o files.
2554 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
2555 fi
2556
6cf86f7f
AO
2557 # Eliminate all temporary directories.
2558 for path in $uninst_path; do
2559 lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
2560 deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
2561 dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
2562 done
2563
2564 if test -n "$xrpath"; then
2565 # If the user specified any rpath flags, then add them.
2566 temp_xrpath=
2567 for libdir in $xrpath; do
2568 temp_xrpath="$temp_xrpath -R$libdir"
2569 case "$finalize_rpath " in
2570 *" $libdir "*) ;;
2571 *) finalize_rpath="$finalize_rpath $libdir" ;;
2572 esac
2573 done
103a2e99 2574 if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
6cf86f7f
AO
2575 dependency_libs="$temp_xrpath $dependency_libs"
2576 fi
2577 fi
2578
2579 # Make sure dlfiles contains only unique files that won't be dlpreopened
2580 old_dlfiles="$dlfiles"
2581 dlfiles=
2582 for lib in $old_dlfiles; do
2583 case " $dlprefiles $dlfiles " in
2584 *" $lib "*) ;;
2585 *) dlfiles="$dlfiles $lib" ;;
2586 esac
2587 done
2588
2589 # Make sure dlprefiles contains only unique files
2590 old_dlprefiles="$dlprefiles"
2591 dlprefiles=
2592 for lib in $old_dlprefiles; do
2593 case "$dlprefiles " in
2594 *" $lib "*) ;;
2595 *) dlprefiles="$dlprefiles $lib" ;;
2596 esac
2597 done
2598
252b5132 2599 if test "$build_libtool_libs" = yes; then
6cf86f7f
AO
2600 if test -n "$rpath"; then
2601 case "$host" in
d64552c5 2602 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
6cf86f7f
AO
2603 # these systems don't actually have a c library (as such)!
2604 ;;
2605 *)
2606 # Add libc to deplibs on all other systems if necessary.
2607 if test $build_libtool_need_lc = "yes"; then
2608 deplibs="$deplibs -lc"
2609 fi
2610 ;;
2611 esac
2612 fi
2613
252b5132
RH
2614 # Transform deplibs into only deplibs that can be linked in shared.
2615 name_save=$name
2616 libname_save=$libname
2617 release_save=$release
2618 versuffix_save=$versuffix
2619 major_save=$major
2620 # I'm not sure if I'm treating the release correctly. I think
2621 # release should show up in the -l (ie -lgmp5) so we don't want to
2622 # add it in twice. Is that correct?
2623 release=""
2624 versuffix=""
2625 major=""
2626 newdeplibs=
2627 droppeddeps=no
2628 case "$deplibs_check_method" in
2629 pass_all)
2031769e
ILT
2630 # Don't check for shared/static. Everything works.
2631 # This might be a little naive. We might want to check
2632 # whether the library exists or not. But this is on
2633 # osf3 & osf4 and I'm not really sure... Just
2634 # implementing what was already the behaviour.
252b5132 2635 newdeplibs=$deplibs
2031769e 2636 ;;
252b5132
RH
2637 test_compile)
2638 # This code stresses the "libraries are programs" paradigm to its
2639 # limits. Maybe even breaks it. We compile a program, linking it
2640 # against the deplibs as a proxy for the library. Then we can check
2641 # whether they linked in statically or dynamically with ldd.
2642 $rm conftest.c
2643 cat > conftest.c <<EOF
2644 int main() { return 0; }
2645EOF
2646 $rm conftest
6cf86f7f 2647 $LTCC -o conftest conftest.c $deplibs
252b5132
RH
2648 if test $? -eq 0 ; then
2649 ldd_output=`ldd conftest`
2650 for i in $deplibs; do
2651 name="`expr $i : '-l\(.*\)'`"
2652 # If $name is empty we are operating on a -L argument.
2653 if test "$name" != "" ; then
2654 libname=`eval \\$echo \"$libname_spec\"`
2655 deplib_matches=`eval \\$echo \"$library_names_spec\"`
2656 set dummy $deplib_matches
2657 deplib_match=$2
2658 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
2659 newdeplibs="$newdeplibs $i"
2660 else
2661 droppeddeps=yes
2662 echo
2663 echo "*** Warning: This library needs some functionality provided by $i."
2664 echo "*** I have the capability to make that library automatically link in when"
2665 echo "*** you link to this library. But I can only do this if you have a"
2666 echo "*** shared version of the library, which you do not appear to have."
2667 fi
2668 else
2669 newdeplibs="$newdeplibs $i"
2670 fi
2671 done
2672 else
2673 # Error occured in the first compile. Let's try to salvage the situation:
2674 # Compile a seperate program for each library.
2675 for i in $deplibs; do
2676 name="`expr $i : '-l\(.*\)'`"
2677 # If $name is empty we are operating on a -L argument.
2678 if test "$name" != "" ; then
2679 $rm conftest
6cf86f7f 2680 $LTCC -o conftest conftest.c $i
252b5132
RH
2681 # Did it work?
2682 if test $? -eq 0 ; then
2683 ldd_output=`ldd conftest`
2031769e
ILT
2684 libname=`eval \\$echo \"$libname_spec\"`
2685 deplib_matches=`eval \\$echo \"$library_names_spec\"`
2686 set dummy $deplib_matches
2687 deplib_match=$2
2688 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
2689 newdeplibs="$newdeplibs $i"
2690 else
2691 droppeddeps=yes
2692 echo
2693 echo "*** Warning: This library needs some functionality provided by $i."
2694 echo "*** I have the capability to make that library automatically link in when"
2695 echo "*** you link to this library. But I can only do this if you have a"
2696 echo "*** shared version of the library, which you do not appear to have."
2697 fi
252b5132
RH
2698 else
2699 droppeddeps=yes
2700 echo
2701 echo "*** Warning! Library $i is needed by this library but I was not able to"
2702 echo "*** make it link in! You will probably need to install it or some"
2703 echo "*** library that it depends on before this library will be fully"
2704 echo "*** functional. Installing it before continuing would be even better."
2705 fi
2706 else
2707 newdeplibs="$newdeplibs $i"
2708 fi
2709 done
2710 fi
252b5132
RH
2711 ;;
2712 file_magic*)
2713 set dummy $deplibs_check_method
6cf86f7f 2714 file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
252b5132
RH
2715 for a_deplib in $deplibs; do
2716 name="`expr $a_deplib : '-l\(.*\)'`"
2717 # If $name is empty we are operating on a -L argument.
2718 if test "$name" != "" ; then
2719 libname=`eval \\$echo \"$libname_spec\"`
6cf86f7f 2720 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
252b5132
RH
2721 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
2722 for potent_lib in $potential_libs; do
2723 # Follow soft links.
2031769e 2724 if ls -lLd "$potent_lib" 2>/dev/null \
252b5132 2725 | grep " -> " >/dev/null; then
6cf86f7f 2726 continue
252b5132
RH
2727 fi
2728 # The statement above tries to avoid entering an
2729 # endless loop below, in case of cyclic links.
2730 # We might still enter an endless loop, since a link
2731 # loop can be closed while we follow links,
2732 # but so what?
2733 potlib="$potent_lib"
2734 while test -h "$potlib" 2>/dev/null; do
2735 potliblink=`ls -ld $potlib | sed 's/.* -> //'`
2736 case "$potliblink" in
2031769e 2737 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
252b5132
RH
2738 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
2739 esac
2740 done
2031769e 2741 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
252b5132
RH
2742 | sed 10q \
2743 | egrep "$file_magic_regex" > /dev/null; then
2744 newdeplibs="$newdeplibs $a_deplib"
2745 a_deplib=""
2746 break 2
2747 fi
2748 done
2749 done
2750 if test -n "$a_deplib" ; then
2751 droppeddeps=yes
2752 echo
2753 echo "*** Warning: This library needs some functionality provided by $a_deplib."
2754 echo "*** I have the capability to make that library automatically link in when"
2755 echo "*** you link to this library. But I can only do this if you have a"
2756 echo "*** shared version of the library, which you do not appear to have."
2757 fi
2758 else
2759 # Add a -L argument.
2760 newdeplibs="$newdeplibs $a_deplib"
2761 fi
2762 done # Gone through all deplibs.
2763 ;;
2031769e
ILT
2764 none | unknown | *)
2765 newdeplibs=""
252b5132
RH
2766 if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
2767 -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' |
2768 grep . >/dev/null; then
2769 echo
2770 if test "X$deplibs_check_method" = "Xnone"; then
2771 echo "*** Warning: inter-library dependencies are not supported in this platform."
2772 else
2773 echo "*** Warning: inter-library dependencies are not known to be supported."
2774 fi
2775 echo "*** All declared inter-library dependencies are being dropped."
2776 droppeddeps=yes
2777 fi
2778 ;;
2779 esac
2780 versuffix=$versuffix_save
2781 major=$major_save
2782 release=$release_save
2783 libname=$libname_save
2784 name=$name_save
2785
2786 if test "$droppeddeps" = yes; then
2787 if test "$module" = yes; then
2788 echo
2789 echo "*** Warning: libtool could not satisfy all declared inter-library"
2790 echo "*** dependencies of module $libname. Therefore, libtool will create"
2791 echo "*** a static module, that should work as long as the dlopening"
2792 echo "*** application is linked with the -dlopen flag."
2793 if test -z "$global_symbol_pipe"; then
2794 echo
2795 echo "*** However, this would only work if libtool was able to extract symbol"
2796 echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2797 echo "*** not find such a program. So, this module is probably useless."
2798 echo "*** \`nm' from GNU binutils and a full rebuild may help."
2799 fi
2800 if test "$build_old_libs" = no; then
2801 oldlibs="$output_objdir/$libname.$libext"
2802 build_libtool_libs=module
2803 build_old_libs=yes
2804 else
2805 build_libtool_libs=no
2806 fi
252b5132
RH
2807 else
2808 echo "*** The inter-library dependencies that have been dropped here will be"
2809 echo "*** automatically added whenever a program is linked with this library"
2810 echo "*** or is declared to -dlopen it."
2811 fi
2812 fi
2031769e
ILT
2813 # Done checking deplibs!
2814 deplibs=$newdeplibs
252b5132
RH
2815 fi
2816
2031769e
ILT
2817 # All the library-specific variables (install_libdir is set above).
2818 library_names=
2819 old_library=
2820 dlname=
6cf86f7f 2821
2031769e 2822 # Test again, we may have decided not to build it any more
252b5132 2823 if test "$build_libtool_libs" = yes; then
103a2e99 2824 if test $hardcode_into_libs = yes; then
6cf86f7f
AO
2825 # Hardcode the library paths
2826 hardcode_libdirs=
2827 dep_rpath=
2828 rpath="$finalize_rpath"
2829 test "$mode" != relink && rpath="$compile_rpath$rpath"
2830 for libdir in $rpath; do
2831 if test -n "$hardcode_libdir_flag_spec"; then
2832 if test -n "$hardcode_libdir_separator"; then
2833 if test -z "$hardcode_libdirs"; then
2834 hardcode_libdirs="$libdir"
2835 else
2836 # Just accumulate the unique libdirs.
2837 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
2838 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
2839 ;;
2840 *)
2841 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
2842 ;;
2843 esac
2844 fi
2845 else
2846 eval flag=\"$hardcode_libdir_flag_spec\"
2847 dep_rpath="$dep_rpath $flag"
2848 fi
2849 elif test -n "$runpath_var"; then
2850 case "$perm_rpath " in
2851 *" $libdir "*) ;;
2852 *) perm_rpath="$perm_rpath $libdir" ;;
2853 esac
2854 fi
2855 done
2856 # Substitute the hardcoded libdirs into the rpath.
2857 if test -n "$hardcode_libdir_separator" &&
2858 test -n "$hardcode_libdirs"; then
2859 libdir="$hardcode_libdirs"
2860 eval dep_rpath=\"$hardcode_libdir_flag_spec\"
2861 fi
2862 if test -n "$runpath_var" && test -n "$perm_rpath"; then
2863 # We should set the runpath_var.
2864 rpath=
2865 for dir in $perm_rpath; do
2866 rpath="$rpath$dir:"
2867 done
2868 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
2869 fi
2870 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
2871 fi
2872
2873 shlibpath="$finalize_shlibpath"
2874 test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
2875 if test -n "$shlibpath"; then
2876 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
2877 fi
2878
252b5132
RH
2879 # Get the real and link names of the library.
2880 eval library_names=\"$library_names_spec\"
2881 set dummy $library_names
2882 realname="$2"
2883 shift; shift
2884
2885 if test -n "$soname_spec"; then
2886 eval soname=\"$soname_spec\"
2887 else
2888 soname="$realname"
2889 fi
2890
2891 lib="$output_objdir/$realname"
2892 for link
2893 do
2894 linknames="$linknames $link"
2895 done
2896
6cf86f7f
AO
2897# # Ensure that we have .o objects for linkers which dislike .lo
2898# # (e.g. aix) in case we are running --disable-static
2899# for obj in $libobjs; do
2900# xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
2901# if test "X$xdir" = "X$obj"; then
2902# xdir="."
2903# else
2904# xdir="$xdir"
2905# fi
2906# baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
2907# oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
2908# if test ! -f $xdir/$oldobj && test "$baseobj" != "$oldobj"; then
2909# $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
2910# $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
2911# fi
2912# done
252b5132
RH
2913
2914 # Use standard objects if they are pic
2915 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
2916
252b5132
RH
2917 # Prepare the list of exported symbols
2918 if test -z "$export_symbols"; then
2919 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
2920 $show "generating symbol list for \`$libname.la'"
2031769e 2921 export_symbols="$output_objdir/$libname.exp"
252b5132
RH
2922 $run $rm $export_symbols
2923 eval cmds=\"$export_symbols_cmds\"
2924 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
2925 for cmd in $cmds; do
2926 IFS="$save_ifs"
2927 $show "$cmd"
2928 $run eval "$cmd" || exit $?
2929 done
2930 IFS="$save_ifs"
2931 if test -n "$export_symbols_regex"; then
2932 $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
2933 $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
2934 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
2935 $run eval '$mv "${export_symbols}T" "$export_symbols"'
2936 fi
2937 fi
2938 fi
2939
2940 if test -n "$export_symbols" && test -n "$include_expsyms"; then
2941 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
2942 fi
2943
2031769e
ILT
2944 if test -n "$convenience"; then
2945 if test -n "$whole_archive_flag_spec"; then
2946 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
2947 else
2948 gentop="$output_objdir/${outputname}x"
2949 $show "${rm}r $gentop"
2950 $run ${rm}r "$gentop"
6cf86f7f
AO
2951 $show "$mkdir $gentop"
2952 $run $mkdir "$gentop"
2031769e
ILT
2953 status=$?
2954 if test $status -ne 0 && test ! -d "$gentop"; then
2955 exit $status
2956 fi
2957 generated="$generated $gentop"
2958
2959 for xlib in $convenience; do
2960 # Extract the objects.
2961 case "$xlib" in
2962 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
2963 *) xabs=`pwd`"/$xlib" ;;
2964 esac
2965 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
2966 xdir="$gentop/$xlib"
2967
2968 $show "${rm}r $xdir"
2969 $run ${rm}r "$xdir"
6cf86f7f
AO
2970 $show "$mkdir $xdir"
2971 $run $mkdir "$xdir"
2031769e
ILT
2972 status=$?
2973 if test $status -ne 0 && test ! -d "$xdir"; then
2974 exit $status
2975 fi
2976 $show "(cd $xdir && $AR x $xabs)"
2977 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
2978
6cf86f7f 2979 libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
2031769e
ILT
2980 done
2981 fi
2982 fi
2983
2984 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
2985 eval flag=\"$thread_safe_flag_spec\"
6cf86f7f
AO
2986 linker_flags="$linker_flags $flag"
2987 fi
2988
2989 # Make a backup of the uninstalled library when relinking
103a2e99 2990 if test "$mode" = relink; then
6cf86f7f 2991 $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
2031769e
ILT
2992 fi
2993
252b5132
RH
2994 # Do each of the archive commands.
2995 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
2996 eval cmds=\"$archive_expsym_cmds\"
2997 else
2998 eval cmds=\"$archive_cmds\"
2999 fi
3000 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3001 for cmd in $cmds; do
3002 IFS="$save_ifs"
3003 $show "$cmd"
3004 $run eval "$cmd" || exit $?
3005 done
3006 IFS="$save_ifs"
3007
6cf86f7f 3008 # Restore the uninstalled library and exit
103a2e99 3009 if test "$mode" = relink; then
6cf86f7f
AO
3010 $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
3011 exit 0
3012 fi
3013
252b5132
RH
3014 # Create links to the real library.
3015 for linkname in $linknames; do
3016 if test "$realname" != "$linkname"; then
3017 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
3018 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
3019 fi
3020 done
3021
3022 # If -module or -export-dynamic was specified, set the dlname.
3023 if test "$module" = yes || test "$export_dynamic" = yes; then
3024 # On all known operating systems, these are identical.
3025 dlname="$soname"
3026 fi
3027 fi
3028 ;;
3029
6cf86f7f 3030 obj)
252b5132
RH
3031 if test -n "$deplibs"; then
3032 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
3033 fi
3034
2031769e 3035 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
252b5132
RH
3036 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
3037 fi
3038
3039 if test -n "$rpath"; then
3040 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
3041 fi
3042
3043 if test -n "$xrpath"; then
3044 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
3045 fi
3046
3047 if test -n "$vinfo"; then
3048 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
3049 fi
3050
3051 if test -n "$release"; then
3052 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
3053 fi
3054
3055 case "$output" in
3056 *.lo)
6cf86f7f 3057 if test -n "$objs$old_deplibs"; then
252b5132
RH
3058 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
3059 exit 1
3060 fi
3061 libobj="$output"
3062 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
3063 ;;
3064 *)
3065 libobj=
3066 obj="$output"
3067 ;;
3068 esac
3069
3070 # Delete the old objects.
3071 $run $rm $obj $libobj
3072
2031769e
ILT
3073 # Objects from convenience libraries. This assumes
3074 # single-version convenience libraries. Whenever we create
3075 # different ones for PIC/non-PIC, this we'll have to duplicate
3076 # the extraction.
3077 reload_conv_objs=
3078 gentop=
3079 # reload_cmds runs $LD directly, so let us get rid of
3080 # -Wl from whole_archive_flag_spec
6cf86f7f 3081 wl=
2031769e
ILT
3082
3083 if test -n "$convenience"; then
3084 if test -n "$whole_archive_flag_spec"; then
3085 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
3086 else
3087 gentop="$output_objdir/${obj}x"
3088 $show "${rm}r $gentop"
3089 $run ${rm}r "$gentop"
6cf86f7f
AO
3090 $show "$mkdir $gentop"
3091 $run $mkdir "$gentop"
2031769e
ILT
3092 status=$?
3093 if test $status -ne 0 && test ! -d "$gentop"; then
3094 exit $status
3095 fi
3096 generated="$generated $gentop"
3097
3098 for xlib in $convenience; do
3099 # Extract the objects.
3100 case "$xlib" in
3101 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
3102 *) xabs=`pwd`"/$xlib" ;;
3103 esac
3104 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
3105 xdir="$gentop/$xlib"
3106
3107 $show "${rm}r $xdir"
3108 $run ${rm}r "$xdir"
6cf86f7f
AO
3109 $show "$mkdir $xdir"
3110 $run $mkdir "$xdir"
2031769e
ILT
3111 status=$?
3112 if test $status -ne 0 && test ! -d "$xdir"; then
3113 exit $status
3114 fi
3115 $show "(cd $xdir && $AR x $xabs)"
3116 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
3117
6cf86f7f 3118 reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
2031769e
ILT
3119 done
3120 fi
3121 fi
3122
252b5132 3123 # Create the old-style object.
6cf86f7f 3124 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
252b5132
RH
3125
3126 output="$obj"
3127 eval cmds=\"$reload_cmds\"
3128 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3129 for cmd in $cmds; do
3130 IFS="$save_ifs"
3131 $show "$cmd"
3132 $run eval "$cmd" || exit $?
3133 done
3134 IFS="$save_ifs"
3135
3136 # Exit if we aren't doing a library object file.
2031769e
ILT
3137 if test -z "$libobj"; then
3138 if test -n "$gentop"; then
3139 $show "${rm}r $gentop"
3140 $run ${rm}r $gentop
3141 fi
3142
3143 exit 0
3144 fi
252b5132
RH
3145
3146 if test "$build_libtool_libs" != yes; then
2031769e
ILT
3147 if test -n "$gentop"; then
3148 $show "${rm}r $gentop"
3149 $run ${rm}r $gentop
3150 fi
3151
252b5132
RH
3152 # Create an invalid libtool object if no PIC, so that we don't
3153 # accidentally link it into a program.
6cf86f7f
AO
3154 # $show "echo timestamp > $libobj"
3155 # $run eval "echo timestamp > $libobj" || exit $?
252b5132
RH
3156 exit 0
3157 fi
3158
6cf86f7f 3159 if test -n "$pic_flag" || test "$pic_mode" != default; then
252b5132 3160 # Only do commands if we really have different PIC objects.
2031769e 3161 reload_objs="$libobjs $reload_conv_objs"
252b5132
RH
3162 output="$libobj"
3163 eval cmds=\"$reload_cmds\"
3164 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3165 for cmd in $cmds; do
3166 IFS="$save_ifs"
3167 $show "$cmd"
3168 $run eval "$cmd" || exit $?
3169 done
3170 IFS="$save_ifs"
6cf86f7f
AO
3171# else
3172# # Just create a symlink.
3173# $show $rm $libobj
3174# $run $rm $libobj
3175# xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
3176# if test "X$xdir" = "X$libobj"; then
3177# xdir="."
3178# else
3179# xdir="$xdir"
3180# fi
3181# baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
3182# oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
3183# $show "(cd $xdir && $LN_S $oldobj $baseobj)"
3184# $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
2031769e
ILT
3185 fi
3186
3187 if test -n "$gentop"; then
3188 $show "${rm}r $gentop"
3189 $run ${rm}r $gentop
252b5132
RH
3190 fi
3191
3192 exit 0
3193 ;;
3194
6cf86f7f 3195 prog)
252b5132
RH
3196 if test -n "$vinfo"; then
3197 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
3198 fi
3199
3200 if test -n "$release"; then
3201 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
3202 fi
3203
3204 if test "$preload" = yes; then
6cf86f7f 3205 if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
252b5132
RH
3206 test "$dlopen_self_static" = unknown; then
3207 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
6cf86f7f 3208 fi
252b5132 3209 fi
6cf86f7f
AO
3210
3211 compile_command="$compile_command $compile_deplibs"
3212 finalize_command="$finalize_command $finalize_deplibs"
3213
252b5132
RH
3214 if test -n "$rpath$xrpath"; then
3215 # If the user specified any rpath flags, then add them.
3216 for libdir in $rpath $xrpath; do
3217 # This is the magic to use -rpath.
252b5132
RH
3218 case "$finalize_rpath " in
3219 *" $libdir "*) ;;
3220 *) finalize_rpath="$finalize_rpath $libdir" ;;
3221 esac
3222 done
3223 fi
3224
3225 # Now hardcode the library paths
3226 rpath=
3227 hardcode_libdirs=
3228 for libdir in $compile_rpath $finalize_rpath; do
3229 if test -n "$hardcode_libdir_flag_spec"; then
3230 if test -n "$hardcode_libdir_separator"; then
3231 if test -z "$hardcode_libdirs"; then
3232 hardcode_libdirs="$libdir"
3233 else
3234 # Just accumulate the unique libdirs.
3235 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
3236 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3237 ;;
3238 *)
3239 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3240 ;;
3241 esac
3242 fi
3243 else
3244 eval flag=\"$hardcode_libdir_flag_spec\"
252b5132
RH
3245 rpath="$rpath $flag"
3246 fi
3247 elif test -n "$runpath_var"; then
3248 case "$perm_rpath " in
3249 *" $libdir "*) ;;
3250 *) perm_rpath="$perm_rpath $libdir" ;;
3251 esac
3252 fi
6cf86f7f 3253 case "$host" in
d64552c5 3254 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
6cf86f7f
AO
3255 case ":$dllsearchpath:" in
3256 *":$libdir:"*) ;;
3257 *) dllsearchpath="$dllsearchpath:$libdir";;
3258 esac
3259 ;;
3260 esac
252b5132
RH
3261 done
3262 # Substitute the hardcoded libdirs into the rpath.
3263 if test -n "$hardcode_libdir_separator" &&
3264 test -n "$hardcode_libdirs"; then
3265 libdir="$hardcode_libdirs"
3266 eval rpath=\" $hardcode_libdir_flag_spec\"
3267 fi
3268 compile_rpath="$rpath"
3269
3270 rpath=
3271 hardcode_libdirs=
3272 for libdir in $finalize_rpath; do
3273 if test -n "$hardcode_libdir_flag_spec"; then
3274 if test -n "$hardcode_libdir_separator"; then
3275 if test -z "$hardcode_libdirs"; then
3276 hardcode_libdirs="$libdir"
3277 else
3278 # Just accumulate the unique libdirs.
3279 case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
3280 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3281 ;;
3282 *)
3283 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3284 ;;
3285 esac
3286 fi
3287 else
3288 eval flag=\"$hardcode_libdir_flag_spec\"
252b5132
RH
3289 rpath="$rpath $flag"
3290 fi
3291 elif test -n "$runpath_var"; then
3292 case "$finalize_perm_rpath " in
3293 *" $libdir "*) ;;
3294 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
3295 esac
3296 fi
3297 done
3298 # Substitute the hardcoded libdirs into the rpath.
3299 if test -n "$hardcode_libdir_separator" &&
3300 test -n "$hardcode_libdirs"; then
3301 libdir="$hardcode_libdirs"
3302 eval rpath=\" $hardcode_libdir_flag_spec\"
3303 fi
3304 finalize_rpath="$rpath"
3305
252b5132 3306 dlsyms=
2031769e 3307 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
252b5132
RH
3308 if test -n "$NM" && test -n "$global_symbol_pipe"; then
3309 dlsyms="${outputname}S.c"
3310 else
3311 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
3312 fi
3313 fi
3314
3315 if test -n "$dlsyms"; then
3316 case "$dlsyms" in
3317 "") ;;
3318 *.c)
3319 # Discover the nlist of each of the dlfiles.
2031769e 3320 nlist="$output_objdir/${outputname}.nm"
252b5132 3321
2031769e
ILT
3322 $show "$rm $nlist ${nlist}S ${nlist}T"
3323 $run $rm "$nlist" "${nlist}S" "${nlist}T"
252b5132
RH
3324
3325 # Parse the name list into a source file.
2031769e 3326 $show "creating $output_objdir/$dlsyms"
252b5132 3327
2031769e 3328 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
252b5132
RH
3329/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
3330/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
3331
3332#ifdef __cplusplus
3333extern \"C\" {
3334#endif
3335
3336/* Prevent the only kind of declaration conflicts we can make. */
3337#define lt_preloaded_symbols some_other_symbol
3338
3339/* External symbol declarations for the compiler. */\
3340"
3341
3342 if test "$dlself" = yes; then
3343 $show "generating symbol list for \`$output'"
3344
2031769e 3345 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
252b5132
RH
3346
3347 # Add our own program objects to the symbol list.
6cf86f7f 3348 progfiles="$objs$old_deplibs"
252b5132
RH
3349 for arg in $progfiles; do
3350 $show "extracting global C symbols from \`$arg'"
3351 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
3352 done
3353
3354 if test -n "$exclude_expsyms"; then
3355 $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3356 $run eval '$mv "$nlist"T "$nlist"'
3357 fi
6cf86f7f 3358
252b5132
RH
3359 if test -n "$export_symbols_regex"; then
3360 $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3361 $run eval '$mv "$nlist"T "$nlist"'
3362 fi
3363
3364 # Prepare the list of exported symbols
3365 if test -z "$export_symbols"; then
2031769e 3366 export_symbols="$output_objdir/$output.exp"
252b5132
RH
3367 $run $rm $export_symbols
3368 $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3369 else
2031769e
ILT
3370 $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
3371 $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
252b5132
RH
3372 $run eval 'mv "$nlist"T "$nlist"'
3373 fi
3374 fi
3375
3376 for arg in $dlprefiles; do
3377 $show "extracting global C symbols from \`$arg'"
3378 name=`echo "$arg" | sed -e 's%^.*/%%'`
3379 $run eval 'echo ": $name " >> "$nlist"'
3380 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
3381 done
3382
3383 if test -z "$run"; then
3384 # Make sure we have at least an empty file.
3385 test -f "$nlist" || : > "$nlist"
3386
3387 if test -n "$exclude_expsyms"; then
3388 egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3389 $mv "$nlist"T "$nlist"
3390 fi
3391
3392 # Try sorting and uniquifying the output.
3393 if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then
3394 :
3395 else
3396 grep -v "^: " < "$nlist" > "$nlist"S
3397 fi
3398
3399 if test -f "$nlist"S; then
3400 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
3401 else
3402 echo '/* NONE */' >> "$output_objdir/$dlsyms"
3403 fi
3404
3405 $echo >> "$output_objdir/$dlsyms" "\
3406
3407#undef lt_preloaded_symbols
3408
3409#if defined (__STDC__) && __STDC__
3410# define lt_ptr_t void *
3411#else
3412# define lt_ptr_t char *
3413# define const
3414#endif
3415
3416/* The mapping between symbol names and symbols. */
3417const struct {
3418 const char *name;
3419 lt_ptr_t address;
3420}
3421lt_preloaded_symbols[] =
3422{\
3423"
3424
3425 sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \
3426 -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \
3427 < "$nlist" >> "$output_objdir/$dlsyms"
3428
3429 $echo >> "$output_objdir/$dlsyms" "\
3430 {0, (lt_ptr_t) 0}
3431};
3432
3433/* This works around a problem in FreeBSD linker */
3434#ifdef FREEBSD_WORKAROUND
3435static const void *lt_preloaded_setup() {
3436 return lt_preloaded_symbols;
3437}
3438#endif
3439
3440#ifdef __cplusplus
3441}
3442#endif\
3443"
3444 fi
3445
3446 pic_flag_for_symtable=
2031769e 3447 case "$host" in
252b5132
RH
3448 # compiling the symbol table file with pic_flag works around
3449 # a FreeBSD bug that causes programs to crash when -lm is
3450 # linked before any other PIC object. But we must not use
3451 # pic_flag when linking with -static. The problem exists in
3452 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
6cf86f7f 3453 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
252b5132
RH
3454 case "$compile_command " in
3455 *" -static "*) ;;
6cf86f7f 3456 *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
2031769e
ILT
3457 esac;;
3458 *-*-hpux*)
3459 case "$compile_command " in
3460 *" -static "*) ;;
6cf86f7f 3461 *) pic_flag_for_symtable=" $pic_flag";;
252b5132
RH
3462 esac
3463 esac
3464
3465 # Now compile the dynamic symbol file.
6cf86f7f
AO
3466 $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
3467 $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
2031769e
ILT
3468
3469 # Clean up the generated files.
3470 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
3471 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
252b5132
RH
3472
3473 # Transform the symbol file into the correct name.
2031769e
ILT
3474 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
3475 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
252b5132
RH
3476 ;;
3477 *)
3478 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
3479 exit 1
3480 ;;
3481 esac
3482 else
3483 # We keep going just in case the user didn't refer to
3484 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
3485 # really was required.
3486
3487 # Nullify the symbol file.
3488 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
3489 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
3490 fi
3491
6cf86f7f 3492 if test $need_relink = no || test "$build_libtool_libs" != yes; then
252b5132
RH
3493 # Replace the output file specification.
3494 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
3495 link_command="$compile_command$compile_rpath"
3496
3497 # We have no uninstalled library dependencies, so finalize right now.
3498 $show "$link_command"
3499 $run eval "$link_command"
2031769e 3500 status=$?
6cf86f7f 3501
2031769e
ILT
3502 # Delete the generated files.
3503 if test -n "$dlsyms"; then
3504 $show "$rm $output_objdir/${outputname}S.${objext}"
3505 $run $rm "$output_objdir/${outputname}S.${objext}"
3506 fi
3507
3508 exit $status
252b5132
RH
3509 fi
3510
3511 if test -n "$shlibpath_var"; then
3512 # We should set the shlibpath_var
3513 rpath=
3514 for dir in $temp_rpath; do
3515 case "$dir" in
2031769e 3516 [\\/]* | [A-Za-z]:[\\/]*)
252b5132
RH
3517 # Absolute path.
3518 rpath="$rpath$dir:"
3519 ;;
3520 *)
3521 # Relative path: add a thisdir entry.
3522 rpath="$rpath\$thisdir/$dir:"
3523 ;;
3524 esac
3525 done
3526 temp_rpath="$rpath"
3527 fi
3528
3529 if test -n "$compile_shlibpath$finalize_shlibpath"; then
3530 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
3531 fi
3532 if test -n "$finalize_shlibpath"; then
3533 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
3534 fi
3535
3536 compile_var=
3537 finalize_var=
3538 if test -n "$runpath_var"; then
3539 if test -n "$perm_rpath"; then
3540 # We should set the runpath_var.
3541 rpath=
3542 for dir in $perm_rpath; do
3543 rpath="$rpath$dir:"
3544 done
3545 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
3546 fi
3547 if test -n "$finalize_perm_rpath"; then
3548 # We should set the runpath_var.
3549 rpath=
3550 for dir in $finalize_perm_rpath; do
3551 rpath="$rpath$dir:"
3552 done
3553 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
3554 fi
3555 fi
3556
6cf86f7f
AO
3557 if test "$no_install" = yes; then
3558 # We don't need to create a wrapper script.
3559 link_command="$compile_var$compile_command$compile_rpath"
3560 # Replace the output file specification.
3561 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
3562 # Delete the old output file.
3563 $run $rm $output
3564 # Link the executable and exit
3565 $show "$link_command"
3566 $run eval "$link_command" || exit $?
3567 exit 0
3568 fi
3569
103a2e99 3570 if test "$hardcode_action" = relink; then
252b5132
RH
3571 # Fast installation is not supported
3572 link_command="$compile_var$compile_command$compile_rpath"
3573 relink_command="$finalize_var$finalize_command$finalize_rpath"
6cf86f7f 3574
252b5132
RH
3575 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
3576 $echo "$modename: \`$output' will be relinked during installation" 1>&2
3577 else
3578 if test "$fast_install" != no; then
3579 link_command="$finalize_var$compile_command$finalize_rpath"
3580 if test "$fast_install" = yes; then
3581 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
3582 else
3583 # fast_install is set to needless
3584 relink_command=
3585 fi
3586 else
3587 link_command="$compile_var$compile_command$compile_rpath"
3588 relink_command="$finalize_var$finalize_command$finalize_rpath"
3589 fi
3590 fi
3591
3592 # Replace the output file specification.
3593 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
6cf86f7f 3594
2031769e 3595 # Delete the old output files.
252b5132
RH
3596 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
3597
3598 $show "$link_command"
3599 $run eval "$link_command" || exit $?
3600
3601 # Now create the wrapper script.
3602 $show "creating $output"
3603
3604 # Quote the relink command for shipping.
3605 if test -n "$relink_command"; then
6cf86f7f 3606 # Preserve any variables that may affect compiler behavior
7c86ed39 3607 for var in $variables_saved_for_relink; do
103a2e99
AO
3608 if eval test -z \"\${$var+set}\"; then
3609 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
3610 elif eval var_value=\$$var; test -z "$var_value"; then
3611 relink_command="$var=; export $var; $relink_command"
3612 else
3613 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
3614 relink_command="$var=\"$var_value\"; export $var; $relink_command"
3615 fi
7c86ed39 3616 done
6cf86f7f 3617 relink_command="cd `pwd`; $relink_command"
252b5132
RH
3618 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
3619 fi
3620
3621 # Quote $echo for shipping.
3622 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
3623 case "$0" in
2031769e 3624 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
252b5132
RH
3625 *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
3626 esac
3627 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
3628 else
3629 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
3630 fi
3631
3632 # Only actually do things if our run command is non-null.
3633 if test -z "$run"; then
3634 # win32 will think the script is a binary if it has
3635 # a .exe suffix, so we strip it off here.
3636 case $output in
3637 *.exe) output=`echo $output|sed 's,.exe$,,'` ;;
3638 esac
3639 $rm $output
3640 trap "$rm $output; exit 1" 1 2 15
3641
3642 $echo > $output "\
3643#! $SHELL
3644
3645# $output - temporary wrapper script for $objdir/$outputname
3646# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
3647#
3648# The $output program cannot be directly executed until all the libtool
3649# libraries that it depends on are installed.
3650#
3651# This wrapper script should never be moved out of the build directory.
3652# If it is, it will not operate correctly.
3653
3654# Sed substitution that helps us do robust quoting. It backslashifies
3655# metacharacters that are still active within double-quoted strings.
3656Xsed='sed -e 1s/^X//'
3657sed_quote_subst='$sed_quote_subst'
3658
3659# The HP-UX ksh and POSIX shell print the target directory to stdout
3660# if CDPATH is set.
2031769e 3661if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
252b5132
RH
3662
3663relink_command=\"$relink_command\"
3664
3665# This environment variable determines our operation mode.
3666if test \"\$libtool_install_magic\" = \"$magic\"; then
3667 # install mode needs the following variable:
6cf86f7f 3668 uninst_deplibs='$uninst_deplibs'
252b5132
RH
3669else
3670 # When we are sourced in execute mode, \$file and \$echo are already set.
3671 if test \"\$libtool_execute_magic\" != \"$magic\"; then
3672 echo=\"$qecho\"
3673 file=\"\$0\"
3674 # Make sure echo works.
3675 if test \"X\$1\" = X--no-reexec; then
3676 # Discard the --no-reexec flag, and continue.
3677 shift
3678 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
3679 # Yippee, \$echo works!
3680 :
3681 else
3682 # Restart under the correct shell, and then maybe \$echo will work.
3683 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
3684 fi
3685 fi\
3686"
3687 $echo >> $output "\
3688
3689 # Find the directory that this script lives in.
3690 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
3691 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
3692
3693 # Follow symbolic links until we get to the real thisdir.
3694 file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\`
3695 while test -n \"\$file\"; do
3696 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
3697
3698 # If there was a directory component, then change thisdir.
3699 if test \"x\$destdir\" != \"x\$file\"; then
3700 case \"\$destdir\" in
6cf86f7f 3701 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
252b5132
RH
3702 *) thisdir=\"\$thisdir/\$destdir\" ;;
3703 esac
3704 fi
3705
3706 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
3707 file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\`
3708 done
3709
3710 # Try to get the absolute directory name.
3711 absdir=\`cd \"\$thisdir\" && pwd\`
3712 test -n \"\$absdir\" && thisdir=\"\$absdir\"
3713"
3714
3715 if test "$fast_install" = yes; then
3716 echo >> $output "\
3717 program=lt-'$outputname'
3718 progdir=\"\$thisdir/$objdir\"
6cf86f7f 3719
252b5132
RH
3720 if test ! -f \"\$progdir/\$program\" || \\
3721 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
3722 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
3723
3724 file=\"\$\$-\$program\"
3725
3726 if test ! -d \"\$progdir\"; then
3727 $mkdir \"\$progdir\"
3728 else
3729 $rm \"\$progdir/\$file\"
3730 fi"
3731
3732 echo >> $output "\
3733
3734 # relink executable if necessary
3735 if test -n \"\$relink_command\"; then
6cf86f7f 3736 if (eval \$relink_command); then :
252b5132
RH
3737 else
3738 $rm \"\$progdir/\$file\"
3739 exit 1
3740 fi
3741 fi
3742
3743 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
3744 { $rm \"\$progdir/\$program\";
3745 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
3746 $rm \"\$progdir/\$file\"
3747 fi"
3748 else
3749 echo >> $output "\
3750 program='$outputname'
3751 progdir=\"\$thisdir/$objdir\"
3752"
3753 fi
3754
3755 echo >> $output "\
3756
3757 if test -f \"\$progdir/\$program\"; then"
3758
3759 # Export our shlibpath_var if we have one.
3760 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
3761 $echo >> $output "\
3762 # Add our own library path to $shlibpath_var
3763 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
3764
3765 # Some systems cannot cope with colon-terminated $shlibpath_var
3766 # The second colon is a workaround for a bug in BeOS R4 sed
3767 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
3768
3769 export $shlibpath_var
3770"
3771 fi
3772
3773 # fixup the dll searchpath if we need to.
3774 if test -n "$dllsearchpath"; then
3775 $echo >> $output "\
3776 # Add the dll search path components to the executable PATH
3777 PATH=$dllsearchpath:\$PATH
3778"
3779 fi
3780
3781 $echo >> $output "\
3782 if test \"\$libtool_execute_magic\" != \"$magic\"; then
3783 # Run the actual program with our arguments.
3784"
3785 case $host in
6cf86f7f
AO
3786 # win32 systems need to use the prog path for dll
3787 # lookup to work
d64552c5 3788 *-*-cygwin* | *-*-pw32*)
6cf86f7f
AO
3789 $echo >> $output "\
3790 exec \$progdir/\$program \${1+\"\$@\"}
3791"
3792 ;;
3793
3794 # Backslashes separate directories on plain windows
3795 *-*-mingw | *-*-os2*)
252b5132
RH
3796 $echo >> $output "\
3797 exec \$progdir\\\\\$program \${1+\"\$@\"}
3798"
3799 ;;
6cf86f7f 3800
252b5132
RH
3801 *)
3802 $echo >> $output "\
3803 # Export the path to the program.
3804 PATH=\"\$progdir:\$PATH\"
3805 export PATH
3806
3807 exec \$program \${1+\"\$@\"}
3808"
3809 ;;
3810 esac
3811 $echo >> $output "\
3812 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
3813 exit 1
3814 fi
3815 else
3816 # The program doesn't exist.
3817 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
3818 \$echo \"This script is just a wrapper for \$program.\" 1>&2
3819 echo \"See the $PACKAGE documentation for more information.\" 1>&2
3820 exit 1
3821 fi
3822fi\
3823"
3824 chmod +x $output
3825 fi
3826 exit 0
3827 ;;
3828 esac
3829
3830 # See if we need to build an old-fashioned archive.
3831 for oldlib in $oldlibs; do
3832
3833 if test "$build_libtool_libs" = convenience; then
3834 oldobjs="$libobjs_save"
3835 addlibs="$convenience"
3836 build_libtool_libs=no
3837 else
3838 if test "$build_libtool_libs" = module; then
3839 oldobjs="$libobjs_save"
3840 build_libtool_libs=no
3841 else
6cf86f7f 3842 oldobjs="$objs$old_deplibs $non_pic_objects"
252b5132
RH
3843 fi
3844 addlibs="$old_convenience"
3845 fi
3846
2031769e
ILT
3847 if test -n "$addlibs"; then
3848 gentop="$output_objdir/${outputname}x"
3849 $show "${rm}r $gentop"
3850 $run ${rm}r "$gentop"
6cf86f7f
AO
3851 $show "$mkdir $gentop"
3852 $run $mkdir "$gentop"
252b5132 3853 status=$?
2031769e 3854 if test $status -ne 0 && test ! -d "$gentop"; then
252b5132
RH
3855 exit $status
3856 fi
2031769e 3857 generated="$generated $gentop"
6cf86f7f 3858
2031769e
ILT
3859 # Add in members from convenience archives.
3860 for xlib in $addlibs; do
3861 # Extract the objects.
3862 case "$xlib" in
3863 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
3864 *) xabs=`pwd`"/$xlib" ;;
3865 esac
3866 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
3867 xdir="$gentop/$xlib"
252b5132 3868
2031769e
ILT
3869 $show "${rm}r $xdir"
3870 $run ${rm}r "$xdir"
6cf86f7f
AO
3871 $show "$mkdir $xdir"
3872 $run $mkdir "$xdir"
2031769e
ILT
3873 status=$?
3874 if test $status -ne 0 && test ! -d "$xdir"; then
3875 exit $status
3876 fi
3877 $show "(cd $xdir && $AR x $xabs)"
3878 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
3879
6cf86f7f 3880 oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print | $NL2SP`
2031769e
ILT
3881 done
3882 fi
252b5132
RH
3883
3884 # Do each command in the archive commands.
3885 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
3886 eval cmds=\"$old_archive_from_new_cmds\"
3887 else
6cf86f7f
AO
3888# # Ensure that we have .o objects in place in case we decided
3889# # not to build a shared library, and have fallen back to building
3890# # static libs even though --disable-static was passed!
3891# for oldobj in $oldobjs; do
3892# if test ! -f $oldobj; then
3893# xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
3894# if test "X$xdir" = "X$oldobj"; then
3895# xdir="."
3896# else
3897# xdir="$xdir"
3898# fi
3899# baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
3900# obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
3901# $show "(cd $xdir && ${LN_S} $obj $baseobj)"
3902# $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
3903# fi
3904# done
2031769e 3905
252b5132
RH
3906 eval cmds=\"$old_archive_cmds\"
3907 fi
3908 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
3909 for cmd in $cmds; do
3910 IFS="$save_ifs"
3911 $show "$cmd"
3912 $run eval "$cmd" || exit $?
3913 done
3914 IFS="$save_ifs"
3915 done
3916
3917 if test -n "$generated"; then
3918 $show "${rm}r$generated"
3919 $run ${rm}r$generated
3920 fi
3921
3922 # Now create the libtool archive.
3923 case "$output" in
3924 *.la)
3925 old_library=
3926 test "$build_old_libs" = yes && old_library="$libname.$libext"
3927 $show "creating $output"
3928
6cf86f7f
AO
3929 # Preserve any variables that may affect compiler behavior
3930 for var in $variables_saved_for_relink; do
103a2e99
AO
3931 if eval test -z \"\${$var+set}\"; then
3932 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
3933 elif eval var_value=\$$var; test -z "$var_value"; then
3934 relink_command="$var=; export $var; $relink_command"
3935 else
3936 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
3937 relink_command="$var=\"$var_value\"; export $var; $relink_command"
3938 fi
6cf86f7f
AO
3939 done
3940 # Quote the link command for shipping.
3941 relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args"
3942 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
252b5132
RH
3943
3944 # Only create the output if not a dry run.
3945 if test -z "$run"; then
2031769e
ILT
3946 for installed in no yes; do
3947 if test "$installed" = yes; then
3948 if test -z "$install_libdir"; then
3949 break
3950 fi
3951 output="$output_objdir/$outputname"i
6cf86f7f
AO
3952 # Replace all uninstalled libtool libraries with the installed ones
3953 newdependency_libs=
3954 for deplib in $dependency_libs; do
3955 case "$deplib" in
3956 *.la)
3957 name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
3958 eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
3959 if test -z "$libdir"; then
3960 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
3961 exit 1
3962 fi
3963 newdependency_libs="$newdependency_libs $libdir/$name"
3964 ;;
3965 *) newdependency_libs="$newdependency_libs $deplib" ;;
3966 esac
3967 done
3968 dependency_libs="$newdependency_libs"
3969 newdlfiles=
3970 for lib in $dlfiles; do
3971 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
3972 eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
3973 if test -z "$libdir"; then
3974 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
3975 exit 1
3976 fi
3977 newdlfiles="$newdlfiles $libdir/$name"
3978 done
3979 dlfiles="$newdlfiles"
3980 newdlprefiles=
3981 for lib in $dlprefiles; do
3982 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
3983 eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
3984 if test -z "$libdir"; then
3985 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
3986 exit 1
3987 fi
3988 newdlprefiles="$newdlprefiles $libdir/$name"
3989 done
3990 dlprefiles="$newdlprefiles"
2031769e
ILT
3991 fi
3992 $rm $output
3993 $echo > $output "\
3994# $outputname - a libtool library file
252b5132 3995# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
2031769e
ILT
3996#
3997# Please DO NOT delete this file!
3998# It is necessary for linking the library.
252b5132
RH
3999
4000# The name that we can dlopen(3).
4001dlname='$dlname'
4002
4003# Names of this library.
4004library_names='$library_names'
4005
4006# The name of the static archive.
4007old_library='$old_library'
4008
4009# Libraries that this one depends upon.
4010dependency_libs='$dependency_libs'
4011
4012# Version information for $libname.
4013current=$current
4014age=$age
4015revision=$revision
4016
4017# Is this an already installed library?
2031769e 4018installed=$installed
252b5132 4019
6cf86f7f
AO
4020# Files to dlopen/dlpreopen
4021dlopen='$dlfiles'
4022dlpreopen='$dlprefiles'
4023
252b5132 4024# Directory that this library needs to be installed in:
6cf86f7f 4025libdir='$install_libdir'"
103a2e99 4026 if test "$installed" = no && test $need_relink = yes; then
6cf86f7f
AO
4027 $echo >> $output "\
4028relink_command=\"$relink_command\""
4029 fi
2031769e 4030 done
252b5132
RH
4031 fi
4032
4033 # Do a symbolic link so that the libtool archive can be found in
4034 # LD_LIBRARY_PATH before the program is installed.
4035 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
6cf86f7f 4036 $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
252b5132
RH
4037 ;;
4038 esac
4039 exit 0
4040 ;;
4041
4042 # libtool install mode
4043 install)
4044 modename="$modename: install"
4045
4046 # There may be an optional sh(1) argument at the beginning of
4047 # install_prog (especially on Windows NT).
6cf86f7f
AO
4048 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
4049 # Allow the use of GNU shtool's install command.
4050 $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
252b5132
RH
4051 # Aesthetically quote it.
4052 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
4053 case "$arg" in
4054 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
4055 arg="\"$arg\""
4056 ;;
4057 esac
4058 install_prog="$arg "
4059 arg="$1"
4060 shift
4061 else
4062 install_prog=
4063 arg="$nonopt"
4064 fi
4065
4066 # The real first argument should be the name of the installation program.
4067 # Aesthetically quote it.
4068 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
4069 case "$arg" in
4070 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
4071 arg="\"$arg\""
4072 ;;
4073 esac
4074 install_prog="$install_prog$arg"
4075
4076 # We need to accept at least all the BSD install flags.
4077 dest=
4078 files=
4079 opts=
4080 prev=
4081 install_type=
4082 isdir=no
4083 stripme=
4084 for arg
4085 do
4086 if test -n "$dest"; then
4087 files="$files $dest"
4088 dest="$arg"
4089 continue
4090 fi
4091
4092 case "$arg" in
4093 -d) isdir=yes ;;
4094 -f) prev="-f" ;;
4095 -g) prev="-g" ;;
4096 -m) prev="-m" ;;
4097 -o) prev="-o" ;;
4098 -s)
4099 stripme=" -s"
4100 continue
4101 ;;
4102 -*) ;;
4103
4104 *)
4105 # If the previous option needed an argument, then skip it.
4106 if test -n "$prev"; then
4107 prev=
4108 else
4109 dest="$arg"
4110 continue
4111 fi
4112 ;;
4113 esac
4114
4115 # Aesthetically quote the argument.
4116 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
4117 case "$arg" in
4118 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
4119 arg="\"$arg\""
4120 ;;
4121 esac
4122 install_prog="$install_prog $arg"
4123 done
4124
4125 if test -z "$install_prog"; then
4126 $echo "$modename: you must specify an install program" 1>&2
4127 $echo "$help" 1>&2
4128 exit 1
4129 fi
4130
4131 if test -n "$prev"; then
4132 $echo "$modename: the \`$prev' option requires an argument" 1>&2
4133 $echo "$help" 1>&2
4134 exit 1
4135 fi
4136
4137 if test -z "$files"; then
4138 if test -z "$dest"; then
4139 $echo "$modename: no file or destination specified" 1>&2
4140 else
4141 $echo "$modename: you must specify a destination" 1>&2
4142 fi
4143 $echo "$help" 1>&2
4144 exit 1
4145 fi
4146
4147 # Strip any trailing slash from the destination.
4148 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
4149
4150 # Check to see that the destination is a directory.
4151 test -d "$dest" && isdir=yes
4152 if test "$isdir" = yes; then
4153 destdir="$dest"
4154 destname=
4155 else
4156 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
4157 test "X$destdir" = "X$dest" && destdir=.
4158 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
4159
4160 # Not a directory, so check to see that there is only one file specified.
4161 set dummy $files
4162 if test $# -gt 2; then
4163 $echo "$modename: \`$dest' is not a directory" 1>&2
4164 $echo "$help" 1>&2
4165 exit 1
4166 fi
4167 fi
4168 case "$destdir" in
2031769e 4169 [\\/]* | [A-Za-z]:[\\/]*) ;;
252b5132
RH
4170 *)
4171 for file in $files; do
4172 case "$file" in
4173 *.lo) ;;
4174 *)
4175 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
4176 $echo "$help" 1>&2
4177 exit 1
4178 ;;
4179 esac
4180 done
4181 ;;
4182 esac
4183
4184 # This variable tells wrapper scripts just to set variables rather
4185 # than running their programs.
4186 libtool_install_magic="$magic"
4187
4188 staticlibs=
4189 future_libdirs=
4190 current_libdirs=
4191 for file in $files; do
4192
4193 # Do each installation.
4194 case "$file" in
6cf86f7f 4195 *.$libext)
252b5132
RH
4196 # Do the static libraries later.
4197 staticlibs="$staticlibs $file"
4198 ;;
4199
4200 *.la)
4201 # Check to see that this really is a libtool archive.
4202 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
4203 else
4204 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
4205 $echo "$help" 1>&2
4206 exit 1
4207 fi
4208
4209 library_names=
4210 old_library=
6cf86f7f 4211 relink_command=
252b5132
RH
4212 # If there is no directory component, then add one.
4213 case "$file" in
4214 */* | *\\*) . $file ;;
4215 *) . ./$file ;;
4216 esac
4217
4218 # Add the libdir to current_libdirs if it is the destination.
4219 if test "X$destdir" = "X$libdir"; then
4220 case "$current_libdirs " in
4221 *" $libdir "*) ;;
4222 *) current_libdirs="$current_libdirs $libdir" ;;
4223 esac
4224 else
4225 # Note the libdir as a future libdir.
4226 case "$future_libdirs " in
4227 *" $libdir "*) ;;
4228 *) future_libdirs="$future_libdirs $libdir" ;;
4229 esac
4230 fi
4231
6cf86f7f 4232 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
252b5132
RH
4233 test "X$dir" = "X$file/" && dir=
4234 dir="$dir$objdir"
4235
103a2e99 4236 if test -n "$relink_command"; then
6cf86f7f
AO
4237 $echo "$modename: warning: relinking \`$file'" 1>&2
4238 $show "$relink_command"
4239 if $run eval "$relink_command"; then :
4240 else
4241 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
4242 continue
4243 fi
4244 fi
4245
252b5132
RH
4246 # See the names of the shared library.
4247 set dummy $library_names
4248 if test -n "$2"; then
4249 realname="$2"
4250 shift
4251 shift
4252
6cf86f7f 4253 srcname="$realname"
103a2e99 4254 test -n "$relink_command" && srcname="$realname"T
6cf86f7f 4255
252b5132 4256 # Install the shared library and build the symlinks.
6cf86f7f
AO
4257 $show "$install_prog $dir/$srcname $destdir/$realname"
4258 $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
4259 if test -n "$stripme" && test -n "$striplib"; then
4260 $show "$striplib $destdir/$realname"
4261 $run eval "$striplib $destdir/$realname" || exit $?
4262 fi
252b5132
RH
4263
4264 if test $# -gt 0; then
4265 # Delete the old symlinks, and create new ones.
4266 for linkname
4267 do
252b5132
RH
4268 if test "$linkname" != "$realname"; then
4269 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
4270 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
4271 fi
4272 done
4273 fi
4274
252b5132
RH
4275 # Do each command in the postinstall commands.
4276 lib="$destdir/$realname"
4277 eval cmds=\"$postinstall_cmds\"
4278 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
4279 for cmd in $cmds; do
4280 IFS="$save_ifs"
4281 $show "$cmd"
4282 $run eval "$cmd" || exit $?
4283 done
4284 IFS="$save_ifs"
4285 fi
4286
4287 # Install the pseudo-library for information purposes.
4288 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4289 instname="$dir/$name"i
252b5132
RH
4290 $show "$install_prog $instname $destdir/$name"
4291 $run eval "$install_prog $instname $destdir/$name" || exit $?
4292
4293 # Maybe install the static library, too.
4294 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
4295 ;;
4296
4297 *.lo)
4298 # Install (i.e. copy) a libtool object.
4299
4300 # Figure out destination file name, if it wasn't already specified.
4301 if test -n "$destname"; then
4302 destfile="$destdir/$destname"
4303 else
4304 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4305 destfile="$destdir/$destfile"
4306 fi
4307
4308 # Deduce the name of the destination old-style object file.
4309 case "$destfile" in
4310 *.lo)
4311 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
4312 ;;
6cf86f7f 4313 *.$objext)
252b5132
RH
4314 staticdest="$destfile"
4315 destfile=
4316 ;;
4317 *)
4318 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
4319 $echo "$help" 1>&2
4320 exit 1
4321 ;;
4322 esac
4323
4324 # Install the libtool object if requested.
4325 if test -n "$destfile"; then
4326 $show "$install_prog $file $destfile"
4327 $run eval "$install_prog $file $destfile" || exit $?
4328 fi
4329
4330 # Install the old object if enabled.
4331 if test "$build_old_libs" = yes; then
4332 # Deduce the name of the old-style object file.
4333 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
4334
4335 $show "$install_prog $staticobj $staticdest"
4336 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
4337 fi
4338 exit 0
4339 ;;
4340
4341 *)
4342 # Figure out destination file name, if it wasn't already specified.
4343 if test -n "$destname"; then
4344 destfile="$destdir/$destname"
4345 else
4346 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4347 destfile="$destdir/$destfile"
4348 fi
4349
4350 # Do a test to see if this is really a libtool program.
4351 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6cf86f7f 4352 uninst_deplibs=
252b5132
RH
4353 relink_command=
4354
4355 # If there is no directory component, then add one.
4356 case "$file" in
4357 */* | *\\*) . $file ;;
4358 *) . ./$file ;;
4359 esac
4360
4361 # Check the variables that should have been set.
6cf86f7f 4362 if test -z "$uninst_deplibs"; then
252b5132
RH
4363 $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
4364 exit 1
4365 fi
4366
4367 finalize=yes
6cf86f7f 4368 for lib in $uninst_deplibs; do
252b5132
RH
4369 # Check to see that each library is installed.
4370 libdir=
4371 if test -f "$lib"; then
4372 # If there is no directory component, then add one.
4373 case "$lib" in
4374 */* | *\\*) . $lib ;;
4375 *) . ./$lib ;;
4376 esac
4377 fi
6cf86f7f 4378 libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
252b5132
RH
4379 if test -n "$libdir" && test ! -f "$libfile"; then
4380 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
4381 finalize=no
4382 fi
4383 done
4384
6cf86f7f
AO
4385 relink_command=
4386 # If there is no directory component, then add one.
4387 case "$file" in
4388 */* | *\\*) . $file ;;
4389 *) . ./$file ;;
4390 esac
4391
252b5132
RH
4392 outputname=
4393 if test "$fast_install" = no && test -n "$relink_command"; then
2031769e
ILT
4394 if test "$finalize" = yes && test -z "$run"; then
4395 tmpdir="/tmp"
4396 test -n "$TMPDIR" && tmpdir="$TMPDIR"
4397 tmpdir="$tmpdir/libtool-$$"
4398 if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then :
4399 else
4400 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
4401 continue
4402 fi
6cf86f7f 4403 file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
2031769e 4404 outputname="$tmpdir/$file"
252b5132
RH
4405 # Replace the output file specification.
4406 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
4407
252b5132
RH
4408 $show "$relink_command"
4409 if $run eval "$relink_command"; then :
4410 else
4411 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
2031769e 4412 ${rm}r "$tmpdir"
252b5132
RH
4413 continue
4414 fi
4415 file="$outputname"
4416 else
2031769e 4417 $echo "$modename: warning: cannot relink \`$file'" 1>&2
252b5132
RH
4418 fi
4419 else
4420 # Install the binary that we compiled earlier.
4421 file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
4422 fi
4423 fi
4424
4425 $show "$install_prog$stripme $file $destfile"
4426 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
2031769e 4427 test -n "$outputname" && ${rm}r "$tmpdir"
252b5132
RH
4428 ;;
4429 esac
4430 done
4431
4432 for file in $staticlibs; do
4433 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
4434
4435 # Set up the ranlib parameters.
4436 oldlib="$destdir/$name"
4437
4438 $show "$install_prog $file $oldlib"
4439 $run eval "$install_prog \$file \$oldlib" || exit $?
4440
6cf86f7f
AO
4441 if test -n "$stripme" && test -n "$striplib"; then
4442 $show "$old_striplib $oldlib"
4443 $run eval "$old_striplib $oldlib" || exit $?
4444 fi
4445
252b5132
RH
4446 # Do each command in the postinstall commands.
4447 eval cmds=\"$old_postinstall_cmds\"
4448 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
4449 for cmd in $cmds; do
4450 IFS="$save_ifs"
4451 $show "$cmd"
4452 $run eval "$cmd" || exit $?
4453 done
4454 IFS="$save_ifs"
4455 done
4456
4457 if test -n "$future_libdirs"; then
4458 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
4459 fi
4460
4461 if test -n "$current_libdirs"; then
4462 # Maybe just do a dry run.
4463 test -n "$run" && current_libdirs=" -n$current_libdirs"
4464 exec $SHELL $0 --finish$current_libdirs
4465 exit 1
4466 fi
4467
4468 exit 0
4469 ;;
4470
4471 # libtool finish mode
4472 finish)
4473 modename="$modename: finish"
4474 libdirs="$nonopt"
4475 admincmds=
4476
4477 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
4478 for dir
4479 do
4480 libdirs="$libdirs $dir"
4481 done
4482
4483 for libdir in $libdirs; do
4484 if test -n "$finish_cmds"; then
4485 # Do each command in the finish commands.
4486 eval cmds=\"$finish_cmds\"
4487 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
4488 for cmd in $cmds; do
4489 IFS="$save_ifs"
4490 $show "$cmd"
4491 $run eval "$cmd" || admincmds="$admincmds
4492 $cmd"
4493 done
4494 IFS="$save_ifs"
4495 fi
4496 if test -n "$finish_eval"; then
4497 # Do the single finish_eval.
4498 eval cmds=\"$finish_eval\"
4499 $run eval "$cmds" || admincmds="$admincmds
4500 $cmds"
4501 fi
4502 done
4503 fi
4504
4505 # Exit here if they wanted silent mode.
4506 test "$show" = : && exit 0
4507
4508 echo "----------------------------------------------------------------------"
4509 echo "Libraries have been installed in:"
4510 for libdir in $libdirs; do
4511 echo " $libdir"
4512 done
4513 echo
4514 echo "If you ever happen to want to link against installed libraries"
4515 echo "in a given directory, LIBDIR, you must either use libtool, and"
4516 echo "specify the full pathname of the library, or use \`-LLIBDIR'"
4517 echo "flag during linking and do at least one of the following:"
4518 if test -n "$shlibpath_var"; then
4519 echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
4520 echo " during execution"
4521 fi
4522 if test -n "$runpath_var"; then
4523 echo " - add LIBDIR to the \`$runpath_var' environment variable"
4524 echo " during linking"
4525 fi
4526 if test -n "$hardcode_libdir_flag_spec"; then
4527 libdir=LIBDIR
4528 eval flag=\"$hardcode_libdir_flag_spec\"
4529
4530 echo " - use the \`$flag' linker flag"
4531 fi
4532 if test -n "$admincmds"; then
4533 echo " - have your system administrator run these commands:$admincmds"
4534 fi
4535 if test -f /etc/ld.so.conf; then
4536 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
4537 fi
4538 echo
4539 echo "See any operating system documentation about shared libraries for"
4540 echo "more information, such as the ld(1) and ld.so(8) manual pages."
4541 echo "----------------------------------------------------------------------"
4542 exit 0
4543 ;;
4544
4545 # libtool execute mode
4546 execute)
4547 modename="$modename: execute"
4548
4549 # The first argument is the command name.
4550 cmd="$nonopt"
4551 if test -z "$cmd"; then
4552 $echo "$modename: you must specify a COMMAND" 1>&2
4553 $echo "$help"
4554 exit 1
4555 fi
4556
4557 # Handle -dlopen flags immediately.
4558 for file in $execute_dlfiles; do
4559 if test ! -f "$file"; then
4560 $echo "$modename: \`$file' is not a file" 1>&2
4561 $echo "$help" 1>&2
4562 exit 1
4563 fi
4564
4565 dir=
4566 case "$file" in
4567 *.la)
4568 # Check to see that this really is a libtool archive.
4569 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
4570 else
4571 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
4572 $echo "$help" 1>&2
4573 exit 1
4574 fi
4575
4576 # Read the libtool library.
4577 dlname=
4578 library_names=
4579
4580 # If there is no directory component, then add one.
4581 case "$file" in
4582 */* | *\\*) . $file ;;
4583 *) . ./$file ;;
4584 esac
4585
4586 # Skip this library if it cannot be dlopened.
4587 if test -z "$dlname"; then
4588 # Warn if it was a shared library.
4589 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
4590 continue
4591 fi
4592
4593 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
4594 test "X$dir" = "X$file" && dir=.
4595
4596 if test -f "$dir/$objdir/$dlname"; then
4597 dir="$dir/$objdir"
4598 else
4599 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
4600 exit 1
4601 fi
4602 ;;
4603
4604 *.lo)
4605 # Just add the directory containing the .lo file.
4606 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
4607 test "X$dir" = "X$file" && dir=.
4608 ;;
4609
4610 *)
4611 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
4612 continue
4613 ;;
4614 esac
4615
4616 # Get the absolute pathname.
4617 absdir=`cd "$dir" && pwd`
4618 test -n "$absdir" && dir="$absdir"
4619
4620 # Now add the directory to shlibpath_var.
4621 if eval "test -z \"\$$shlibpath_var\""; then
4622 eval "$shlibpath_var=\"\$dir\""
4623 else
4624 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
4625 fi
4626 done
4627
4628 # This variable tells wrapper scripts just to set shlibpath_var
4629 # rather than running their programs.
4630 libtool_execute_magic="$magic"
4631
4632 # Check if any of the arguments is a wrapper script.
4633 args=
4634 for file
4635 do
4636 case "$file" in
4637 -*) ;;
4638 *)
4639 # Do a test to see if this is really a libtool program.
4640 if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
4641 # If there is no directory component, then add one.
4642 case "$file" in
4643 */* | *\\*) . $file ;;
4644 *) . ./$file ;;
4645 esac
4646
4647 # Transform arg to wrapped name.
4648 file="$progdir/$program"
4649 fi
4650 ;;
4651 esac
4652 # Quote arguments (to preserve shell metacharacters).
4653 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
4654 args="$args \"$file\""
4655 done
4656
4657 if test -z "$run"; then
2031769e 4658 if test -n "$shlibpath_var"; then
6cf86f7f
AO
4659 # Export the shlibpath_var.
4660 eval "export $shlibpath_var"
2031769e 4661 fi
252b5132
RH
4662
4663 # Restore saved enviroment variables
4664 if test "${save_LC_ALL+set}" = set; then
4665 LC_ALL="$save_LC_ALL"; export LC_ALL
4666 fi
4667 if test "${save_LANG+set}" = set; then
4668 LANG="$save_LANG"; export LANG
4669 fi
4670
4671 # Now actually exec the command.
4672 eval "exec \$cmd$args"
4673
4674 $echo "$modename: cannot exec \$cmd$args"
4675 exit 1
4676 else
4677 # Display what would be done.
2031769e 4678 if test -n "$shlibpath_var"; then
6cf86f7f
AO
4679 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
4680 $echo "export $shlibpath_var"
2031769e 4681 fi
252b5132
RH
4682 $echo "$cmd$args"
4683 exit 0
4684 fi
4685 ;;
4686
6cf86f7f
AO
4687 # libtool clean and uninstall mode
4688 clean | uninstall)
4689 modename="$modename: $mode"
252b5132
RH
4690 rm="$nonopt"
4691 files=
4692
6cf86f7f
AO
4693 # This variable tells wrapper scripts just to set variables rather
4694 # than running their programs.
4695 libtool_install_magic="$magic"
4696
252b5132
RH
4697 for arg
4698 do
4699 case "$arg" in
4700 -*) rm="$rm $arg" ;;
4701 *) files="$files $arg" ;;
4702 esac
4703 done
4704
4705 if test -z "$rm"; then
4706 $echo "$modename: you must specify an RM program" 1>&2
4707 $echo "$help" 1>&2
4708 exit 1
4709 fi
4710
4711 for file in $files; do
4712 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6cf86f7f
AO
4713 if test "X$dir" = "X$file"; then
4714 dir=.
4715 objdir="$objdir"
4716 else
4717 objdir="$dir/$objdir"
4718 fi
252b5132 4719 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6cf86f7f 4720 test $mode = uninstall && objdir="$dir"
252b5132
RH
4721
4722 rmfiles="$file"
4723
4724 case "$name" in
4725 *.la)
4726 # Possibly a libtool archive, so verify it.
4727 if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
4728 . $dir/$name
4729
4730 # Delete the libtool libraries and symlinks.
4731 for n in $library_names; do
6cf86f7f 4732 rmfiles="$rmfiles $objdir/$n"
252b5132 4733 done
6cf86f7f
AO
4734 test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
4735 test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
4736
4737 if test $mode = uninstall; then
4738 if test -n "$library_names"; then
4739 # Do each command in the postuninstall commands.
4740 eval cmds=\"$postuninstall_cmds\"
4741 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
4742 for cmd in $cmds; do
4743 IFS="$save_ifs"
4744 $show "$cmd"
4745 $run eval "$cmd"
4746 done
252b5132 4747 IFS="$save_ifs"
6cf86f7f 4748 fi
252b5132 4749
6cf86f7f
AO
4750 if test -n "$old_library"; then
4751 # Do each command in the old_postuninstall commands.
4752 eval cmds=\"$old_postuninstall_cmds\"
4753 IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
4754 for cmd in $cmds; do
4755 IFS="$save_ifs"
4756 $show "$cmd"
4757 $run eval "$cmd"
4758 done
252b5132 4759 IFS="$save_ifs"
6cf86f7f
AO
4760 fi
4761 # FIXME: should reinstall the best remaining shared library.
252b5132 4762 fi
252b5132
RH
4763 fi
4764 ;;
4765
4766 *.lo)
6cf86f7f
AO
4767 # Possibly a libtool object, so verify it.
4768 if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
4769
4770 # Read the .lo file
4771 . ./$file
4772
4773 # Add PIC object to the list of files to remove.
4774 if test -n "$pic_object" \
4775 && test "$pic_object" != none; then
4776 rmfiles="$rmfiles $dir/$pic_object"
4777 fi
4778
4779 # Add non-PIC object to the list of files to remove.
4780 if test -n "$non_pic_object" \
4781 && test "$non_pic_object" != none; then
4782 rmfiles="$rmfiles $dir/$non_pic_object"
4783 fi
252b5132 4784 fi
252b5132
RH
4785 ;;
4786
4787 *)
6cf86f7f
AO
4788 # Do a test to see if this is a libtool program.
4789 if test $mode = clean &&
4790 (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
4791 relink_command=
4792 . $dir/$file
4793
4794 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
4795 if test "$fast_install" = yes && test -n "$relink_command"; then
4796 rmfiles="$rmfiles $objdir/lt-$name"
4797 fi
4798 fi
252b5132
RH
4799 ;;
4800 esac
6cf86f7f
AO
4801 $show "$rm $rmfiles"
4802 $run $rm $rmfiles
252b5132
RH
4803 done
4804 exit 0
4805 ;;
4806
4807 "")
4808 $echo "$modename: you must specify a MODE" 1>&2
4809 $echo "$generic_help" 1>&2
4810 exit 1
4811 ;;
4812 esac
4813
4814 $echo "$modename: invalid operation mode \`$mode'" 1>&2
4815 $echo "$generic_help" 1>&2
4816 exit 1
4817fi # test -z "$show_help"
4818
4819# We need to display help for each of the modes.
4820case "$mode" in
4821"") $echo \
4822"Usage: $modename [OPTION]... [MODE-ARG]...
4823
4824Provide generalized library-building support services.
4825
4826 --config show all configuration variables
4827 --debug enable verbose shell tracing
4828-n, --dry-run display commands without modifying any files
4829 --features display basic configuration information and exit
4830 --finish same as \`--mode=finish'
4831 --help display this help message and exit
4832 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
4833 --quiet same as \`--silent'
4834 --silent don't print informational messages
6cf86f7f 4835 --tag=TAG use configuration variables from tag TAG
252b5132
RH
4836 --version print version information
4837
4838MODE must be one of the following:
4839
6cf86f7f 4840 clean remove files from the build directory
252b5132
RH
4841 compile compile a source file into a libtool object
4842 execute automatically set library path, then run a program
4843 finish complete the installation of libtool libraries
4844 install install libraries or executables
4845 link create a library or an executable
4846 uninstall remove libraries from an installed directory
4847
4848MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
4849a more detailed description of MODE."
4850 exit 0
4851 ;;
4852
6cf86f7f
AO
4853clean)
4854 $echo \
4855"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
4856
4857Remove files from the build directory.
4858
4859RM is the name of the program to use to delete files associated with each FILE
4860(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
4861to RM.
4862
4863If FILE is a libtool library, object or program, all the files associated
4864with it are deleted. Otherwise, only FILE itself is deleted using RM."
4865 ;;
4866
252b5132
RH
4867compile)
4868 $echo \
4869"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
4870
4871Compile a source file into a libtool library object.
4872
4873This mode accepts the following additional options:
4874
4875 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
4876 -static always build a \`.o' file suitable for static linking
4877
4878COMPILE-COMMAND is a command to be used in creating a \`standard' object file
4879from the given SOURCEFILE.
4880
4881The output file name is determined by removing the directory component from
4882SOURCEFILE, then substituting the C source code suffix \`.c' with the
4883library object suffix, \`.lo'."
4884 ;;
4885
4886execute)
4887 $echo \
4888"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
4889
4890Automatically set library path, then run a program.
4891
4892This mode accepts the following additional options:
4893
4894 -dlopen FILE add the directory containing FILE to the library path
4895
4896This mode sets the library path environment variable according to \`-dlopen'
4897flags.
4898
4899If any of the ARGS are libtool executable wrappers, then they are translated
4900into their corresponding uninstalled binary, and any of their required library
4901directories are added to the library path.
4902
4903Then, COMMAND is executed, with ARGS as arguments."
4904 ;;
4905
4906finish)
4907 $echo \
4908"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
4909
4910Complete the installation of libtool libraries.
4911
4912Each LIBDIR is a directory that contains libtool libraries.
4913
4914The commands that this mode executes may require superuser privileges. Use
4915the \`--dry-run' option if you just want to see what would be executed."
4916 ;;
4917
4918install)
4919 $echo \
4920"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
4921
4922Install executables or libraries.
4923
4924INSTALL-COMMAND is the installation command. The first component should be
4925either the \`install' or \`cp' program.
4926
4927The rest of the components are interpreted as arguments to that command (only
4928BSD-compatible install options are recognized)."
4929 ;;
4930
4931link)
4932 $echo \
4933"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
4934
4935Link object files or libraries together to form another library, or to
4936create an executable program.
4937
4938LINK-COMMAND is a command using the C compiler that you would use to create
4939a program from several object files.
4940
4941The following components of LINK-COMMAND are treated specially:
4942
4943 -all-static do not do any dynamic linking at all
4944 -avoid-version do not add a version suffix if possible
4945 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
4946 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
4947 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
4948 -export-symbols SYMFILE
4949 try to export only the symbols listed in SYMFILE
2031769e
ILT
4950 -export-symbols-regex REGEX
4951 try to export only the symbols matching REGEX
252b5132
RH
4952 -LLIBDIR search LIBDIR for required installed libraries
4953 -lNAME OUTPUT-FILE requires the installed library libNAME
4954 -module build a library that can dlopened
6cf86f7f
AO
4955 -no-fast-install disable the fast-install mode
4956 -no-install link a not-installable executable
252b5132
RH
4957 -no-undefined declare that a library does not refer to external symbols
4958 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
4959 -release RELEASE specify package release information
4960 -rpath LIBDIR the created library will eventually be installed in LIBDIR
4961 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
4962 -static do not do any dynamic linking of libtool libraries
4963 -version-info CURRENT[:REVISION[:AGE]]
4964 specify library version info [each variable defaults to 0]
4965
4966All other options (arguments beginning with \`-') are ignored.
4967
4968Every other argument is treated as a filename. Files ending in \`.la' are
4969treated as uninstalled libtool libraries, other files are standard or library
4970object files.
4971
4972If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
4973only library objects (\`.lo' files) may be specified, and \`-rpath' is
4974required, except when creating a convenience library.
4975
4976If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
4977using \`ar' and \`ranlib', or on Windows using \`lib'.
4978
4979If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
4980is created, otherwise an executable program is created."
4981 ;;
4982
4983uninstall)
2031769e 4984 $echo \
252b5132
RH
4985"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
4986
4987Remove libraries from an installation directory.
4988
4989RM is the name of the program to use to delete files associated with each FILE
4990(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
4991to RM.
4992
4993If FILE is a libtool library, all the files associated with it are deleted.
4994Otherwise, only FILE itself is deleted using RM."
4995 ;;
4996
4997*)
4998 $echo "$modename: invalid operation mode \`$mode'" 1>&2
4999 $echo "$help" 1>&2
5000 exit 1
5001 ;;
5002esac
5003
5004echo
5005$echo "Try \`$modename --help' for more information about other modes."
5006
5007exit 0
5008
6cf86f7f
AO
5009### BEGIN LIBTOOL TAG CONFIG: disable-shared
5010build_libtool_libs=no
5011### END LIBTOOL TAG CONFIG: disable-shared
5012
5013### BEGIN LIBTOOL TAG CONFIG: disable-static
5014build_old_libs=no
5015### END LIBTOOL TAG CONFIG: disable-static
5016
252b5132
RH
5017# Local Variables:
5018# mode:shell-script
5019# sh-indentation:2
5020# End:
This page took 0.272886 seconds and 4 git commands to generate.