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