/[path-sandbox]/trunk/ltmain.sh
Gentoo

Contents of /trunk/ltmain.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 8 - (show annotations) (download) (as text)
Sat Nov 20 00:21:17 2004 UTC (9 years, 9 months ago) by ferringb
File MIME type: text/x-sh
File size: 185428 byte(s)
annoying autotool files.  stuck usual copyright stuff w/ gpl v2 notice in COPYING.

1 # ltmain.sh - Provide generalized library-building support services.
2 # NOTE: Changing this file will not affect anything until you rerun configure.
3 #
4 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003
5 # Free Software Foundation, Inc.
6 # 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.
28 if test "X$1" = X--no-reexec; then
29 # Discard the --no-reexec flag, and continue.
30 shift
31 elif test "X$1" = X--fallback-echo; then
32 # Avoid inline document here, it may be left over
33 :
34 elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
35 # Yippee, $echo works!
36 :
37 else
38 # Restart under the correct shell, and then maybe $echo will work.
39 exec $SHELL "$0" --no-reexec ${1+"$@"}
40 fi
41
42 if test "X$1" = X--fallback-echo; then
43 # used as fallback echo
44 shift
45 cat <<EOF
46 $*
47 EOF
48 exit 0
49 fi
50
51 # define SED for historic ltconfig's generated by Libtool 1.3
52 test -z "$SED" && SED=sed
53
54 # The name of this program.
55 progname=`$echo "$0" | ${SED} 's%^.*/%%'`
56 modename="$progname"
57
58 # Constants.
59 PROGRAM=ltmain.sh
60 PACKAGE=libtool
61 VERSION=1.5.2
62 TIMESTAMP=" (1.1220.2.60 2004/01/25 12:25:08)"
63
64 default_mode=
65 help="Try \`$progname --help' for more information."
66 magic="%%%MAGIC variable%%%"
67 mkdir="mkdir"
68 mv="mv -f"
69 rm="rm -f"
70
71 # Sed substitution that helps us do robust quoting. It backslashifies
72 # metacharacters that are still active within double-quoted strings.
73 Xsed="${SED}"' -e 1s/^X//'
74 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
75 # test EBCDIC or ASCII
76 case `echo A|tr A '\301'` in
77 A) # EBCDIC based system
78 SP2NL="tr '\100' '\n'"
79 NL2SP="tr '\r\n' '\100\100'"
80 ;;
81 *) # Assume ASCII based system
82 SP2NL="tr '\040' '\012'"
83 NL2SP="tr '\015\012' '\040\040'"
84 ;;
85 esac
86
87 # NLS nuisances.
88 # Only set LANG and LC_ALL to C if already set.
89 # These must not be set unconditionally because not all systems understand
90 # e.g. LANG=C (notably SCO).
91 # We save the old values to restore during execute mode.
92 if test "${LC_ALL+set}" = set; then
93 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
94 fi
95 if test "${LANG+set}" = set; then
96 save_LANG="$LANG"; LANG=C; export LANG
97 fi
98
99 # Make sure IFS has a sensible default
100 : ${IFS="
101 "}
102
103 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
104 $echo "$modename: not configured to build any kind of library" 1>&2
105 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
106 exit 1
107 fi
108
109 # Global variables.
110 mode=$default_mode
111 nonopt=
112 prev=
113 prevopt=
114 run=
115 show="$echo"
116 show_help=
117 execute_dlfiles=
118 lo2o="s/\\.lo\$/.${objext}/"
119 o2lo="s/\\.${objext}\$/.lo/"
120
121 if test -z "$max_cmd_len"; then
122 i=0
123 testring="ABCD"
124 new_result=
125
126 # If test is not a shell built-in, we'll probably end up computing a
127 # maximum length that is only half of the actual maximum length, but
128 # we can't tell.
129 while (test "X"`$SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \
130 = "XX$testring") >/dev/null 2>&1 &&
131 new_result=`expr "X$testring" : ".*" 2>&1` &&
132 max_cmd_len="$new_result" &&
133 test $i != 17 # 1/2 MB should be enough
134 do
135 i=`expr $i + 1`
136 testring="$testring$testring"
137 done
138 testring=
139 # Add a significant safety factor because C++ compilers can tack on massive
140 # amounts of additional arguments before passing them to the linker.
141 # It appears as though 1/2 is a usable value.
142 max_cmd_len=`expr $max_cmd_len \/ 2`
143 fi
144
145 #####################################
146 # Shell function definitions:
147 # This seems to be the best place for them
148
149 # Need a lot of goo to handle *both* DLLs and import libs
150 # Has to be a shell function in order to 'eat' the argument
151 # that is supplied when $file_magic_command is called.
152 win32_libid () {
153 win32_libid_type="unknown"
154 win32_fileres=`file -L $1 2>/dev/null`
155 case $win32_fileres in
156 *ar\ archive\ import\ library*) # definitely import
157 win32_libid_type="x86 archive import"
158 ;;
159 *ar\ archive*) # could be an import, or static
160 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
161 grep -E 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
162 win32_nmres=`eval $NM -f posix -A $1 | \
163 sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
164 if test "X$win32_nmres" = "Ximport" ; then
165 win32_libid_type="x86 archive import"
166 else
167 win32_libid_type="x86 archive static"
168 fi
169 fi
170 ;;
171 *DLL*)
172 win32_libid_type="x86 DLL"
173 ;;
174 *executable*) # but shell scripts are "executable" too...
175 case $win32_fileres in
176 *MS\ Windows\ PE\ Intel*)
177 win32_libid_type="x86 DLL"
178 ;;
179 esac
180 ;;
181 esac
182 $echo $win32_libid_type
183 }
184
185 # End of Shell function definitions
186 #####################################
187
188 # Parse our command line options once, thoroughly.
189 while test "$#" -gt 0
190 do
191 arg="$1"
192 shift
193
194 case $arg in
195 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
196 *) optarg= ;;
197 esac
198
199 # If the previous option needs an argument, assign it.
200 if test -n "$prev"; then
201 case $prev in
202 execute_dlfiles)
203 execute_dlfiles="$execute_dlfiles $arg"
204 ;;
205 tag)
206 tagname="$arg"
207 preserve_args="${preserve_args}=$arg"
208
209 # Check whether tagname contains only valid characters
210 case $tagname in
211 *[!-_A-Za-z0-9,/]*)
212 $echo "$progname: invalid tag name: $tagname" 1>&2
213 exit 1
214 ;;
215 esac
216
217 case $tagname in
218 CC)
219 # Don't test for the "default" C tag, as we know, it's there, but
220 # not specially marked.
221 ;;
222 *)
223 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then
224 taglist="$taglist $tagname"
225 # Evaluate the configuration.
226 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
227 else
228 $echo "$progname: ignoring unknown tag $tagname" 1>&2
229 fi
230 ;;
231 esac
232 ;;
233 *)
234 eval "$prev=\$arg"
235 ;;
236 esac
237
238 prev=
239 prevopt=
240 continue
241 fi
242
243 # Have we seen a non-optional argument yet?
244 case $arg in
245 --help)
246 show_help=yes
247 ;;
248
249 --version)
250 $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
251 $echo
252 $echo "Copyright (C) 2003 Free Software Foundation, Inc."
253 $echo "This is free software; see the source for copying conditions. There is NO"
254 $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
255 exit 0
256 ;;
257
258 --config)
259 ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0
260 # Now print the configurations for the tags.
261 for tagname in $taglist; do
262 ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0"
263 done
264 exit 0
265 ;;
266
267 --debug)
268 $echo "$progname: enabling shell trace mode"
269 set -x
270 preserve_args="$preserve_args $arg"
271 ;;
272
273 --dry-run | -n)
274 run=:
275 ;;
276
277 --features)
278 $echo "host: $host"
279 if test "$build_libtool_libs" = yes; then
280 $echo "enable shared libraries"
281 else
282 $echo "disable shared libraries"
283 fi
284 if test "$build_old_libs" = yes; then
285 $echo "enable static libraries"
286 else
287 $echo "disable static libraries"
288 fi
289 exit 0
290 ;;
291
292 --finish) mode="finish" ;;
293
294 --mode) prevopt="--mode" prev=mode ;;
295 --mode=*) mode="$optarg" ;;
296
297 --preserve-dup-deps) duplicate_deps="yes" ;;
298
299 --quiet | --silent)
300 show=:
301 preserve_args="$preserve_args $arg"
302 ;;
303
304 --tag) prevopt="--tag" prev=tag ;;
305 --tag=*)
306 set tag "$optarg" ${1+"$@"}
307 shift
308 prev=tag
309 preserve_args="$preserve_args --tag"
310 ;;
311
312 -dlopen)
313 prevopt="-dlopen"
314 prev=execute_dlfiles
315 ;;
316
317 -*)
318 $echo "$modename: unrecognized option \`$arg'" 1>&2
319 $echo "$help" 1>&2
320 exit 1
321 ;;
322
323 *)
324 nonopt="$arg"
325 break
326 ;;
327 esac
328 done
329
330 if test -n "$prevopt"; then
331 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
332 $echo "$help" 1>&2
333 exit 1
334 fi
335
336 # If this variable is set in any of the actions, the command in it
337 # will be execed at the end. This prevents here-documents from being
338 # left over by shells.
339 exec_cmd=
340
341 if test -z "$show_help"; then
342
343 # Infer the operation mode.
344 if test -z "$mode"; then
345 $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
346 $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
347 case $nonopt in
348 *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
349 mode=link
350 for arg
351 do
352 case $arg in
353 -c)
354 mode=compile
355 break
356 ;;
357 esac
358 done
359 ;;
360 *db | *dbx | *strace | *truss)
361 mode=execute
362 ;;
363 *install*|cp|mv)
364 mode=install
365 ;;
366 *rm)
367 mode=uninstall
368 ;;
369 *)
370 # If we have no mode, but dlfiles were specified, then do execute mode.
371 test -n "$execute_dlfiles" && mode=execute
372
373 # Just use the default operation mode.
374 if test -z "$mode"; then
375 if test -n "$nonopt"; then
376 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
377 else
378 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
379 fi
380 fi
381 ;;
382 esac
383 fi
384
385 # Only execute mode is allowed to have -dlopen flags.
386 if test -n "$execute_dlfiles" && test "$mode" != execute; then
387 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
388 $echo "$help" 1>&2
389 exit 1
390 fi
391
392 # Change the help message to a mode-specific one.
393 generic_help="$help"
394 help="Try \`$modename --help --mode=$mode' for more information."
395
396 # These modes are in order of execution frequency so that they run quickly.
397 case $mode in
398 # libtool compile mode
399 compile)
400 modename="$modename: compile"
401 # Get the compilation command and the source file.
402 base_compile=
403 srcfile="$nonopt" # always keep a non-empty value in "srcfile"
404 suppress_opt=yes
405 suppress_output=
406 arg_mode=normal
407 libobj=
408 later=
409
410 for arg
411 do
412 case "$arg_mode" in
413 arg )
414 # do not "continue". Instead, add this to base_compile
415 lastarg="$arg"
416 arg_mode=normal
417 ;;
418
419 target )
420 libobj="$arg"
421 arg_mode=normal
422 continue
423 ;;
424
425 normal )
426 # Accept any command-line options.
427 case $arg in
428 -o)
429 if test -n "$libobj" ; then
430 $echo "$modename: you cannot specify \`-o' more than once" 1>&2
431 exit 1
432 fi
433 arg_mode=target
434 continue
435 ;;
436
437 -static | -prefer-pic | -prefer-non-pic)
438 later="$later $arg"
439 continue
440 ;;
441
442 -no-suppress)
443 suppress_opt=no
444 continue
445 ;;
446
447 -Xcompiler)
448 arg_mode=arg # the next one goes into the "base_compile" arg list
449 continue # The current "srcfile" will either be retained or
450 ;; # replaced later. I would guess that would be a bug.
451
452 -Wc,*)
453 args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
454 lastarg=
455 save_ifs="$IFS"; IFS=','
456 for arg in $args; do
457 IFS="$save_ifs"
458
459 # Double-quote args containing other shell metacharacters.
460 # Many Bourne shells cannot handle close brackets correctly
461 # in scan sets, so we specify it separately.
462 case $arg in
463 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
464 arg="\"$arg\""
465 ;;
466 esac
467 lastarg="$lastarg $arg"
468 done
469 IFS="$save_ifs"
470 lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
471
472 # Add the arguments to base_compile.
473 base_compile="$base_compile $lastarg"
474 continue
475 ;;
476
477 * )
478 # Accept the current argument as the source file.
479 # The previous "srcfile" becomes the current argument.
480 #
481 lastarg="$srcfile"
482 srcfile="$arg"
483 ;;
484 esac # case $arg
485 ;;
486 esac # case $arg_mode
487
488 # Aesthetically quote the previous argument.
489 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
490
491 case $lastarg in
492 # Double-quote args containing other shell metacharacters.
493 # Many Bourne shells cannot handle close brackets correctly
494 # in scan sets, so we specify it separately.
495 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
496 lastarg="\"$lastarg\""
497 ;;
498 esac
499
500 base_compile="$base_compile $lastarg"
501 done # for arg
502
503 case $arg_mode in
504 arg)
505 $echo "$modename: you must specify an argument for -Xcompile"
506 exit 1
507 ;;
508 target)
509 $echo "$modename: you must specify a target with \`-o'" 1>&2
510 exit 1
511 ;;
512 *)
513 # Get the name of the library object.
514 [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
515 ;;
516 esac
517
518 # Recognize several different file suffixes.
519 # If the user specifies -o file.o, it is replaced with file.lo
520 xform='[cCFSifmso]'
521 case $libobj in
522 *.ada) xform=ada ;;
523 *.adb) xform=adb ;;
524 *.ads) xform=ads ;;
525 *.asm) xform=asm ;;
526 *.c++) xform=c++ ;;
527 *.cc) xform=cc ;;
528 *.ii) xform=ii ;;
529 *.class) xform=class ;;
530 *.cpp) xform=cpp ;;
531 *.cxx) xform=cxx ;;
532 *.f90) xform=f90 ;;
533 *.for) xform=for ;;
534 *.java) xform=java ;;
535 esac
536
537 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
538
539 case $libobj in
540 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
541 *)
542 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
543 exit 1
544 ;;
545 esac
546
547 # Infer tagged configuration to use if any are available and
548 # if one wasn't chosen via the "--tag" command line option.
549 # Only attempt this if the compiler in the base compile
550 # command doesn't match the default compiler.
551 if test -n "$available_tags" && test -z "$tagname"; then
552 case $base_compile in
553 # Blanks in the command may have been stripped by the calling shell,
554 # but not from the CC environment variable when configure was run.
555 " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "*) ;;
556 # Blanks at the start of $base_compile will cause this to fail
557 # if we don't check for them as well.
558 *)
559 for z in $available_tags; do
560 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
561 # Evaluate the configuration.
562 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
563 case "$base_compile " in
564 "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*)
565 # The compiler in the base compile command matches
566 # the one in the tagged configuration.
567 # Assume this is the tagged configuration we want.
568 tagname=$z
569 break
570 ;;
571 esac
572 fi
573 done
574 # If $tagname still isn't set, then no tagged configuration
575 # was found and let the user know that the "--tag" command
576 # line option must be used.
577 if test -z "$tagname"; then
578 $echo "$modename: unable to infer tagged configuration"
579 $echo "$modename: specify a tag with \`--tag'" 1>&2
580 exit 1
581 # else
582 # $echo "$modename: using $tagname tagged configuration"
583 fi
584 ;;
585 esac
586 fi
587
588 for arg in $later; do
589 case $arg in
590 -static)
591 build_old_libs=yes
592 continue
593 ;;
594
595 -prefer-pic)
596 pic_mode=yes
597 continue
598 ;;
599
600 -prefer-non-pic)
601 pic_mode=no
602 continue
603 ;;
604 esac
605 done
606
607 objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
608 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
609 if test "X$xdir" = "X$obj"; then
610 xdir=
611 else
612 xdir=$xdir/
613 fi
614 lobj=${xdir}$objdir/$objname
615
616 if test -z "$base_compile"; then
617 $echo "$modename: you must specify a compilation command" 1>&2
618 $echo "$help" 1>&2
619 exit 1
620 fi
621
622 # Delete any leftover library objects.
623 if test "$build_old_libs" = yes; then
624 removelist="$obj $lobj $libobj ${libobj}T"
625 else
626 removelist="$lobj $libobj ${libobj}T"
627 fi
628
629 $run $rm $removelist
630 trap "$run $rm $removelist; exit 1" 1 2 15
631
632 # On Cygwin there's no "real" PIC flag so we must build both object types
633 case $host_os in
634 cygwin* | mingw* | pw32* | os2*)
635 pic_mode=default
636 ;;
637 esac
638 if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
639 # non-PIC code in shared libraries is not supported
640 pic_mode=default
641 fi
642
643 # Calculate the filename of the output object if compiler does
644 # not support -o with -c
645 if test "$compiler_c_o" = no; then
646 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
647 lockfile="$output_obj.lock"
648 removelist="$removelist $output_obj $lockfile"
649 trap "$run $rm $removelist; exit 1" 1 2 15
650 else
651 output_obj=
652 need_locks=no
653 lockfile=
654 fi
655
656 # Lock this critical section if it is needed
657 # We use this script file to make the link, it avoids creating a new file
658 if test "$need_locks" = yes; then
659 until $run ln "$0" "$lockfile" 2>/dev/null; do
660 $show "Waiting for $lockfile to be removed"
661 sleep 2
662 done
663 elif test "$need_locks" = warn; then
664 if test -f "$lockfile"; then
665 $echo "\
666 *** ERROR, $lockfile exists and contains:
667 `cat $lockfile 2>/dev/null`
668
669 This indicates that another process is trying to use the same
670 temporary object file, and libtool could not work around it because
671 your compiler does not support \`-c' and \`-o' together. If you
672 repeat this compilation, it may succeed, by chance, but you had better
673 avoid parallel builds (make -j) in this platform, or get a better
674 compiler."
675
676 $run $rm $removelist
677 exit 1
678 fi
679 $echo $srcfile > "$lockfile"
680 fi
681
682 if test -n "$fix_srcfile_path"; then
683 eval srcfile=\"$fix_srcfile_path\"
684 fi
685
686 $run $rm "$libobj" "${libobj}T"
687
688 # Create a libtool object file (analogous to a ".la" file),
689 # but don't create it if we're doing a dry run.
690 test -z "$run" && cat > ${libobj}T <<EOF
691 # $libobj - a libtool object file
692 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
693 #
694 # Please DO NOT delete this file!
695 # It is necessary for linking the library.
696
697 # Name of the PIC object.
698 EOF
699
700 # Only build a PIC object if we are building libtool libraries.
701 if test "$build_libtool_libs" = yes; then
702 # Without this assignment, base_compile gets emptied.
703 fbsd_hideous_sh_bug=$base_compile
704
705 if test "$pic_mode" != no; then
706 command="$base_compile $srcfile $pic_flag"
707 else
708 # Don't build PIC code
709 command="$base_compile $srcfile"
710 fi
711
712 if test ! -d "${xdir}$objdir"; then
713 $show "$mkdir ${xdir}$objdir"
714 $run $mkdir ${xdir}$objdir
715 status=$?
716 if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
717 exit $status
718 fi
719 fi
720
721 if test -z "$output_obj"; then
722 # Place PIC objects in $objdir
723 command="$command -o $lobj"
724 fi
725
726 $run $rm "$lobj" "$output_obj"
727
728 $show "$command"
729 if $run eval "$command"; then :
730 else
731 test -n "$output_obj" && $run $rm $removelist
732 exit 1
733 fi
734
735 if test "$need_locks" = warn &&
736 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
737 $echo "\
738 *** ERROR, $lockfile contains:
739 `cat $lockfile 2>/dev/null`
740
741 but it should contain:
742 $srcfile
743
744 This indicates that another process is trying to use the same
745 temporary object file, and libtool could not work around it because
746 your compiler does not support \`-c' and \`-o' together. If you
747 repeat this compilation, it may succeed, by chance, but you had better
748 avoid parallel builds (make -j) in this platform, or get a better
749 compiler."
750
751 $run $rm $removelist
752 exit 1
753 fi
754
755 # Just move the object if needed, then go on to compile the next one
756 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
757 $show "$mv $output_obj $lobj"
758 if $run $mv $output_obj $lobj; then :
759 else
760 error=$?
761 $run $rm $removelist
762 exit $error
763 fi
764 fi
765
766 # Append the name of the PIC object to the libtool object file.
767 test -z "$run" && cat >> ${libobj}T <<EOF
768 pic_object='$objdir/$objname'
769
770 EOF
771
772 # Allow error messages only from the first compilation.
773 if test "$suppress_opt" = yes; then
774 suppress_output=' >/dev/null 2>&1'
775 fi
776 else
777 # No PIC object so indicate it doesn't exist in the libtool
778 # object file.
779 test -z "$run" && cat >> ${libobj}T <<EOF
780 pic_object=none
781
782 EOF
783 fi
784
785 # Only build a position-dependent object if we build old libraries.
786 if test "$build_old_libs" = yes; then
787 if test "$pic_mode" != yes; then
788 # Don't build PIC code
789 command="$base_compile $srcfile"
790 else
791 command="$base_compile $srcfile $pic_flag"
792 fi
793 if test "$compiler_c_o" = yes; then
794 command="$command -o $obj"
795 fi
796
797 # Suppress compiler output if we already did a PIC compilation.
798 command="$command$suppress_output"
799 $run $rm "$obj" "$output_obj"
800 $show "$command"
801 if $run eval "$command"; then :
802 else
803 $run $rm $removelist
804 exit 1
805 fi
806
807 if test "$need_locks" = warn &&
808 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
809 $echo "\
810 *** ERROR, $lockfile contains:
811 `cat $lockfile 2>/dev/null`
812
813 but it should contain:
814 $srcfile
815
816 This indicates that another process is trying to use the same
817 temporary object file, and libtool could not work around it because
818 your compiler does not support \`-c' and \`-o' together. If you
819 repeat this compilation, it may succeed, by chance, but you had better
820 avoid parallel builds (make -j) in this platform, or get a better
821 compiler."
822
823 $run $rm $removelist
824 exit 1
825 fi
826
827 # Just move the object if needed
828 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
829 $show "$mv $output_obj $obj"
830 if $run $mv $output_obj $obj; then :
831 else
832 error=$?
833 $run $rm $removelist
834 exit $error
835 fi
836 fi
837
838 # Append the name of the non-PIC object the libtool object file.
839 # Only append if the libtool object file exists.
840 test -z "$run" && cat >> ${libobj}T <<EOF
841 # Name of the non-PIC object.
842 non_pic_object='$objname'
843
844 EOF
845 else
846 # Append the name of the non-PIC object the libtool object file.
847 # Only append if the libtool object file exists.
848 test -z "$run" && cat >> ${libobj}T <<EOF
849 # Name of the non-PIC object.
850 non_pic_object=none
851
852 EOF
853 fi
854
855 $run $mv "${libobj}T" "${libobj}"
856
857 # Unlock the critical section if it was locked
858 if test "$need_locks" != no; then
859 $run $rm "$lockfile"
860 fi
861
862 exit 0
863 ;;
864
865 # libtool link mode
866 link | relink)
867 modename="$modename: link"
868 case $host in
869 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
870 # It is impossible to link a dll without this setting, and
871 # we shouldn't force the makefile maintainer to figure out
872 # which system we are compiling for in order to pass an extra
873 # flag for every libtool invocation.
874 # allow_undefined=no
875
876 # FIXME: Unfortunately, there are problems with the above when trying
877 # to make a dll which has undefined symbols, in which case not
878 # even a static library is built. For now, we need to specify
879 # -no-undefined on the libtool link line when we can be certain
880 # that all symbols are satisfied, otherwise we get a static library.
881 allow_undefined=yes
882 ;;
883 *)
884 allow_undefined=yes
885 ;;
886 esac
887 libtool_args="$nonopt"
888 base_compile="$nonopt $@"
889 compile_command="$nonopt"
890 finalize_command="$nonopt"
891
892 compile_rpath=
893 finalize_rpath=
894 compile_shlibpath=
895 finalize_shlibpath=
896 convenience=
897 old_convenience=
898 deplibs=
899 old_deplibs=
900 compiler_flags=
901 linker_flags=
902 dllsearchpath=
903 lib_search_path=`pwd`
904 inst_prefix_dir=
905
906 avoid_version=no
907 dlfiles=
908 dlprefiles=
909 dlself=no
910 export_dynamic=no
911 export_symbols=
912 export_symbols_regex=
913 generated=
914 libobjs=
915 ltlibs=
916 module=no
917 no_install=no
918 objs=
919 non_pic_objects=
920 precious_files_regex=
921 prefer_static_libs=no
922 preload=no
923 prev=
924 prevarg=
925 release=
926 rpath=
927 xrpath=
928 perm_rpath=
929 temp_rpath=
930 thread_safe=no
931 vinfo=
932 vinfo_number=no
933
934 # Infer tagged configuration to use if any are available and
935 # if one wasn't chosen via the "--tag" command line option.
936 # Only attempt this if the compiler in the base link
937 # command doesn't match the default compiler.
938 if test -n "$available_tags" && test -z "$tagname"; then
939 case $base_compile in
940 # Blanks in the command may have been stripped by the calling shell,
941 # but not from the CC environment variable when configure was run.
942 "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) ;;
943 # Blanks at the start of $base_compile will cause this to fail
944 # if we don't check for them as well.
945 *)
946 for z in $available_tags; do
947 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
948 # Evaluate the configuration.
949 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
950 case $base_compile in
951 "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*)
952 # The compiler in $compile_command matches
953 # the one in the tagged configuration.
954 # Assume this is the tagged configuration we want.
955 tagname=$z
956 break
957 ;;
958 esac
959 fi
960 done
961 # If $tagname still isn't set, then no tagged configuration
962 # was found and let the user know that the "--tag" command
963 # line option must be used.
964 if test -z "$tagname"; then
965 $echo "$modename: unable to infer tagged configuration"
966 $echo "$modename: specify a tag with \`--tag'" 1>&2
967 exit 1
968 # else
969 # $echo "$modename: using $tagname tagged configuration"
970 fi
971 ;;
972 esac
973 fi
974
975 # We need to know -static, to get the right output filenames.
976 for arg
977 do
978 case $arg in
979 -all-static | -static)
980 if test "X$arg" = "X-all-static"; then
981 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
982 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
983 fi
984 if test -n "$link_static_flag"; then
985 dlopen_self=$dlopen_self_static
986 fi
987 else
988 if test -z "$pic_flag" && test -n "$link_static_flag"; then
989 dlopen_self=$dlopen_self_static
990 fi
991 fi
992 build_libtool_libs=no
993 build_old_libs=yes
994 prefer_static_libs=yes
995 break
996 ;;
997 esac
998 done
999
1000 # See if our shared archives depend on static archives.
1001 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
1002
1003 # Go through the arguments, transforming them on the way.
1004 while test "$#" -gt 0; do
1005 arg="$1"
1006 shift
1007 case $arg in
1008 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1009 qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1010 ;;
1011 *) qarg=$arg ;;
1012 esac
1013 libtool_args="$libtool_args $qarg"
1014
1015 # If the previous option needs an argument, assign it.
1016 if test -n "$prev"; then
1017 case $prev in
1018 output)
1019 compile_command="$compile_command @OUTPUT@"
1020 finalize_command="$finalize_command @OUTPUT@"
1021 ;;
1022 esac
1023
1024 case $prev in
1025 dlfiles|dlprefiles)
1026 if test "$preload" = no; then
1027 # Add the symbol object into the linking commands.
1028 compile_command="$compile_command @SYMFILE@"
1029 finalize_command="$finalize_command @SYMFILE@"
1030 preload=yes
1031 fi
1032 case $arg in
1033 *.la | *.lo) ;; # We handle these cases below.
1034 force)
1035 if test "$dlself" = no; then
1036 dlself=needless
1037 export_dynamic=yes
1038 fi
1039 prev=
1040 continue
1041 ;;
1042 self)
1043 if test "$prev" = dlprefiles; then
1044 dlself=yes
1045 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1046 dlself=yes
1047 else
1048 dlself=needless
1049 export_dynamic=yes
1050 fi
1051 prev=
1052 continue
1053 ;;
1054 *)
1055 if test "$prev" = dlfiles; then
1056 dlfiles="$dlfiles $arg"
1057 else
1058 dlprefiles="$dlprefiles $arg"
1059 fi
1060 prev=
1061 continue
1062 ;;
1063 esac
1064 ;;
1065 expsyms)
1066 export_symbols="$arg"
1067 if test ! -f "$arg"; then
1068 $echo "$modename: symbol file \`$arg' does not exist"
1069 exit 1
1070 fi
1071 prev=
1072 continue
1073 ;;
1074 expsyms_regex)
1075 export_symbols_regex="$arg"
1076 prev=
1077 continue
1078 ;;
1079 inst_prefix)
1080 inst_prefix_dir="$arg"
1081 prev=
1082 continue
1083 ;;
1084 precious_regex)
1085 precious_files_regex="$arg"
1086 prev=
1087 continue
1088 ;;
1089 release)
1090 release="-$arg"
1091 prev=
1092 continue
1093 ;;
1094 objectlist)
1095 if test -f "$arg"; then
1096 save_arg=$arg
1097 moreargs=
1098 for fil in `cat $save_arg`
1099 do
1100 # moreargs="$moreargs $fil"
1101 arg=$fil
1102 # A libtool-controlled object.
1103
1104 # Check to see that this really is a libtool object.
1105 if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1106 pic_object=
1107 non_pic_object=
1108
1109 # Read the .lo file
1110 # If there is no directory component, then add one.
1111 case $arg in
1112 */* | *\\*) . $arg ;;
1113 *) . ./$arg ;;
1114 esac
1115
1116 if test -z "$pic_object" || \
1117 test -z "$non_pic_object" ||
1118 test "$pic_object" = none && \
1119 test "$non_pic_object" = none; then
1120 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1121 exit 1
1122 fi
1123
1124 # Extract subdirectory from the argument.
1125 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1126 if test "X$xdir" = "X$arg"; then
1127 xdir=
1128 else
1129 xdir="$xdir/"
1130 fi
1131
1132 if test "$pic_object" != none; then
1133 # Prepend the subdirectory the object is found in.
1134 pic_object="$xdir$pic_object"
1135
1136 if test "$prev" = dlfiles; then
1137 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1138 dlfiles="$dlfiles $pic_object"
1139 prev=
1140 continue
1141 else
1142 # If libtool objects are unsupported, then we need to preload.
1143 prev=dlprefiles
1144 fi
1145 fi
1146
1147 # CHECK ME: I think I busted this. -Ossama
1148 if test "$prev" = dlprefiles; then
1149 # Preload the old-style object.
1150 dlprefiles="$dlprefiles $pic_object"
1151 prev=
1152 fi
1153
1154 # A PIC object.
1155 libobjs="$libobjs $pic_object"
1156 arg="$pic_object"
1157 fi
1158
1159 # Non-PIC object.
1160 if test "$non_pic_object" != none; then
1161 # Prepend the subdirectory the object is found in.
1162 non_pic_object="$xdir$non_pic_object"
1163
1164 # A standard non-PIC object
1165 non_pic_objects="$non_pic_objects $non_pic_object"
1166 if test -z "$pic_object" || test "$pic_object" = none ; then
1167 arg="$non_pic_object"
1168 fi
1169 fi
1170 else
1171 # Only an error if not doing a dry-run.
1172 if test -z "$run"; then
1173 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1174 exit 1
1175 else
1176 # Dry-run case.
1177
1178 # Extract subdirectory from the argument.
1179 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1180 if test "X$xdir" = "X$arg"; then
1181 xdir=
1182 else
1183 xdir="$xdir/"
1184 fi
1185
1186 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1187 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1188 libobjs="$libobjs $pic_object"
1189 non_pic_objects="$non_pic_objects $non_pic_object"
1190 fi
1191 fi
1192 done
1193 else
1194 $echo "$modename: link input file \`$save_arg' does not exist"
1195 exit 1
1196 fi
1197 arg=$save_arg
1198 prev=
1199 continue
1200 ;;
1201 rpath | xrpath)
1202 # We need an absolute path.
1203 case $arg in
1204 [\\/]* | [A-Za-z]:[\\/]*) ;;
1205 *)
1206 $echo "$modename: only absolute run-paths are allowed" 1>&2
1207 exit 1
1208 ;;
1209 esac
1210 if test "$prev" = rpath; then
1211 case "$rpath " in
1212 *" $arg "*) ;;
1213 *) rpath="$rpath $arg" ;;
1214 esac
1215 else
1216 case "$xrpath " in
1217 *" $arg "*) ;;
1218 *) xrpath="$xrpath $arg" ;;
1219 esac
1220 fi
1221 prev=
1222 continue
1223 ;;
1224 xcompiler)
1225 compiler_flags="$compiler_flags $qarg"
1226 prev=
1227 compile_command="$compile_command $qarg"
1228 finalize_command="$finalize_command $qarg"
1229 continue
1230 ;;
1231 xlinker)
1232 linker_flags="$linker_flags $qarg"
1233 compiler_flags="$compiler_flags $wl$qarg"
1234 prev=
1235 compile_command="$compile_command $wl$qarg"
1236 finalize_command="$finalize_command $wl$qarg"
1237 continue
1238 ;;
1239 xcclinker)
1240 linker_flags="$linker_flags $qarg"
1241 compiler_flags="$compiler_flags $qarg"
1242 prev=
1243 compile_command="$compile_command $qarg"
1244 finalize_command="$finalize_command $qarg"
1245 continue
1246 ;;
1247 *)
1248 eval "$prev=\"\$arg\""
1249 prev=
1250 continue
1251 ;;
1252 esac
1253 fi # test -n "$prev"
1254
1255 prevarg="$arg"
1256
1257 case $arg in
1258 -all-static)
1259 if test -n "$link_static_flag"; then
1260 compile_command="$compile_command $link_static_flag"
1261 finalize_command="$finalize_command $link_static_flag"
1262 fi
1263 continue
1264 ;;
1265
1266 -allow-undefined)
1267 # FIXME: remove this flag sometime in the future.
1268 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1269 continue
1270 ;;
1271
1272 -avoid-version)
1273 avoid_version=yes
1274 continue
1275 ;;
1276
1277 -dlopen)
1278 prev=dlfiles
1279 continue
1280 ;;
1281
1282 -dlpreopen)
1283 prev=dlprefiles
1284 continue
1285 ;;
1286
1287 -export-dynamic)
1288 export_dynamic=yes
1289 continue
1290 ;;
1291
1292 -export-symbols | -export-symbols-regex)
1293 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1294 $echo "$modename: more than one -exported-symbols argument is not allowed"
1295 exit 1
1296 fi
1297 if test "X$arg" = "X-export-symbols"; then
1298 prev=expsyms
1299 else
1300 prev=expsyms_regex
1301 fi
1302 continue
1303 ;;
1304
1305 -inst-prefix-dir)
1306 prev=inst_prefix
1307 continue
1308 ;;
1309
1310 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1311 # so, if we see these flags be careful not to treat them like -L
1312 -L[A-Z][A-Z]*:*)
1313 case $with_gcc/$host in
1314 no/*-*-irix* | /*-*-irix*)
1315 compile_command="$compile_command $arg"
1316 finalize_command="$finalize_command $arg"
1317 ;;
1318 esac
1319 continue
1320 ;;
1321
1322 -L*)
1323 dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1324 # We need an absolute path.
1325 case $dir in
1326 [\\/]* | [A-Za-z]:[\\/]*) ;;
1327 *)
1328 absdir=`cd "$dir" && pwd`
1329 if test -z "$absdir"; then
1330 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1331 exit 1
1332 fi
1333 dir="$absdir"
1334 ;;
1335 esac
1336 case "$deplibs " in
1337 *" -L$dir "*) ;;
1338 *)
1339 deplibs="$deplibs -L$dir"
1340 lib_search_path="$lib_search_path $dir"
1341 ;;
1342 esac
1343 case $host in
1344 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1345 case :$dllsearchpath: in
1346 *":$dir:"*) ;;
1347 *) dllsearchpath="$dllsearchpath:$dir";;
1348 esac
1349 ;;
1350 esac
1351 continue
1352 ;;
1353
1354 -l*)
1355 if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1356 case $host in
1357 *-*-cygwin* | *-*-pw32* | *-*-beos*)
1358 # These systems don't actually have a C or math library (as such)
1359 continue
1360 ;;
1361 *-*-mingw* | *-*-os2*)
1362 # These systems don't actually have a C library (as such)
1363 test "X$arg" = "X-lc" && continue
1364 ;;
1365 *-*-openbsd* | *-*-freebsd*)
1366 # Do not include libc due to us having libc/libc_r.
1367 test "X$arg" = "X-lc" && continue
1368 ;;
1369 *-*-rhapsody* | *-*-darwin1.[012])
1370 # Rhapsody C and math libraries are in the System framework
1371 deplibs="$deplibs -framework System"
1372 continue
1373 esac
1374 elif test "X$arg" = "X-lc_r"; then
1375 case $host in
1376 *-*-openbsd* | *-*-freebsd*)
1377 # Do not include libc_r directly, use -pthread flag.
1378 continue
1379 ;;
1380 esac
1381 fi
1382 deplibs="$deplibs $arg"
1383 continue
1384 ;;
1385
1386 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
1387 deplibs="$deplibs $arg"
1388 continue
1389 ;;
1390
1391 -module)
1392 module=yes
1393 continue
1394 ;;
1395
1396 # gcc -m* arguments should be passed to the linker via $compiler_flags
1397 # in order to pass architecture information to the linker
1398 # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo
1399 # but this is not reliable with gcc because gcc may use -mfoo to
1400 # select a different linker, different libraries, etc, while
1401 # -Wl,-mfoo simply passes -mfoo to the linker.
1402 -m*)
1403 # Unknown arguments in both finalize_command and compile_command need
1404 # to be aesthetically quoted because they are evaled later.
1405 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1406 case $arg in
1407 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1408 arg="\"$arg\""
1409 ;;
1410 esac
1411 compile_command="$compile_command $arg"
1412 finalize_command="$finalize_command $arg"
1413 if test "$with_gcc" = "yes" ; then
1414 compiler_flags="$compiler_flags $arg"
1415 fi
1416 continue
1417 ;;
1418
1419 -shrext)
1420 prev=shrext
1421 continue
1422 ;;
1423
1424 -no-fast-install)
1425 fast_install=no
1426 continue
1427 ;;
1428
1429 -no-install)
1430 case $host in
1431 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1432 # The PATH hackery in wrapper scripts is required on Windows
1433 # in order for the loader to find any dlls it needs.
1434 $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1435 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1436 fast_install=no
1437 ;;
1438 *) no_install=yes ;;
1439 esac
1440 continue
1441 ;;
1442
1443 -no-undefined)
1444 allow_undefined=no
1445 continue
1446 ;;
1447
1448 -objectlist)
1449 prev=objectlist
1450 continue
1451 ;;
1452
1453 -o) prev=output ;;
1454
1455 -precious-files-regex)
1456 prev=precious_regex
1457 continue
1458 ;;
1459
1460 -release)
1461 prev=release
1462 continue
1463 ;;
1464
1465 -rpath)
1466 prev=rpath
1467 continue
1468 ;;
1469
1470 -R)
1471 prev=xrpath
1472 continue
1473 ;;
1474
1475 -R*)
1476 dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1477 # We need an absolute path.
1478 case $dir in
1479 [\\/]* | [A-Za-z]:[\\/]*) ;;
1480 *)
1481 $echo "$modename: only absolute run-paths are allowed" 1>&2
1482 exit 1
1483 ;;
1484 esac
1485 case "$xrpath " in
1486 *" $dir "*) ;;
1487 *) xrpath="$xrpath $dir" ;;
1488 esac
1489 continue
1490 ;;
1491
1492 -static)
1493 # The effects of -static are defined in a previous loop.
1494 # We used to do the same as -all-static on platforms that
1495 # didn't have a PIC flag, but the assumption that the effects
1496 # would be equivalent was wrong. It would break on at least
1497 # Digital Unix and AIX.
1498 continue
1499 ;;
1500
1501 -thread-safe)
1502 thread_safe=yes
1503 continue
1504 ;;
1505
1506 -version-info)
1507 prev=vinfo
1508 continue
1509 ;;
1510 -version-number)
1511 prev=vinfo
1512 vinfo_number=yes
1513 continue
1514 ;;
1515
1516 -Wc,*)
1517 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1518 arg=
1519 save_ifs="$IFS"; IFS=','
1520 for flag in $args; do
1521 IFS="$save_ifs"
1522 case $flag in
1523 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1524 flag="\"$flag\""
1525 ;;
1526 esac
1527 arg="$arg $wl$flag"
1528 compiler_flags="$compiler_flags $flag"
1529 done
1530 IFS="$save_ifs"
1531 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1532 ;;
1533
1534 -Wl,*)
1535 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1536 arg=
1537 save_ifs="$IFS"; IFS=','
1538 for flag in $args; do
1539 IFS="$save_ifs"
1540 case $flag in
1541 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1542 flag="\"$flag\""
1543 ;;
1544 esac
1545 arg="$arg $wl$flag"
1546 compiler_flags="$compiler_flags $wl$flag"
1547 linker_flags="$linker_flags $flag"
1548 done
1549 IFS="$save_ifs"
1550 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1551 ;;
1552
1553 -Xcompiler)
1554 prev=xcompiler
1555 continue
1556 ;;
1557
1558 -Xlinker)
1559 prev=xlinker
1560 continue
1561 ;;
1562
1563 -XCClinker)
1564 prev=xcclinker
1565 continue
1566 ;;
1567
1568 -Kthread | -mthreads | -mt | -pthread | -pthreads | -threads | -qthreaded | -kthread )
1569 compiler_flags="$compiler_flags $arg"
1570 continue
1571 ;;
1572
1573 # Some other compiler flag.
1574 -* | +*)
1575 # Unknown arguments in both finalize_command and compile_command need
1576 # to be aesthetically quoted because they are evaled later.
1577 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1578 case $arg in
1579 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1580 arg="\"$arg\""
1581 ;;
1582 esac
1583 ;;
1584
1585 *.$objext)
1586 # A standard object.
1587 objs="$objs $arg"
1588 ;;
1589
1590 *.lo)
1591 # A libtool-controlled object.
1592
1593 # Check to see that this really is a libtool object.
1594 if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1595 pic_object=
1596 non_pic_object=
1597
1598 # Read the .lo file
1599 # If there is no directory component, then add one.
1600 case $arg in
1601 */* | *\\*) . $arg ;;
1602 *) . ./$arg ;;
1603 esac
1604
1605 if test -z "$pic_object" || \
1606 test -z "$non_pic_object" ||
1607 test "$pic_object" = none && \
1608 test "$non_pic_object" = none; then
1609 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1610 exit 1
1611 fi
1612
1613 # Extract subdirectory from the argument.
1614 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1615 if test "X$xdir" = "X$arg"; then
1616 xdir=
1617 else
1618 xdir="$xdir/"
1619 fi
1620
1621 if test "$pic_object" != none; then
1622 # Prepend the subdirectory the object is found in.
1623 pic_object="$xdir$pic_object"
1624
1625 if test "$prev" = dlfiles; then
1626 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1627 dlfiles="$dlfiles $pic_object"
1628 prev=
1629 continue
1630 else
1631 # If libtool objects are unsupported, then we need to preload.
1632 prev=dlprefiles
1633 fi
1634 fi
1635
1636 # CHECK ME: I think I busted this. -Ossama
1637 if test "$prev" = dlprefiles; then
1638 # Preload the old-style object.
1639 dlprefiles="$dlprefiles $pic_object"
1640 prev=
1641 fi
1642
1643 # A PIC object.
1644 libobjs="$libobjs $pic_object"
1645 arg="$pic_object"
1646 fi
1647
1648 # Non-PIC object.
1649 if test "$non_pic_object" != none; then
1650 # Prepend the subdirectory the object is found in.
1651 non_pic_object="$xdir$non_pic_object"
1652
1653 # A standard non-PIC object
1654 non_pic_objects="$non_pic_objects $non_pic_object"
1655 if test -z "$pic_object" || test "$pic_object" = none ; then
1656 arg="$non_pic_object"
1657 fi
1658 fi
1659 else
1660 # Only an error if not doing a dry-run.
1661 if test -z "$run"; then
1662 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1663 exit 1
1664 else
1665 # Dry-run case.
1666
1667 # Extract subdirectory from the argument.
1668 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1669 if test "X$xdir" = "X$arg"; then
1670 xdir=
1671 else
1672 xdir="$xdir/"
1673 fi
1674
1675 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1676 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1677 libobjs="$libobjs $pic_object"
1678 non_pic_objects="$non_pic_objects $non_pic_object"
1679 fi
1680 fi
1681 ;;
1682
1683 *.$libext)
1684 # An archive.
1685 deplibs="$deplibs $arg"
1686 old_deplibs="$old_deplibs $arg"
1687 continue
1688 ;;
1689
1690 *.la)
1691 # A libtool-controlled library.
1692
1693 if test "$prev" = dlfiles; then
1694 # This library was specified with -dlopen.
1695 dlfiles="$dlfiles $arg"
1696 prev=
1697 elif test "$prev" = dlprefiles; then
1698 # The library was specified with -dlpreopen.
1699 dlprefiles="$dlprefiles $arg"
1700 prev=
1701 else
1702 deplibs="$deplibs $arg"
1703 fi
1704 continue
1705 ;;
1706
1707 # Some other compiler argument.
1708 *)
1709 # Unknown arguments in both finalize_command and compile_command need
1710 # to be aesthetically quoted because they are evaled later.
1711 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1712 case $arg in
1713 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1714 arg="\"$arg\""
1715 ;;
1716 esac
1717 ;;
1718 esac # arg
1719
1720 # Now actually substitute the argument into the commands.
1721 if test -n "$arg"; then
1722 compile_command="$compile_command $arg"
1723 finalize_command="$finalize_command $arg"
1724 fi
1725 done # argument parsing loop
1726
1727 if test -n "$prev"; then
1728 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1729 $echo "$help" 1>&2
1730 exit 1
1731 fi
1732
1733 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
1734 eval arg=\"$export_dynamic_flag_spec\"
1735 compile_command="$compile_command $arg"
1736 finalize_command="$finalize_command $arg"
1737 fi
1738
1739 oldlibs=
1740 # calculate the name of the file, without its directory
1741 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
1742 libobjs_save="$libobjs"
1743
1744 if test -n "$shlibpath_var"; then
1745 # get the directories listed in $shlibpath_var
1746 eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
1747 else
1748 shlib_search_path=
1749 fi
1750 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
1751 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
1752
1753 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
1754 if test "X$output_objdir" = "X$output"; then
1755 output_objdir="$objdir"
1756 else
1757 output_objdir="$output_objdir/$objdir"
1758 fi
1759 # Create the object directory.
1760 if test ! -d "$output_objdir"; then
1761 $show "$mkdir $output_objdir"
1762 $run $mkdir $output_objdir
1763 status=$?
1764 if test "$status" -ne 0 && test ! -d "$output_objdir"; then
1765 exit $status
1766 fi
1767 fi
1768
1769 # Determine the type of output
1770 case $output in
1771 "")
1772 $echo "$modename: you must specify an output file" 1>&2
1773 $echo "$help" 1>&2
1774 exit 1
1775 ;;
1776 *.$libext) linkmode=oldlib ;;
1777 *.lo | *.$objext) linkmode=obj ;;
1778 *.la) linkmode=lib ;;
1779 *) linkmode=prog ;; # Anything else should be a program.
1780 esac
1781
1782 case $host in
1783 *cygwin* | *mingw* | *pw32*)
1784 # don't eliminate duplcations in $postdeps and $predeps
1785 duplicate_compiler_generated_deps=yes
1786 ;;
1787 *)
1788 duplicate_compiler_generated_deps=$duplicate_deps
1789 ;;
1790 esac
1791 specialdeplibs=
1792
1793 libs=
1794 # Find all interdependent deplibs by searching for libraries
1795 # that are linked more than once (e.g. -la -lb -la)
1796 for deplib in $deplibs; do
1797 if test "X$duplicate_deps" = "Xyes" ; then
1798 case "$libs " in
1799 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
1800 esac
1801 fi
1802 libs="$libs $deplib"
1803 done
1804
1805 if test "$linkmode" = lib; then
1806 libs="$predeps $libs $compiler_lib_search_path $postdeps"
1807
1808 # Compute libraries that are listed more than once in $predeps
1809 # $postdeps and mark them as special (i.e., whose duplicates are
1810 # not to be eliminated).
1811 pre_post_deps=
1812 if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
1813 for pre_post_dep in $predeps $postdeps; do
1814 case "$pre_post_deps " in
1815 *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
1816 esac
1817 pre_post_deps="$pre_post_deps $pre_post_dep"
1818 done
1819 fi
1820 pre_post_deps=
1821 fi
1822
1823 deplibs=
1824 newdependency_libs=
1825 newlib_search_path=
1826 need_relink=no # whether we're linking any uninstalled libtool libraries
1827 notinst_deplibs= # not-installed libtool libraries
1828 notinst_path= # paths that contain not-installed libtool libraries
1829 case $linkmode in
1830 lib)
1831 passes="conv link"
1832 for file in $dlfiles $dlprefiles; do
1833 case $file in
1834 *.la) ;;
1835 *)
1836 $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
1837 exit 1
1838 ;;
1839 esac
1840 done
1841 ;;
1842 prog)
1843 compile_deplibs=
1844 finalize_deplibs=
1845 alldeplibs=no
1846 newdlfiles=
1847 newdlprefiles=
1848 passes="conv scan dlopen dlpreopen link"
1849 ;;
1850 *) passes="conv"
1851 ;;
1852 esac
1853 for pass in $passes; do
1854 if test "$linkmode,$pass" = "lib,link" ||
1855 test "$linkmode,$pass" = "prog,scan"; then
1856 libs="$deplibs"
1857 deplibs=
1858 fi
1859 if test "$linkmode" = prog; then
1860 case $pass in
1861 dlopen) libs="$dlfiles" ;;
1862 dlpreopen) libs="$dlprefiles" ;;
1863 link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
1864 esac
1865 fi
1866 if test "$pass" = dlopen; then
1867 # Collect dlpreopened libraries
1868 save_deplibs="$deplibs"
1869 deplibs=
1870 fi
1871 for deplib in $libs; do
1872 lib=
1873 found=no
1874 case $deplib in
1875 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
1876 if test "$linkmode,$pass" = "prog,link"; then
1877 compile_deplibs="$deplib $compile_deplibs"
1878 finalize_deplibs="$deplib $finalize_deplibs"
1879 else
1880 deplibs="$deplib $deplibs"
1881 fi
1882 continue
1883 ;;
1884 -l*)
1885 if test "$linkmode" != lib && test "$linkmode" != prog; then
1886 $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
1887 continue
1888 fi
1889 if test "$pass" = conv; then
1890 deplibs="$deplib $deplibs"
1891 continue
1892 fi
1893 name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
1894 for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
1895 for search_ext in .la $shrext .so .a; do
1896 # Search the libtool library
1897 lib="$searchdir/lib${name}${search_ext}"
1898 if test -f "$lib"; then
1899 if test "$search_ext" = ".la"; then
1900 found=yes
1901 else
1902 found=no
1903 fi
1904 break 2
1905 fi
1906 done
1907 done
1908 if test "$found" != yes; then
1909 # deplib doesn't seem to be a libtool library
1910 if test "$linkmode,$pass" = "prog,link"; then
1911 compile_deplibs="$deplib $compile_deplibs"
1912 finalize_deplibs="$deplib $finalize_deplibs"
1913 else
1914 deplibs="$deplib $deplibs"
1915 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
1916 fi
1917 continue
1918 else # deplib is a libtool library
1919 # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
1920 # We need to do some special things here, and not later.
1921 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
1922 case " $predeps $postdeps " in
1923 *" $deplib "*)
1924 if (${SED} -e '2q' $lib |
1925 grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1926 library_names=
1927 old_library=
1928 case $lib in
1929 */* | *\\*) . $lib ;;
1930 *) . ./$lib ;;
1931 esac
1932 for l in $old_library $library_names; do
1933 ll="$l"
1934 done
1935 if test "X$ll" = "X$old_library" ; then # only static version available
1936 found=no
1937 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
1938 test "X$ladir" = "X$lib" && ladir="."
1939 lib=$ladir/$old_library
1940 if test "$linkmode,$pass" = "prog,link"; then
1941 compile_deplibs="$deplib $compile_deplibs"
1942 finalize_deplibs="$deplib $finalize_deplibs"
1943 else
1944 deplibs="$deplib $deplibs"
1945 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
1946 fi
1947 continue
1948 fi
1949 fi
1950 ;;
1951 *) ;;
1952 esac
1953 fi
1954 fi
1955 ;; # -l
1956 -L*)
1957 case $linkmode in
1958 lib)
1959 deplibs="$deplib $deplibs"
1960 test "$pass" = conv && continue
1961 newdependency_libs="$deplib $newdependency_libs"
1962 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1963 ;;
1964 prog)
1965 if test "$pass" = conv; then
1966 deplibs="$deplib $deplibs"
1967 continue
1968 fi
1969 if test "$pass" = scan; then
1970 deplibs="$deplib $deplibs"
1971 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
1972 else
1973 compile_deplibs="$deplib $compile_deplibs"
1974 finalize_deplibs="$deplib $finalize_deplibs"
1975 fi
1976 ;;
1977 *)
1978 $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
1979 ;;
1980 esac # linkmode
1981 continue
1982 ;; # -L
1983 -R*)
1984 if test "$pass" = link; then
1985 dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
1986 # Make sure the xrpath contains only unique directories.
1987 case "$xrpath " in
1988 *" $dir "*) ;;
1989 *) xrpath="$xrpath $dir" ;;
1990 esac
1991 fi
1992 deplibs="$deplib $deplibs"
1993 continue
1994 ;;
1995 *.la) lib="$deplib" ;;
1996 *.$libext)
1997 if test "$pass" = conv; then
1998 deplibs="$deplib $deplibs"
1999 continue
2000 fi
2001 case $linkmode in
2002 lib)
2003 if test "$deplibs_check_method" != pass_all; then
2004 $echo
2005 $echo "*** Warning: Trying to link with static lib archive $deplib."
2006 $echo "*** I have the capability to make that library automatically link in when"
2007 $echo "*** you link to this library. But I can only do this if you have a"
2008 $echo "*** shared version of the library, which you do not appear to have"
2009 $echo "*** because the file extensions .$libext of this argument makes me believe"
2010 $echo "*** that it is just a static archive that I should not used here."
2011 else
2012 $echo
2013 $echo "*** Warning: Linking the shared library $output against the"
2014 $echo "*** static library $deplib is not portable!"
2015 deplibs="$deplib $deplibs"
2016 fi
2017 continue
2018 ;;
2019 prog)
2020 if test "$pass" != link; then
2021 deplibs="$deplib $deplibs"
2022 else
2023 compile_deplibs="$deplib $compile_deplibs"
2024 finalize_deplibs="$deplib $finalize_deplibs"
2025 fi
2026 continue
2027 ;;
2028 esac # linkmode
2029 ;; # *.$libext
2030 *.lo | *.$objext)
2031 if test "$pass" = conv; then
2032 deplibs="$deplib $deplibs"
2033 elif test "$linkmode" = prog; then
2034 if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2035 # If there is no dlopen support or we're linking statically,
2036 # we need to preload.
2037 newdlprefiles="$newdlprefiles $deplib"
2038 compile_deplibs="$deplib $compile_deplibs"
2039 finalize_deplibs="$deplib $finalize_deplibs"
2040 else
2041 newdlfiles="$newdlfiles $deplib"
2042 fi
2043 fi
2044 continue
2045 ;;
2046 %DEPLIBS%)
2047 alldeplibs=yes
2048 continue
2049 ;;
2050 esac # case $deplib
2051 if test "$found" = yes || test -f "$lib"; then :
2052 else
2053 $echo "$modename: cannot find the library \`$lib'" 1>&2
2054 exit 1
2055 fi
2056
2057 # Check to see that this really is a libtool archive.
2058 if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2059 else
2060 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2061 exit 1
2062 fi
2063
2064 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2065 test "X$ladir" = "X$lib" && ladir="."
2066
2067 dlname=
2068 dlopen=
2069 dlpreopen=
2070 libdir=
2071 library_names=
2072 old_library=
2073 # If the library was installed with an old release of libtool,
2074 # it will not redefine variables installed, or shouldnotlink
2075 installed=yes
2076 shouldnotlink=no
2077
2078 # Read the .la file
2079 case $lib in
2080 */* | *\\*) . $lib ;;
2081 *) . ./$lib ;;
2082 esac
2083
2084 if test "$linkmode,$pass" = "lib,link" ||
2085 test "$linkmode,$pass" = "prog,scan" ||
2086 { test "$linkmode" != prog && test "$linkmode" != lib; }; then
2087 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2088 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2089 fi
2090
2091 if test "$pass" = conv; then
2092 # Only check for convenience libraries
2093 deplibs="$lib $deplibs"
2094 if test -z "$libdir"; then
2095 if test -z "$old_library"; then
2096 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2097 exit 1
2098 fi
2099 # It is a libtool convenience library, so add in its objects.
2100 convenience="$convenience $ladir/$objdir/$old_library"
2101 old_convenience="$old_convenience $ladir/$objdir/$old_library"
2102 tmp_libs=
2103 for deplib in $dependency_libs; do
2104 deplibs="$deplib $deplibs"
2105 if test "X$duplicate_deps" = "Xyes" ; then
2106 case "$tmp_libs " in
2107 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2108 esac
2109 fi
2110 tmp_libs="$tmp_libs $deplib"
2111 done
2112 elif test "$linkmode" != prog && test "$linkmode" != lib; then
2113 $echo "$modename: \`$lib' is not a convenience library" 1>&2
2114 exit 1
2115 fi
2116 continue
2117 fi # $pass = conv
2118
2119
2120 # Get the name of the library we link against.
2121 linklib=
2122 for l in $old_library $library_names; do
2123 linklib="$l"
2124 done
2125 if test -z "$linklib"; then
2126 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2127 exit 1
2128 fi
2129
2130 # This library was specified with -dlopen.
2131 if test "$pass" = dlopen; then
2132 if test -z "$libdir"; then
2133 $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2134 exit 1
2135 fi
2136 if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2137 # If there is no dlname, no dlopen support or we're linking
2138 # statically, we need to preload. We also need to preload any
2139 # dependent libraries so libltdl's deplib preloader doesn't
2140 # bomb out in the load deplibs phase.
2141 dlprefiles="$dlprefiles $lib $dependency_libs"
2142 else
2143 newdlfiles="$newdlfiles $lib"
2144 fi
2145 continue
2146 fi # $pass = dlopen
2147
2148 # We need an absolute path.
2149 case $ladir in
2150 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2151 *)
2152 abs_ladir=`cd "$ladir" && pwd`
2153 if test -z "$abs_ladir"; then
2154 $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2155 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2156 abs_ladir="$ladir"
2157 fi
2158 ;;
2159 esac
2160 laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
2161
2162 # Find the relevant object directory and library name.
2163 if test "X$installed" = Xyes; then
2164 if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2165 $echo "$modename: warning: library \`$lib' was moved." 1>&2
2166 dir="$ladir"
2167 absdir="$abs_ladir"
2168 libdir="$abs_ladir"
2169 else
2170 dir="$libdir"
2171 absdir="$libdir"
2172 fi
2173 else
2174 dir="$ladir/$objdir"
2175 absdir="$abs_ladir/$objdir"
2176 # Remove this search path later
2177 notinst_path="$notinst_path $abs_ladir"
2178 fi # $installed = yes
2179 name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2180
2181 # This library was specified with -dlpreopen.
2182 if test "$pass" = dlpreopen; then
2183 if test -z "$libdir"; then
2184 $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2185 exit 1
2186 fi
2187 # Prefer using a static library (so that no silly _DYNAMIC symbols
2188 # are required to link).
2189 if test -n "$old_library"; then
2190 newdlprefiles="$newdlprefiles $dir/$old_library"
2191 # Otherwise, use the dlname, so that lt_dlopen finds it.
2192 elif test -n "$dlname"; then
2193 newdlprefiles="$newdlprefiles $dir/$dlname"
2194 else
2195 newdlprefiles="$newdlprefiles $dir/$linklib"
2196 fi
2197 fi # $pass = dlpreopen
2198
2199 if test -z "$libdir"; then
2200 # Link the convenience library
2201 if test "$linkmode" = lib; then
2202 deplibs="$dir/$old_library $deplibs"
2203 elif test "$linkmode,$pass" = "prog,link"; then
2204 compile_deplibs="$dir/$old_library $compile_deplibs"
2205 finalize_deplibs="$dir/$old_library $finalize_deplibs"
2206 else
2207 deplibs="$lib $deplibs" # used for prog,scan pass
2208 fi
2209 continue
2210 fi
2211
2212
2213 if test "$linkmode" = prog && test "$pass" != link; then
2214 newlib_search_path="$newlib_search_path $ladir"
2215 deplibs="$lib $deplibs"
2216
2217 linkalldeplibs=no
2218 if test "$link_all_deplibs" != no || test -z "$library_names" ||
2219 test "$build_libtool_libs" = no; then
2220 linkalldeplibs=yes
2221 fi
2222
2223 tmp_libs=
2224 for deplib in $dependency_libs; do
2225 case $deplib in
2226 -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2227 esac
2228 # Need to link against all dependency_libs?
2229 if test "$linkalldeplibs" = yes; then
2230 deplibs="$deplib $deplibs"
2231 else
2232 # Need to hardcode shared library paths
2233 # or/and link against static libraries
2234 newdependency_libs="$deplib $newdependency_libs"
2235 fi
2236 if test "X$duplicate_deps" = "Xyes" ; then
2237 case "$tmp_libs " in
2238 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2239 esac
2240 fi
2241 tmp_libs="$tmp_libs $deplib"
2242 done # for deplib
2243 continue
2244 fi # $linkmode = prog...
2245
2246 if test "$linkmode,$pass" = "prog,link"; then
2247 if test -n "$library_names" &&
2248 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
2249 # We need to hardcode the library path
2250 if test -n "$shlibpath_var"; then
2251 # Make sure the rpath contains only unique directories.
2252 case "$temp_rpath " in
2253 *" $dir "*) ;;
2254 *" $absdir "*) ;;
2255 *) temp_rpath="$temp_rpath $dir" ;;
2256 esac
2257 fi
2258
2259 # Hardcode the library path.
2260 # Skip directories that are in the system default run-time
2261 # search path.
2262 case " $sys_lib_dlsearch_path " in
2263 *" $absdir "*) ;;
2264 *)
2265 case "$compile_rpath " in
2266 *" $absdir "*) ;;
2267 *) compile_rpath="$compile_rpath $absdir"
2268 esac
2269 ;;
2270 esac
2271 case " $sys_lib_dlsearch_path " in
2272 *" $libdir "*) ;;
2273 *)
2274 case "$finalize_rpath " in
2275 *" $libdir "*) ;;
2276 *) finalize_rpath="$finalize_rpath $libdir"
2277 esac
2278 ;;
2279 esac
2280 fi # $linkmode,$pass = prog,link...
2281
2282 if test "$alldeplibs" = yes &&
2283 { test "$deplibs_check_method" = pass_all ||
2284 { test "$build_libtool_libs" = yes &&
2285 test -n "$library_names"; }; }; then
2286 # We only need to search for static libraries
2287 continue
2288 fi
2289 fi
2290
2291 link_static=no # Whether the deplib will be linked statically
2292 if test -n "$library_names" &&
2293 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
2294 if test "$installed" = no; then
2295 notinst_deplibs="$notinst_deplibs $lib"
2296 need_relink=yes
2297 fi
2298 # This is a shared library
2299
2300 # Warn about portability, can't link against -module's on some systems (darwin)
2301 if test "$shouldnotlink" = yes && test "$pass" = link ; then
2302 $echo
2303 if test "$linkmode" = prog; then
2304 $echo "*** Warning: Linking the executable $output against the loadable module"
2305 else
2306 $echo "*** Warning: Linking the shared library $output against the loadable module"
2307 fi
2308 $echo "*** $linklib is not portable!"
2309 fi
2310 if test "$linkmode" = lib &&
2311 test "$hardcode_into_libs" = yes; then
2312 # Hardcode the library path.
2313 # Skip directories that are in the system default run-time
2314 # search path.
2315 case " $sys_lib_dlsearch_path " in
2316 *" $absdir "*) ;;
2317 *)
2318 case "$compile_rpath " in
2319 *" $absdir "*) ;;
2320 *) compile_rpath="$compile_rpath $absdir"
2321 esac
2322 ;;
2323 esac
2324 case " $sys_lib_dlsearch_path " in
2325 *" $libdir "*) ;;
2326 *)
2327 case "$finalize_rpath " in
2328 *" $libdir "*) ;;
2329 *) finalize_rpath="$finalize_rpath $libdir"
2330 esac
2331 ;;
2332 esac
2333 fi
2334
2335 if test -n "$old_archive_from_expsyms_cmds"; then
2336 # figure out the soname
2337 set dummy $library_names
2338 realname="$2"
2339 shift; shift
2340 libname=`eval \\$echo \"$libname_spec\"`
2341 # use dlname if we got it. it's perfectly good, no?
2342 if test -n "$dlname"; then
2343 soname="$dlname"
2344 elif test -n "$soname_spec"; then
2345 # bleh windows
2346 case $host in
2347 *cygwin* | mingw*)
2348 major=`expr $current - $age`
2349 versuffix="-$major"
2350 ;;
2351 esac
2352 eval soname=\"$soname_spec\"
2353 else
2354 soname="$realname"
2355 fi
2356
2357 # Make a new name for the extract_expsyms_cmds to use
2358 soroot="$soname"
2359 soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2360 newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
2361
2362 # If the library has no export list, then create one now
2363 if test -f "$output_objdir/$soname-def"; then :
2364 else
2365 $show "extracting exported symbol list from \`$soname'"
2366 save_ifs="$IFS"; IFS='~'
2367 cmds=$extract_expsyms_cmds
2368 for cmd in $cmds; do
2369 IFS="$save_ifs"
2370 eval cmd=\"$cmd\"
2371 $show "$cmd"
2372 $run eval "$cmd" || exit $?
2373 done
2374 IFS="$save_ifs"
2375 fi
2376
2377 # Create $newlib
2378 if test -f "$output_objdir/$newlib"; then :; else
2379 $show "generating import library for \`$soname'"
2380 save_ifs="$IFS"; IFS='~'
2381 cmds=$old_archive_from_expsyms_cmds
2382 for cmd in $cmds; do
2383 IFS="$save_ifs"
2384 eval cmd=\"$cmd\"
2385 $show "$cmd"
2386 $run eval "$cmd" || exit $?
2387 done
2388 IFS="$save_ifs"
2389 fi
2390 # make sure the library variables are pointing to the new library
2391 dir=$output_objdir
2392 linklib=$newlib
2393 fi # test -n "$old_archive_from_expsyms_cmds"
2394
2395 if test "$linkmode" = prog || test "$mode" != relink; then
2396 add_shlibpath=
2397 add_dir=
2398 add=
2399 lib_linked=yes
2400 case $hardcode_action in
2401 immediate | unsupported)
2402 if test "$hardcode_direct" = no; then
2403 add="$dir/$linklib"
2404 case $host in
2405 *-*-sco3.2v5* ) add_dir="-L$dir" ;;
2406 *-*-darwin* )
2407 # if the lib is a module then we can not link against it, someone
2408 # is ignoring the new warnings I added
2409 if /usr/bin/file -L $add 2> /dev/null | grep "bundle" >/dev/null ; then
2410 $echo "** Warning, lib $linklib is a module, not a shared library"
2411 if test -z "$old_library" ; then
2412 $echo
2413 $echo "** And there doesn't seem to be a static archive available"
2414 $echo "** The link will probably fail, sorry"
2415 else
2416 add="$dir/$old_library"
2417 fi
2418 fi
2419 esac
2420 elif test "$hardcode_minus_L" = no; then
2421 case $host in
2422 *-*-sunos*) add_shlibpath="$dir" ;;
2423 esac
2424 add_dir="-L$dir"
2425 add="-l$name"
2426 elif test "$hardcode_shlibpath_var" = no; then
2427 add_shlibpath="$dir"
2428 add="-l$name"
2429 else
2430 lib_linked=no
2431 fi
2432 ;;
2433 relink)
2434 if test "$hardcode_direct" = yes; then
2435 add="$dir/$linklib"
2436 elif test "$hardcode_minus_L" = yes; then
2437 add_dir="-L$dir"
2438 # Try looking first in the location we're being installed to.
2439 if test -n "$inst_prefix_dir"; then
2440 case "$libdir" in
2441 [\\/]*)
2442 add_dir="$add_dir -L$inst_prefix_dir$libdir"
2443 ;;
2444 esac
2445 fi
2446 add="-l$name"
2447 elif test "$hardcode_shlibpath_var" = yes; then
2448 add_shlibpath="$dir"
2449 add="-l$name"
2450 else
2451 lib_linked=no
2452 fi
2453 ;;
2454 *) lib_linked=no ;;
2455 esac
2456
2457 if test "$lib_linked" != yes; then
2458 $echo "$modename: configuration error: unsupported hardcode properties"
2459 exit 1
2460 fi
2461
2462 if test -n "$add_shlibpath"; then
2463 case :$compile_shlibpath: in
2464 *":$add_shlibpath:"*) ;;
2465 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2466 esac
2467 fi
2468 if test "$linkmode" = prog; then
2469 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2470 test -n "$add" && compile_deplibs="$add $compile_deplibs"
2471 else
2472 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2473 test -n "$add" && deplibs="$add $deplibs"
2474 if test "$hardcode_direct" != yes && \
2475 test "$hardcode_minus_L" != yes && \
2476 test "$hardcode_shlibpath_var" = yes; then
2477 case :$finalize_shlibpath: in
2478 *":$libdir:"*) ;;
2479 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2480 esac
2481 fi
2482 fi
2483 fi
2484
2485 if test "$linkmode" = prog || test "$mode" = relink; then
2486 add_shlibpath=
2487 add_dir=
2488 add=
2489 # Finalize command for both is simple: just hardcode it.
2490 if test "$hardcode_direct" = yes; then
2491 add="$libdir/$linklib"
2492 elif test "$hardcode_minus_L" = yes; then
2493 add_dir="-L$libdir"
2494 add="-l$name"
2495 elif test "$hardcode_shlibpath_var" = yes; then
2496 case :$finalize_shlibpath: in
2497 *":$libdir:"*) ;;
2498 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2499 esac
2500 add="-l$name"
2501 elif test "$hardcode_automatic" = yes; then
2502 if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then
2503 add="$inst_prefix_dir$libdir/$linklib"
2504 else
2505 add="$libdir/$linklib"
2506 fi
2507 else
2508 # We cannot seem to hardcode it, guess we'll fake it.
2509 add_dir="-L$libdir"
2510 # Try looking first in the location we're being installed to.
2511 if test -n "$inst_prefix_dir"; then
2512 case "$libdir" in
2513 [\\/]*)
2514 add_dir="$add_dir -L$inst_prefix_dir$libdir"
2515 ;;
2516 esac
2517 fi
2518 add="-l$name"
2519 fi
2520
2521 if test "$linkmode" = prog; then
2522 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2523 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2524 else
2525 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2526 test -n "$add" && deplibs="$add $deplibs"
2527 fi
2528 fi
2529 elif test "$linkmode" = prog; then
2530 # Here we assume that one of hardcode_direct or hardcode_minus_L
2531 # is not unsupported. This is valid on all known static and
2532 # shared platforms.
2533 if test "$hardcode_direct" != unsupported; then
2534 test -n "$old_library" && linklib="$old_library"
2535 compile_deplibs="$dir/$linklib $compile_deplibs"
2536 finalize_deplibs="$dir/$linklib $finalize_deplibs"
2537 else
2538 compile_deplibs="-l$name -L$dir $compile_deplibs"
2539 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2540 fi
2541 elif test "$build_libtool_libs" = yes; then
2542 # Not a shared library
2543 if test "$deplibs_check_method" != pass_all; then
2544 # We're trying link a shared library against a static one
2545 # but the system doesn't support it.
2546
2547 # Just print a warning and add the library to dependency_libs so
2548 # that the program can be linked against the static library.
2549 $echo
2550 $echo "*** Warning: This system can not link to static lib archive $lib."
2551 $echo "*** I have the capability to make that library automatically link in when"
2552 $echo "*** you link to this library. But I can only do this if you have a"
2553 $echo "*** shared version of the library, which you do not appear to have."
2554 if test "$module" = yes; then
2555 $echo "*** But as you try to build a module library, libtool will still create "
2556 $echo "*** a static module, that should work as long as the dlopening application"
2557 $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2558 if test -z "$global_symbol_pipe"; then
2559 $echo
2560 $echo "*** However, this would only work if libtool was able to extract symbol"
2561 $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2562 $echo "*** not find such a program. So, this module is probably useless."
2563 $echo "*** \`nm' from GNU binutils and a full rebuild may help."
2564 fi
2565 if test "$build_old_libs" = no; then
2566 build_libtool_libs=module
2567 build_old_libs=yes
2568 else
2569 build_libtool_libs=no
2570 fi
2571 fi
2572 else
2573 convenience="$convenience $dir/$old_library"
2574 old_convenience="$old_convenience $dir/$old_library"
2575 deplibs="$dir/$old_library $deplibs"
2576 link_static=yes
2577 fi
2578 fi # link shared/static library?
2579
2580 if test "$linkmode" = lib; then
2581 if test -n "$dependency_libs" &&
2582 { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes ||
2583 test "$link_static" = yes; }; then
2584 # Extract -R from dependency_libs
2585 temp_deplibs=
2586 for libdir in $dependency_libs; do
2587 case $libdir in
2588 -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2589 case " $xrpath " in
2590 *" $temp_xrpath "*) ;;
2591 *) xrpath="$xrpath $temp_xrpath";;
2592 esac;;
2593 *) temp_deplibs="$temp_deplibs $libdir";;
2594 esac
2595 done
2596 dependency_libs="$temp_deplibs"
2597 fi
2598
2599 newlib_search_path="$newlib_search_path $absdir"
2600 # Link against this library
2601 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2602 # ... and its dependency_libs
2603 tmp_libs=
2604 for deplib in $dependency_libs; do
2605 newdependency_libs="$deplib $newdependency_libs"
2606 if test "X$duplicate_deps" = "Xyes" ; then
2607 case "$tmp_libs " in
2608 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2609 esac
2610 fi
2611 tmp_libs="$tmp_libs $deplib"
2612 done
2613
2614 if test "$link_all_deplibs" != no; then
2615 # Add the search paths of all dependency libraries
2616 for deplib in $dependency_libs; do
2617 case $deplib in
2618 -L*) path="$deplib" ;;
2619 *.la)
2620 dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2621 test "X$dir" = "X$deplib" && dir="."
2622 # We need an absolute path.
2623 case $dir in
2624 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2625 *)
2626 absdir=`cd "$dir" && pwd`
2627 if test -z "$absdir"; then
2628 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2629 absdir="$dir"
2630 fi
2631 ;;
2632 esac
2633 if grep "^installed=no" $deplib > /dev/null; then
2634 path="$absdir/$objdir"
2635 else
2636 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2637 if test -z "$libdir"; then
2638 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2639 exit 1
2640 fi
2641 if test "$absdir" != "$libdir"; then
2642 $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2643 fi
2644 path="$absdir"
2645 fi
2646 depdepl=
2647 case $host in
2648 *-*-darwin*)
2649 # we do not want to link against static libs, but need to link against shared
2650 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
2651 if test -n "$deplibrary_names" ; then
2652 for tmp in $deplibrary_names ; do
2653 depdepl=$tmp
2654 done
2655 if test -f "$path/$depdepl" ; then
2656 depdepl="$path/$depdepl"
2657 fi
2658 # do not add paths which are already there
2659 case " $newlib_search_path " in
2660 *" $path "*) ;;
2661 *) newlib_search_path="$newlib_search_path $path";;
2662 esac
2663 fi
2664 path=""
2665 ;;
2666 *)
2667 path="-L$path"
2668 ;;
2669 esac
2670
2671 ;;
2672 -l*)
2673 case $host in
2674 *-*-darwin*)
2675 # Again, we only want to link against shared libraries
2676 eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
2677 for tmp in $newlib_search_path ; do
2678 if test -f "$tmp/lib$tmp_libs.dylib" ; then
2679 eval depdepl="$tmp/lib$tmp_libs.dylib"
2680 break
2681 fi
2682 done
2683 path=""
2684 ;;
2685 *) continue ;;
2686 esac
2687 ;;
2688 *) continue ;;
2689 esac
2690 case " $deplibs " in
2691 *" $depdepl "*) ;;
2692 *) deplibs="$deplibs $depdepl" ;;
2693 esac
2694 case " $deplibs " in
2695 *" $path "*) ;;
2696 *) deplibs="$deplibs $path" ;;
2697 esac
2698 done
2699 fi # link_all_deplibs != no
2700 fi # linkmode = lib
2701 done # for deplib in $libs
2702 dependency_libs="$newdependency_libs"
2703 if test "$pass" = dlpreopen; then
2704 # Link the dlpreopened libraries before other libraries
2705 for deplib in $save_deplibs; do
2706 deplibs="$deplib $deplibs"
2707 done
2708 fi
2709 if test "$pass" != dlopen; then
2710 if test "$pass" != conv; then
2711 # Make sure lib_search_path contains only unique directories.
2712 lib_search_path=
2713 for dir in $newlib_search_path; do
2714 case "$lib_search_path " in
2715 *" $dir "*) ;;
2716 *) lib_search_path="$lib_search_path $dir" ;;
2717 esac
2718 done
2719 newlib_search_path=
2720 fi
2721
2722 if test "$linkmode,$pass" != "prog,link"; then
2723 vars="deplibs"
2724 else
2725 vars="compile_deplibs finalize_deplibs"
2726 fi
2727 for var in $vars dependency_libs; do
2728 # Add libraries to $var in reverse order
2729 eval tmp_libs=\"\$$var\"
2730 new_libs=
2731 for deplib in $tmp_libs; do
2732 # FIXME: Pedantically, this is the right thing to do, so
2733 # that some nasty dependency loop isn't accidentally
2734 # broken:
2735 #new_libs="$deplib $new_libs"
2736 # Pragmatically, this seems to cause very few problems in
2737 # practice:
2738 case $deplib in
2739 -L*) new_libs="$deplib $new_libs" ;;
2740 -R*) ;;
2741 *)
2742 # And here is the reason: when a library appears more
2743 # than once as an explicit dependence of a library, or
2744 # is implicitly linked in more than once by the
2745 # compiler, it is considered special, and multiple
2746 # occurrences thereof are not removed. Compare this
2747 # with having the same library being listed as a
2748 # dependency of multiple other libraries: in this case,
2749 # we know (pedantically, we assume) the library does not
2750 # need to be listed more than once, so we keep only the
2751 # last copy. This is not always right, but it is rare
2752 # enough that we require users that really mean to play
2753 # such unportable linking tricks to link the library
2754 # using -Wl,-lname, so that libtool does not consider it
2755 # for duplicate removal.
2756 case " $specialdeplibs " in
2757 *" $deplib "*) new_libs="$deplib $new_libs" ;;
2758 *)
2759 case " $new_libs " in
2760 *" $deplib "*) ;;
2761 *) new_libs="$deplib $new_libs" ;;
2762 esac
2763 ;;
2764 esac
2765 ;;
2766 esac
2767 done
2768 tmp_libs=
2769 for deplib in $new_libs; do
2770 case $deplib in
2771 -L*)
2772 case " $tmp_libs " in
2773 *" $deplib "*) ;;
2774 *) tmp_libs="$tmp_libs $deplib" ;;
2775 esac
2776 ;;
2777 *) tmp_libs="$tmp_libs $deplib" ;;
2778 esac
2779 done
2780 eval $var=\"$tmp_libs\"
2781 done # for var
2782 fi
2783 # Last step: remove runtime libs from dependency_libs (they stay in deplibs)
2784 tmp_libs=
2785 for i in $dependency_libs ; do
2786 case " $predeps $postdeps $compiler_lib_search_path " in
2787 *" $i "*)
2788 i=""
2789 ;;
2790 esac
2791 if test -n "$i" ; then
2792 tmp_libs="$tmp_libs $i"
2793 fi
2794 done
2795 dependency_libs=$tmp_libs
2796 done # for pass
2797 if test "$linkmode" = prog; then
2798 dlfiles="$newdlfiles"
2799 dlprefiles="$newdlprefiles"
2800 fi
2801
2802 case $linkmode in
2803 oldlib)
2804 if test -n "$deplibs"; then
2805 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
2806 fi
2807
2808 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
2809 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
2810 fi
2811
2812 if test -n "$rpath"; then
2813 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
2814 fi
2815
2816 if test -n "$xrpath"; then
2817 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
2818 fi
2819
2820 if test -n "$vinfo"; then
2821 $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
2822 fi
2823
2824 if test -n "$release"; then
2825 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
2826 fi
2827
2828 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
2829 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
2830 fi
2831
2832 # Now set the variables for building old libraries.
2833 build_libtool_libs=no
2834 oldlibs="$output"
2835 objs="$objs$old_deplibs"
2836 ;;
2837
2838 lib)
2839 # Make sure we only generate libraries of the form `libNAME.la'.
2840 case $outputname in
2841 lib*)
2842 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2843 eval shared_ext=\"$shrext\"
2844 eval libname=\"$libname_spec\"
2845 ;;
2846 *)
2847 if test "$module" = no; then
2848 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
2849 $echo "$help" 1>&2
2850 exit 1
2851 fi
2852 if test "$need_lib_prefix" != no; then
2853 # Add the "lib" prefix for modules if required
2854 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
2855 eval shared_ext=\"$shrext\"
2856 eval libname=\"$libname_spec\"
2857 else
2858 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
2859 fi
2860 ;;
2861 esac
2862
2863 if test -n "$objs"; then
2864 if test "$deplibs_check_method" != pass_all; then
2865 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
2866 exit 1
2867 else
2868 $echo
2869 $echo "*** Warning: Linking the shared library $output against the non-libtool"
2870 $echo "*** objects $objs is not portable!"
2871 libobjs="$libobjs $objs"
2872 fi
2873 fi
2874
2875 if test "$dlself" != no; then
2876 $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
2877 fi
2878
2879 set dummy $rpath
2880 if test "$#" -gt 2; then
2881 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
2882 fi
2883 install_libdir="$2"
2884
2885 oldlibs=
2886 if test -z "$rpath"; then
2887 if test "$build_libtool_libs" = yes; then
2888 # Building a libtool convenience library.
2889 # Some compilers have problems with a `.al' extension so
2890 # convenience libraries should have the same extension an
2891 # archive normally would.
2892 oldlibs="$output_objdir/$libname.$libext $oldlibs"
2893 build_libtool_libs=convenience
2894 build_old_libs=yes
2895 fi
2896
2897 if test -n "$vinfo"; then
2898 $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
2899 fi
2900
2901 if test -n "$release"; then
2902 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
2903 fi
2904 else
2905
2906 # Parse the version information argument.
2907 save_ifs="$IFS"; IFS=':'
2908 set dummy $vinfo 0 0 0
2909 IFS="$save_ifs"
2910
2911 if test -n "$8"; then
2912 $echo "$modename: too many parameters to \`-version-info'" 1>&2
2913 $echo "$help" 1>&2
2914 exit 1
2915 fi
2916
2917 # convert absolute version numbers to libtool ages
2918 # this retains compatibility with .la files and attempts
2919 # to make the code below a bit more comprehensible
2920
2921 case $vinfo_number in
2922 yes)
2923 number_major="$2"
2924 number_minor="$3"
2925 number_revision="$4"
2926 #
2927 # There are really only two kinds -- those that
2928 # use the current revision as the major version
2929 # and those that subtract age and use age as
2930 # a minor version. But, then there is irix
2931 # which has an extra 1 added just for fun
2932 #
2933 case $version_type in
2934 darwin|linux|osf|windows)
2935 current=`expr $number_major + $number_minor`
2936 age="$number_minor"
2937 revision="$number_revision"
2938 ;;
2939 freebsd-aout|freebsd-elf|sunos)
2940 current="$number_major"
2941 revision="$number_minor"
2942 age="0"
2943 ;;
2944 irix|nonstopux)
2945 current=`expr $number_major + $number_minor - 1`
2946 age="$number_minor"
2947 revision="$number_minor"
2948 ;;
2949 esac
2950 ;;
2951 no)
2952 current="$2"
2953 revision="$3"
2954 age="$4"
2955 ;;
2956 esac
2957
2958 # Check that each of the things are valid numbers.
2959 case $current in
2960 [0-9]*) ;;
2961 *)
2962 $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
2963 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2964 exit 1
2965 ;;
2966 esac
2967
2968 case $revision in
2969 [0-9]*) ;;
2970 *)
2971 $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
2972 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2973 exit 1
2974 ;;
2975 esac
2976
2977 case $age in
2978 [0-9]*) ;;
2979 *)
2980 $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
2981 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2982 exit 1
2983 ;;
2984 esac
2985
2986 if test "$age" -gt "$current"; then
2987 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
2988 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
2989 exit 1
2990 fi
2991
2992 # Calculate the version variables.
2993 major=
2994 versuffix=
2995 verstring=
2996 case $version_type in
2997 none) ;;
2998
2999 darwin)
3000 # Like Linux, but with the current version available in
3001 # verstring for coding it into the library header
3002 major=.`expr $current - $age`
3003 versuffix="$major.$age.$revision"
3004 # Darwin ld doesn't like 0 for these options...
3005 minor_current=`expr $current + 1`
3006 verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
3007 ;;
3008
3009 freebsd-aout)
3010 major=".$current"
3011 versuffix=".$current.$revision";
3012 ;;
3013
3014 freebsd-elf)
3015 major=".$current"
3016 versuffix=".$current";
3017 ;;
3018
3019 irix | nonstopux)
3020 major=`expr $current - $age + 1`
3021
3022 case $version_type in
3023 nonstopux) verstring_prefix=nonstopux ;;
3024 *) verstring_prefix=sgi ;;
3025 esac
3026 verstring="$verstring_prefix$major.$revision"
3027
3028 # Add in all the interfaces that we are compatible with.
3029 loop=$revision
3030 while test "$loop" -ne 0; do
3031 iface=`expr $revision - $loop`
3032 loop=`expr $loop - 1`
3033 verstring="$verstring_prefix$major.$iface:$verstring"
3034 done
3035
3036 # Before this point, $major must not contain `.'.
3037 major=.$major
3038 versuffix="$major.$revision"
3039 ;;
3040
3041 linux)
3042 major=.`expr $current - $age`
3043 versuffix="$major.$age.$revision"
3044 ;;
3045
3046 osf)
3047 major=.`expr $current - $age`
3048 versuffix=".$current.$age.$revision"
3049 verstring="$current.$age.$revision"
3050
3051 # Add in all the interfaces that we are compatible with.
3052 loop=$age
3053 while test "$loop" -ne 0; do
3054 iface=`expr $current - $loop`
3055 loop=`expr $loop - 1`
3056 verstring="$verstring:${iface}.0"
3057 done
3058
3059 # Make executables depend on our current version.
3060 verstring="$verstring:${current}.0"
3061 ;;
3062
3063 sunos)
3064 major=".$current"
3065 versuffix=".$current.$revision"
3066 ;;
3067
3068 windows)
3069 # Use '-' rather than '.', since we only want one
3070 # extension on DOS 8.3 filesystems.
3071 major=`expr $current - $age`
3072 versuffix="-$major"
3073 ;;
3074
3075 *)
3076 $echo "$modename: unknown library version type \`$version_type'" 1>&2
3077 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
3078 exit 1
3079 ;;
3080 esac
3081
3082 # Clear the version info if we defaulted, and they specified a release.
3083 if test -z "$vinfo" && test -n "$release"; then
3084 major=
3085 case $version_type in
3086 darwin)
3087 # we can't check for "0.0" in archive_cmds due to quoting
3088 # problems, so we reset it completely
3089 verstring=
3090 ;;
3091 *)
3092 verstring="0.0"
3093 ;;
3094 esac
3095 if test "$need_version" = no; then
3096 versuffix=
3097 else
3098 versuffix=".0.0"
3099 fi
3100 fi
3101
3102 # Remove version info from name if versioning should be avoided
3103 if test "$avoid_version" = yes && test "$need_version" = no; then
3104 major=
3105 versuffix=
3106 verstring=""
3107 fi
3108
3109 # Check to see if the archive will have undefined symbols.
3110 if test "$allow_undefined" = yes; then
3111 if test "$allow_undefined_flag" = unsupported; then
3112 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3113 build_libtool_libs=no
3114 build_old_libs=yes
3115 fi
3116 else
3117 # Don't allow undefined symbols.
3118 allow_undefined_flag="$no_undefined_flag"
3119 fi
3120 fi
3121
3122 if test "$mode" != relink; then
3123 # Remove our outputs, but don't remove object files since they
3124 # may have been created when compiling PIC objects.
3125 removelist=
3126 tempremovelist=`$echo "$output_objdir/*"`
3127 for p in $tempremovelist; do
3128 case $p in
3129 *.$objext)
3130 ;;
3131 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3132 if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3133 then
3134 continue
3135 fi
3136 removelist="$removelist $p"
3137 ;;
3138 *) ;;
3139 esac
3140 done
3141 if test -n "$removelist"; then
3142 $show "${rm}r $removelist"
3143 $run ${rm}r $removelist
3144 fi
3145 fi
3146
3147 # Now set the variables for building old libraries.
3148 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3149 oldlibs="$oldlibs $output_objdir/$libname.$libext"
3150
3151 # Transform .lo files to .o files.
3152 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3153 fi
3154
3155 # Eliminate all temporary directories.
3156 for path in $notinst_path; do
3157 lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
3158 deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
3159 dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
3160 done
3161
3162 if test -n "$xrpath"; then
3163 # If the user specified any rpath flags, then add them.
3164 temp_xrpath=
3165 for libdir in $xrpath; do
3166 temp_xrpath="$temp_xrpath -R$libdir"
3167 case "$finalize_rpath " in
3168 *" $libdir "*) ;;
3169 *) finalize_rpath="$finalize_rpath $libdir" ;;
3170 esac
3171 done
3172 if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3173 dependency_libs="$temp_xrpath $dependency_libs"
3174 fi
3175 fi
3176
3177 # Make sure dlfiles contains only unique files that won't be dlpreopened
3178 old_dlfiles="$dlfiles"
3179 dlfiles=
3180 for lib in $old_dlfiles; do
3181 case " $dlprefiles $dlfiles " in
3182 *" $lib "*) ;;
3183 *) dlfiles="$dlfiles $lib" ;;
3184 esac
3185 done
3186
3187 # Make sure dlprefiles contains only unique files
3188 old_dlprefiles="$dlprefiles"
3189 dlprefiles=
3190 for lib in $old_dlprefiles; do
3191 case "$dlprefiles " in
3192 *" $lib "*) ;;
3193 *) dlprefiles="$dlprefiles $lib" ;;
3194 esac
3195 done
3196
3197 if test "$build_libtool_libs" = yes; then
3198 if test -n "$rpath"; then
3199 case $host in
3200 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3201 # these systems don't actually have a c library (as such)!
3202 ;;
3203 *-*-rhapsody* | *-*-darwin1.[012])
3204 # Rhapsody C library is in the System framework
3205 deplibs="$deplibs -framework System"
3206 ;;
3207 *-*-netbsd*)
3208 # Don't link with libc until the a.out ld.so is fixed.
3209 ;;
3210 *-*-openbsd* | *-*-freebsd*)
3211 # Do not include libc due to us having libc/libc_r.
3212 test "X$arg" = "X-lc" && continue
3213 ;;
3214 *)
3215 # Add libc to deplibs on all other systems if necessary.
3216 if test "$build_libtool_need_lc" = "yes"; then
3217 deplibs="$deplibs -lc"
3218 fi
3219 ;;
3220 esac
3221 fi
3222
3223 # Transform deplibs into only deplibs that can be linked in shared.
3224 name_save=$name
3225 libname_save=$libname
3226 release_save=$release
3227 versuffix_save=$versuffix
3228 major_save=$major
3229 # I'm not sure if I'm treating the release correctly. I think
3230 # release should show up in the -l (ie -lgmp5) so we don't want to
3231 # add it in twice. Is that correct?
3232 release=""
3233 versuffix=""
3234 major=""
3235 newdeplibs=
3236 droppeddeps=no
3237 case $deplibs_check_method in
3238 pass_all)
3239 # Don't check for shared/static. Everything works.
3240 # This might be a little naive. We might want to check
3241 # whether the library exists or not. But this is on
3242 # osf3 & osf4 and I'm not really sure... Just
3243 # implementing what was already the behavior.
3244 newdeplibs=$deplibs
3245 ;;
3246 test_compile)
3247 # This code stresses the "libraries are programs" paradigm to its
3248 # limits. Maybe even breaks it. We compile a program, linking it
3249 # against the deplibs as a proxy for the library. Then we can check
3250 # whether they linked in statically or dynamically with ldd.
3251 $rm conftest.c
3252 cat > conftest.c <<EOF
3253 int main() { return 0; }
3254 EOF
3255 $rm conftest
3256 $LTCC -o conftest conftest.c $deplibs
3257 if test "$?" -eq 0 ; then
3258 ldd_output=`ldd conftest`
3259 for i in $deplibs; do
3260 name="`expr $i : '-l\(.*\)'`"
3261 # If $name is empty we are operating on a -L argument.
3262 if test "$name" != "" && test "$name" -ne "0"; then
3263 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3264 case " $predeps $postdeps " in
3265 *" $i "*)
3266 newdeplibs="$newdeplibs $i"
3267 i=""
3268 ;;
3269 esac
3270 fi
3271 if test -n "$i" ; then
3272 libname=`eval \\$echo \"$libname_spec\"`
3273 deplib_matches=`eval \\$echo \"$library_names_spec\"`
3274 set dummy $deplib_matches
3275 deplib_match=$2
3276 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3277 newdeplibs="$newdeplibs $i"
3278 else
3279 droppeddeps=yes
3280 $echo
3281 $echo "*** Warning: dynamic linker does not accept needed library $i."
3282 $echo "*** I have the capability to make that library automatically link in when"
3283 $echo "*** you link to this library. But I can only do this if you have a"
3284 $echo "*** shared version of the library, which I believe you do not have"
3285 $echo "*** because a test_compile did reveal that the linker did not use it for"
3286 $echo "*** its dynamic dependency list that programs get resolved with at runtime."
3287 fi
3288 fi
3289 else
3290 newdeplibs="$newdeplibs $i"
3291 fi
3292 done
3293 else
3294 # Error occurred in the first compile. Let's try to salvage
3295 # the situation: Compile a separate program for each library.
3296 for i in $deplibs; do
3297 name="`expr $i : '-l\(.*\)'`"
3298 # If $name is empty we are operating on a -L argument.
3299 if test "$name" != "" && test "$name" != "0"; then
3300 $rm conftest
3301 $LTCC -o conftest conftest.c $i
3302 # Did it work?
3303 if test "$?" -eq 0 ; then
3304 ldd_output=`ldd conftest`
3305 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3306 case " $predeps $postdeps " in
3307 *" $i "*)
3308 newdeplibs="$newdeplibs $i"
3309 i=""
3310 ;;
3311 esac
3312 fi
3313 if test -n "$i" ; then
3314 libname=`eval \\$echo \"$libname_spec\"`
3315 deplib_matches=`eval \\$echo \"$library_names_spec\"`
3316 set dummy $deplib_matches
3317 deplib_match=$2
3318 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3319 newdeplibs="$newdeplibs $i"
3320 else
3321 droppeddeps=yes
3322 $echo
3323 $echo "*** Warning: dynamic linker does not accept needed library $i."
3324 $echo "*** I have the capability to make that library automatically link in when"
3325 $echo "*** you link to this library. But I can only do this if you have a"
3326 $echo "*** shared version of the library, which you do not appear to have"
3327 $echo "*** because a test_compile did reveal that the linker did not use this one"
3328 $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3329 fi
3330 fi
3331 else
3332 droppeddeps=yes
3333 $echo
3334 $echo "*** Warning! Library $i is needed by this library but I was not able to"
3335 $echo "*** make it link in! You will probably need to install it or some"
3336 $echo "*** library that it depends on before this library will be fully"
3337 $echo "*** functional. Installing it before continuing would be even better."
3338 fi
3339 else
3340 newdeplibs="$newdeplibs $i"
3341 fi
3342 done
3343 fi
3344 ;;
3345 file_magic*)
3346 set dummy $deplibs_check_method
3347 file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3348 for a_deplib in $deplibs; do
3349 name="`expr $a_deplib : '-l\(.*\)'`"
3350 # If $name is empty we are operating on a -L argument.
3351 if test "$name" != "" && test "$name" != "0"; then
3352 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3353 case " $predeps $postdeps " in
3354 *" $a_deplib "*)
3355 newdeplibs="$newdeplibs $a_deplib"
3356 a_deplib=""
3357 ;;
3358 esac
3359 fi
3360 if test -n "$a_deplib" ; then
3361 libname=`eval \\$echo \"$libname_spec\"`
3362 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3363 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3364 for potent_lib in $potential_libs; do
3365 # Follow soft links.
3366 if ls -lLd "$potent_lib" 2>/dev/null \
3367 | grep " -> " >/dev/null; then
3368 continue
3369 fi
3370 # The statement above tries to avoid entering an
3371 # endless loop below, in case of cyclic links.
3372 # We might still enter an endless loop, since a link
3373 # loop can be closed while we follow links,
3374 # but so what?
3375 potlib="$potent_lib"
3376 while test -h "$potlib" 2>/dev/null; do
3377 potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3378 case $potliblink in
3379 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3380 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3381 esac
3382 done
3383 # It is ok to link against an archive when
3384 # building a shared library.
3385 if $AR -t $potlib > /dev/null 2>&1; then
3386 newdeplibs="$newdeplibs $a_deplib"
3387 a_deplib=""
3388 break 2
3389 fi
3390 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3391 | ${SED} 10q \
3392 | $EGREP "$file_magic_regex" > /dev/null; then
3393 newdeplibs="$newdeplibs $a_deplib"
3394 a_deplib=""
3395 break 2
3396 fi
3397 done
3398 done
3399 fi
3400 if test -n "$a_deplib" ; then
3401 droppeddeps=yes
3402 $echo
3403 $echo "*** Warning: linker path does not have real file for library $a_deplib."
3404 $echo "*** I have the capability to make that library automatically link in when"
3405 $echo "*** you link to this library. But I can only do this if you have a"
3406 $echo "*** shared version of the library, which you do not appear to have"
3407 $echo "*** because I did check the linker path looking for a file starting"
3408 if test -z "$potlib" ; then
3409 $echo "*** with $libname but no candidates were found. (...for file magic test)"
3410 else
3411 $echo "*** with $libname and none of the candidates passed a file format test"
3412 $echo "*** using a file magic. Last file checked: $potlib"
3413 fi
3414 fi
3415 else
3416 # Add a -L argument.
3417 newdeplibs="$newdeplibs $a_deplib"
3418 fi
3419 done # Gone through all deplibs.
3420 ;;
3421 match_pattern*)
3422 set dummy $deplibs_check_method
3423 match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3424 for a_deplib in $deplibs; do
3425 name="`expr $a_deplib : '-l\(.*\)'`"
3426 # If $name is empty we are operating on a -L argument.
3427 if test -n "$name" && test "$name" != "0"; then
3428 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3429 case " $predeps $postdeps " in
3430 *" $a_deplib "*)
3431 newdeplibs="$newdeplibs $a_deplib"
3432 a_deplib=""
3433 ;;
3434 esac
3435 fi
3436 if test -n "$a_deplib" ; then
3437 libname=`eval \\$echo \"$libname_spec\"`
3438 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3439 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3440 for potent_lib in $potential_libs; do
3441 potlib="$potent_lib" # see symlink-check above in file_magic test
3442 if eval $echo \"$potent_lib\" 2>/dev/null \
3443 | ${SED} 10q \
3444 | $EGREP "$match_pattern_regex" > /dev/null; then
3445 newdeplibs="$newdeplibs $a_deplib"
3446 a_deplib=""
3447 break 2
3448 fi
3449 done
3450 done
3451 fi
3452 if test -n "$a_deplib" ; then
3453 droppeddeps=yes
3454 $echo
3455 $echo "*** Warning: linker path does not have real file for library $a_deplib."
3456 $echo "*** I have the capability to make that library automatically link in when"
3457 $echo "*** you link to this library. But I can only do this if you have a"
3458 $echo "*** shared version of the library, which you do not appear to have"
3459 $echo "*** because I did check the linker path looking for a file starting"
3460 if test -z "$potlib" ; then
3461 $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3462 else
3463 $echo "*** with $libname and none of the candidates passed a file format test"
3464 $echo "*** using a regex pattern. Last file checked: $potlib"
3465 fi
3466 fi
3467 else
3468 # Add a -L argument.
3469 newdeplibs="$newdeplibs $a_deplib"
3470 fi
3471 done # Gone through all deplibs.
3472 ;;
3473 none | unknown | *)
3474 newdeplibs=""
3475 tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3476 -e 's/ -[LR][^ ]*//g'`
3477 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3478 for i in $predeps $postdeps ; do
3479 # can't use Xsed below, because $i might contain '/'
3480 tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3481 done
3482 fi
3483 if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
3484 | grep . >/dev/null; then
3485 $echo
3486 if test "X$deplibs_check_method" = "Xnone"; then
3487 $echo "*** Warning: inter-library dependencies are not supported in this platform."
3488 else
3489 $echo "*** Warning: inter-library dependencies are not known to be supported."
3490 fi
3491 $echo "*** All declared inter-library dependencies are being dropped."
3492 droppeddeps=yes
3493 fi
3494 ;;
3495 esac
3496 versuffix=$versuffix_save
3497 major=$major_save
3498 release=$release_save
3499 libname=$libname_save
3500 name=$name_save
3501
3502 case $host in
3503 *-*-rhapsody* | *-*-darwin1.[012])
3504 # On Rhapsody replace the C library is the System framework
3505 newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3506 ;;
3507 esac
3508
3509 if test "$droppeddeps" = yes; then
3510 if test "$module" = yes; then
3511 $echo
3512 $echo "*** Warning: libtool could not satisfy all declared inter-library"
3513 $echo "*** dependencies of module $libname. Therefore, libtool will create"
3514 $echo "*** a static module, that should work as long as the dlopening"
3515 $echo "*** application is linked with the -dlopen flag."
3516 if test -z "$global_symbol_pipe"; then
3517 $echo
3518 $echo "*** However, this would only work if libtool was able to extract symbol"
3519 $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3520 $echo "*** not find such a program. So, this module is probably useless."
3521 $echo "*** \`nm' from GNU binutils and a full rebuild may help."
3522 fi
3523 if test "$build_old_libs" = no; then
3524 oldlibs="$output_objdir/$libname.$libext"
3525 build_libtool_libs=module
3526 build_old_libs=yes
3527 else
3528 build_libtool_libs=no
3529 fi
3530 else
3531 $echo "*** The inter-library dependencies that have been dropped here will be"
3532 $echo "*** automatically added whenever a program is linked with this library"
3533 $echo "*** or is declared to -dlopen it."
3534
3535 if test "$allow_undefined" = no; then
3536 $echo
3537 $echo "*** Since this library must not contain undefined symbols,"
3538 $echo "*** because either the platform does not support them or"
3539 $echo "*** it was explicitly requested with -no-undefined,"
3540 $echo "*** libtool will only create a static version of it."
3541 if test "$build_old_libs" = no; then
3542 oldlibs="$output_objdir/$libname.$libext"
3543 build_libtool_libs=module
3544 build_old_libs=yes
3545 else
3546 build_libtool_libs=no
3547 fi
3548 fi
3549 fi
3550 fi
3551 # Done checking deplibs!
3552 deplibs=$newdeplibs
3553 fi
3554
3555 # All the library-specific variables (install_libdir is set above).
3556 library_names=
3557 old_library=
3558 dlname=
3559
3560 # Test again, we may have decided not to build it any more
3561 if test "$build_libtool_libs" = yes; then
3562 if test "$hardcode_into_libs" = yes; then
3563 # Hardcode the library paths
3564 hardcode_libdirs=
3565 dep_rpath=
3566 rpath="$finalize_rpath"
3567 test "$mode" != relink && rpath="$compile_rpath$rpath"
3568 for libdir in $rpath; do
3569 if test -n "$hardcode_libdir_flag_spec"; then
3570 if test -n "$hardcode_libdir_separator"; then
3571 if test -z "$hardcode_libdirs"; then
3572 hardcode_libdirs="$libdir"
3573 else
3574 # Just accumulate the unique libdirs.
3575 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3576 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3577 ;;
3578 *)
3579 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3580 ;;
3581 esac
3582 fi
3583 else
3584 eval flag=\"$hardcode_libdir_flag_spec\"
3585 dep_rpath="$dep_rpath $flag"
3586 fi
3587 elif test -n "$runpath_var"; then
3588 case "$perm_rpath " in
3589 *" $libdir "*) ;;
3590 *) perm_rpath="$perm_rpath $libdir" ;;
3591 esac
3592 fi
3593 done
3594 # Substitute the hardcoded libdirs into the rpath.
3595 if test -n "$hardcode_libdir_separator" &&
3596 test -n "$hardcode_libdirs"; then
3597 libdir="$hardcode_libdirs"
3598 if test -n "$hardcode_libdir_flag_spec_ld"; then
3599 eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
3600 else
3601 eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3602 fi
3603 fi
3604 if test -n "$runpath_var" && test -n "$perm_rpath"; then
3605 # We should set the runpath_var.
3606 rpath=
3607 for dir in $perm_rpath; do
3608 rpath="$rpath$dir:"
3609 done
3610 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3611 fi
3612 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3613 fi
3614
3615 shlibpath="$finalize_shlibpath"
3616 test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3617 if test -n "$shlibpath"; then
3618 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3619 fi
3620
3621 # Get the real and link names of the library.
3622 eval shared_ext=\"$shrext\"
3623 eval library_names=\"$library_names_spec\"
3624 set dummy $library_names
3625 realname="$2"
3626 shift; shift
3627
3628 if test -n "$soname_spec"; then
3629 eval soname=\"$soname_spec\"
3630 else
3631 soname="$realname"
3632 fi
3633 if test -z "$dlname"; then
3634 dlname=$soname
3635 fi
3636
3637 lib="$output_objdir/$realname"
3638 for link
3639 do
3640 linknames="$linknames $link"
3641 done
3642
3643 # Use standard objects if they are pic
3644 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3645
3646 # Prepare the list of exported symbols
3647 if test -z "$export_symbols"; then
3648 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
3649 $show "generating symbol list for \`$libname.la'"
3650 export_symbols="$output_objdir/$libname.exp"
3651 $run $rm $export_symbols
3652 cmds=$export_symbols_cmds
3653 save_ifs="$IFS"; IFS='~'
3654 for cmd in $cmds; do
3655 IFS="$save_ifs"
3656 eval cmd=\"$cmd\"
3657 if len=`expr "X$cmd" : ".*"` &&
3658 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
3659 $show "$cmd"
3660 $run eval "$cmd" || exit $?
3661 skipped_export=false
3662 else
3663 # The command line is too long to execute in one step.
3664 $show "using reloadable object file for export list..."
3665 skipped_export=:
3666 fi
3667 done
3668 IFS="$save_ifs"
3669 if test -n "$export_symbols_regex"; then
3670 $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
3671 $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
3672 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
3673 $run eval '$mv "${export_symbols}T" "$export_symbols"'
3674 fi
3675 fi
3676 fi
3677
3678 if test -n "$export_symbols" && test -n "$include_expsyms"; then
3679 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
3680 fi
3681
3682 tmp_deplibs=
3683 for test_deplib in $deplibs; do
3684 case " $convenience " in
3685 *" $test_deplib "*) ;;
3686 *)
3687 tmp_deplibs="$tmp_deplibs $test_deplib"
3688 ;;
3689 esac
3690 done
3691 deplibs="$tmp_deplibs"
3692
3693 if test -n "$convenience"; then
3694 if test -n "$whole_archive_flag_spec"; then
3695 save_libobjs=$libobjs
3696 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
3697 else
3698 gentop="$output_objdir/${outputname}x"
3699 $show "${rm}r $gentop"
3700 $run ${rm}r "$gentop"
3701 $show "$mkdir $gentop"
3702 $run $mkdir "$gentop"
3703 status=$?
3704 if test "$status" -ne 0 && test ! -d "$gentop"; then
3705 exit $status
3706 fi
3707 generated="$generated $gentop"
3708
3709 for xlib in $convenience; do
3710 # Extract the objects.
3711 case $xlib in
3712 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
3713 *) xabs=`pwd`"/$xlib" ;;
3714 esac
3715 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
3716 xdir="$gentop/$xlib"
3717
3718 $show "${rm}r $xdir"
3719 $run ${rm}r "$xdir"
3720 $show "$mkdir $xdir"
3721 $run $mkdir "$xdir"
3722 status=$?
3723 if test "$status" -ne 0 && test ! -d "$xdir"; then
3724 exit $status
3725 fi
3726 # We will extract separately just the conflicting names and we will no
3727 # longer touch any unique names. It is faster to leave these extract
3728 # automatically by $AR in one run.
3729 $show "(cd $xdir && $AR x $xabs)"
3730 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
3731 if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
3732 :
3733 else
3734 $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
3735 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
3736 $AR t "$xabs" | sort | uniq -cd | while read -r count name
3737 do
3738 i=1
3739 while test "$i" -le "$count"
3740 do
3741 # Put our $i before any first dot (extension)
3742 # Never overwrite any file
3743 name_to="$name"
3744 while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
3745 do
3746 name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
3747 done
3748 $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
3749 $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
3750 i=`expr $i + 1`
3751 done
3752 done
3753 fi
3754
3755 libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
3756 done
3757 fi
3758 fi
3759
3760 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
3761 eval flag=\"$thread_safe_flag_spec\"
3762 linker_flags="$linker_flags $flag"
3763 fi
3764
3765 # Make a backup of the uninstalled library when relinking
3766 if test "$mode" = relink; then
3767 $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
3768 fi
3769
3770 # Do each of the archive commands.
3771 if test "$module" = yes && test -n "$module_cmds" ; then
3772 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
3773 eval test_cmds=\"$module_expsym_cmds\"
3774 cmds=$module_expsym_cmds
3775 else
3776 eval test_cmds=\"$module_cmds\"
3777 cmds=$module_cmds
3778 fi
3779 else
3780 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
3781 eval test_cmds=\"$archive_expsym_cmds\"
3782 cmds=$archive_expsym_cmds
3783 else
3784 eval test_cmds=\"$archive_cmds\"
3785 cmds=$archive_cmds
3786 fi
3787 fi
3788
3789 if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
3790 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
3791 :
3792 else
3793 # The command line is too long to link in one step, link piecewise.
3794 $echo "creating reloadable object files..."
3795
3796 # Save the value of $output and $libobjs because we want to
3797 # use them later. If we have whole_archive_flag_spec, we
3798 # want to use save_libobjs as it was before
3799 # whole_archive_flag_spec was expanded, because we can't
3800 # assume the linker understands whole_archive_flag_spec.
3801 # This may have to be revisited, in case too many
3802 # convenience libraries get linked in and end up exceeding
3803 # the spec.
3804 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
3805 save_libobjs=$libobjs
3806 fi
3807 save_output=$output
3808
3809 # Clear the reloadable object creation command queue and
3810 # initialize k to one.
3811 test_cmds=
3812 concat_cmds=
3813 objlist=
3814 delfiles=
3815 last_robj=
3816 k=1
3817 output=$output_objdir/$save_output-${k}.$objext
3818 # Loop over the list of objects to be linked.
3819 for obj in $save_libobjs
3820 do
3821 eval test_cmds=\"$reload_cmds $objlist $last_robj\"
3822 if test "X$objlist" = X ||
3823 { len=`expr "X$test_cmds" : ".*"` &&
3824 test "$len" -le "$max_cmd_len"; }; then
3825 objlist="$objlist $obj"
3826 else
3827 # The command $test_cmds is almost too long, add a
3828 # command to the queue.
3829 if test "$k" -eq 1 ; then
3830 # The first file doesn't have a previous command to add.
3831 eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
3832 else
3833 # All subsequent reloadable object files will link in
3834 # the last one created.
3835 eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
3836 fi
3837 last_robj=$output_objdir/$save_output-${k}.$objext
3838 k=`expr $k + 1`
3839 output=$output_objdir/$save_output-${k}.$objext
3840 objlist=$obj
3841 len=1
3842 fi
3843 done
3844 # Handle the remaining objects by creating one last
3845 # reloadable object file. All subsequent reloadable object
3846 # files will link in the last one created.
3847 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
3848 eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
3849
3850 if ${skipped_export-false}; then
3851 $show "generating symbol list for \`$libname.la'"
3852 export_symbols="$output_objdir/$libname.exp"
3853 $run $rm $export_symbols
3854 libobjs=$output
3855 # Append the command to create the export file.
3856 eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
3857 fi
3858
3859 # Set up a command to remove the reloadale object files
3860 # after they are used.
3861 i=0
3862 while test "$i" -lt "$k"
3863 do
3864 i=`expr $i + 1`
3865 delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
3866 done
3867
3868 $echo "creating a temporary reloadable object file: $output"
3869
3870 # Loop through the commands generated above and execute them.
3871 save_ifs="$IFS"; IFS='~'
3872 for cmd in $concat_cmds; do
3873 IFS="$save_ifs"
3874 eval cmd=\"$cmd\"
3875 $show "$cmd"
3876 $run eval "$cmd" || exit $?
3877 done
3878 IFS="$save_ifs"
3879
3880 libobjs=$output
3881 # Restore the value of output.
3882 output=$save_output
3883
3884 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
3885 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
3886 fi
3887 # Expand the library linking commands again to reset the
3888 # value of $libobjs for piecewise linking.
3889
3890 # Do each of the archive commands.
3891 if test "$module" = yes && test -n "$module_cmds" ; then
3892 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
3893 cmds=$module_expsym_cmds
3894 else
3895 cmds=$module_cmds
3896 fi
3897 else
3898 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
3899 cmds=$archive_expsym_cmds
3900 else
3901 cmds=$archive_cmds
3902 fi
3903 fi
3904
3905 # Append the command to remove the reloadable object files
3906 # to the just-reset $cmds.
3907 eval cmds=\"\$cmds~\$rm $delfiles\"
3908 fi
3909 save_ifs="$IFS"; IFS='~'
3910 for cmd in $cmds; do
3911 IFS="$save_ifs"
3912 eval cmd=\"$cmd\"
3913 $show "$cmd"
3914 $run eval "$cmd" || exit $?
3915 done
3916 IFS="$save_ifs"
3917
3918 # Restore the uninstalled library and exit
3919 if test "$mode" = relink; then
3920 $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
3921 exit 0
3922 fi
3923
3924 # Create links to the real library.
3925 for linkname in $linknames; do
3926 if test "$realname" != "$linkname"; then
3927 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
3928 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
3929 fi
3930 done
3931
3932 # If -module or -export-dynamic was specified, set the dlname.
3933 if test "$module" = yes || test "$export_dynamic" = yes; then
3934 # On all known operating systems, these are identical.
3935 dlname="$soname"
3936 fi
3937 fi
3938 ;;
3939
3940 obj)
3941 if test -n "$deplibs"; then
3942 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
3943 fi
3944
3945 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3946 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
3947 fi
3948
3949 if test -n "$rpath"; then
3950 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
3951 fi
3952
3953 if test -n "$xrpath"; then
3954 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
3955 fi
3956
3957 if test -n "$vinfo"; then
3958 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
3959 fi
3960
3961 if test -n "$release"; then
3962 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
3963 fi
3964
3965 case $output in
3966 *.lo)
3967 if test -n "$objs$old_deplibs"; then
3968 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
3969 exit 1
3970 fi
3971 libobj="$output"
3972 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
3973 ;;
3974 *)
3975 libobj=
3976 obj="$output"
3977 ;;
3978 esac
3979
3980 # Delete the old objects.
3981 $run $rm $obj $libobj
3982
3983 # Objects from convenience libraries. This assumes
3984 # single-version convenience libraries. Whenever we create
3985 # different ones for PIC/non-PIC, this we'll have to duplicate
3986 # the extraction.
3987 reload_conv_objs=
3988 gentop=
3989 # reload_cmds runs $LD directly, so let us get rid of
3990 # -Wl from whole_archive_flag_spec
3991 wl=
3992
3993 if test -n "$convenience"; then
3994 if test -n "$whole_archive_flag_spec"; then
3995 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
3996 else
3997 gentop="$output_objdir/${obj}x"
3998 $show "${rm}r $gentop"
3999 $run ${rm}r "$gentop"
4000 $show "$mkdir $gentop"
4001 $run $mkdir "$gentop"
4002 status=$?
4003 if test "$status" -ne 0 && test ! -d "$gentop"; then
4004 exit $status
4005 fi
4006 generated="$generated $gentop"
4007
4008 for xlib in $convenience; do
4009 # Extract the objects.
4010 case $xlib in
4011 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
4012 *) xabs=`pwd`"/$xlib" ;;
4013 esac
4014 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
4015 xdir="$gentop/$xlib"
4016
4017 $show "${rm}r $xdir"
4018 $run ${rm}r "$xdir"
4019 $show "$mkdir $xdir"
4020 $run $mkdir "$xdir"
4021 status=$?
4022 if test "$status" -ne 0 && test ! -d "$xdir"; then
4023 exit $status
4024 fi
4025 # We will extract separately just the conflicting names and we will no
4026 # longer touch any unique names. It is faster to leave these extract
4027 # automatically by $AR in one run.
4028 $show "(cd $xdir && $AR x $xabs)"
4029 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
4030 if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
4031 :
4032 else
4033 $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
4034 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
4035 $AR t "$xabs" | sort | uniq -cd | while read -r count name
4036 do
4037 i=1
4038 while test "$i" -le "$count"
4039 do
4040 # Put our $i before any first dot (extension)
4041 # Never overwrite any file
4042 name_to="$name"
4043 while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
4044 do
4045 name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
4046 done
4047 $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
4048 $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
4049 i=`expr $i + 1`
4050 done
4051 done
4052 fi
4053
4054 reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
4055 done
4056 fi
4057 fi
4058
4059 # Create the old-style object.
4060 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
4061
4062 output="$obj"
4063 cmds=$reload_cmds
4064 save_ifs="$IFS"; IFS='~'
4065 for cmd in $cmds; do
4066 IFS="$save_ifs"
4067 eval cmd=\"$cmd\"
4068 $show "$cmd"
4069 $run eval "$cmd" || exit $?
4070 done
4071 IFS="$save_ifs"
4072
4073 # Exit if we aren't doing a library object file.
4074 if test -z "$libobj"; then
4075 if test -n "$gentop"; then
4076 $show "${rm}r $gentop"
4077 $run ${rm}r $gentop
4078 fi
4079
4080 exit 0
4081 fi
4082
4083 if test "$build_libtool_libs" != yes; then
4084 if test -n "$gentop"; then
4085 $show "${rm}r $gentop"
4086 $run ${rm}r $gentop
4087 fi
4088
4089 # Create an invalid libtool object if no PIC, so that we don't
4090 # accidentally link it into a program.
4091 # $show "echo timestamp > $libobj"
4092 # $run eval "echo timestamp > $libobj" || exit $?
4093 exit 0
4094 fi
4095
4096 if test -n "$pic_flag" || test "$pic_mode" != default; then
4097 # Only do commands if we really have different PIC objects.
4098 reload_objs="$libobjs $reload_conv_objs"
4099 output="$libobj"
4100 cmds=$reload_cmds
4101 save_ifs="$IFS"; IFS='~'
4102 for cmd in $cmds; do
4103 IFS="$save_ifs"
4104 eval cmd=\"$cmd\"
4105 $show "$cmd"
4106 $run eval "$cmd" || exit $?
4107 done
4108 IFS="$save_ifs"
4109 fi
4110
4111 if test -n "$gentop"; then
4112 $show "${rm}r $gentop"
4113 $run ${rm}r $gentop
4114 fi
4115
4116 exit 0
4117 ;;
4118
4119 prog)
4120 case $host in
4121 *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4122 esac
4123 if test -n "$vinfo"; then
4124 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4125 fi
4126
4127 if test -n "$release"; then
4128 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4129 fi
4130
4131 if test "$preload" = yes; then
4132 if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4133 test "$dlopen_self_static" = unknown; then
4134 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
4135 fi
4136 fi
4137
4138 case $host in
4139 *-*-rhapsody* | *-*-darwin1.[012])
4140 # On Rhapsody replace the C library is the System framework
4141 compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4142 finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4143 ;;
4144 esac
4145
4146 case $host in
4147 *darwin*)
4148 # Don't allow lazy linking, it breaks C++ global constructors
4149 if test "$tagname" = CXX ; then
4150 compile_command="$compile_command ${wl}-bind_at_load"
4151 finalize_command="$finalize_command ${wl}-bind_at_load"
4152 fi
4153 ;;
4154 esac
4155
4156 compile_command="$compile_command $compile_deplibs"
4157 finalize_command="$finalize_command $finalize_deplibs"
4158
4159 if test -n "$rpath$xrpath"; then
4160 # If the user specified any rpath flags, then add them.
4161 for libdir in $rpath $xrpath; do
4162 # This is the magic to use -rpath.
4163 case "$finalize_rpath " in
4164 *" $libdir "*) ;;
4165 *) finalize_rpath="$finalize_rpath $libdir" ;;
4166 esac
4167 done
4168 fi
4169
4170 # Now hardcode the library paths
4171 rpath=
4172 hardcode_libdirs=
4173 for libdir in $compile_rpath $finalize_rpath; do
4174 if test -n "$hardcode_libdir_flag_spec"; then
4175 if test -n "$hardcode_libdir_separator"; then
4176 if test -z "$hardcode_libdirs"; then
4177 hardcode_libdirs="$libdir"
4178 else
4179 # Just accumulate the unique libdirs.
4180 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4181 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4182 ;;
4183 *)
4184 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4185 ;;
4186 esac
4187 fi
4188 else
4189 eval flag=\"$hardcode_libdir_flag_spec\"
4190 rpath="$rpath $flag"
4191 fi
4192 elif test -n "$runpath_var"; then
4193 case "$perm_rpath " in
4194 *" $libdir "*) ;;
4195 *) perm_rpath="$perm_rpath $libdir" ;;
4196 esac
4197 fi
4198 case $host in
4199 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4200 case :$dllsearchpath: in
4201 *":$libdir:"*) ;;
4202 *) dllsearchpath="$dllsearchpath:$libdir";;
4203 esac
4204 ;;
4205 esac
4206 done
4207 # Substitute the hardcoded libdirs into the rpath.
4208 if test -n "$hardcode_libdir_separator" &&
4209 test -n "$hardcode_libdirs"; then
4210 libdir="$hardcode_libdirs"
4211 eval rpath=\" $hardcode_libdir_flag_spec\"
4212 fi
4213 compile_rpath="$rpath"
4214
4215 rpath=
4216 hardcode_libdirs=
4217 for libdir in $finalize_rpath; do
4218 if test -n "$hardcode_libdir_flag_spec"; then
4219 if test -n "$hardcode_libdir_separator"; then
4220 if test -z "$hardcode_libdirs"; then
4221 hardcode_libdirs="$libdir"
4222 else
4223 # Just accumulate the unique libdirs.
4224 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4225 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4226 ;;
4227 *)
4228 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4229 ;;
4230 esac
4231 fi
4232 else
4233 eval flag=\"$hardcode_libdir_flag_spec\"
4234 rpath="$rpath $flag"
4235 fi
4236 elif test -n "$runpath_var"; then
4237 case "$finalize_perm_rpath " in
4238 *" $libdir "*) ;;
4239 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
4240 esac
4241 fi
4242 done
4243 # Substitute the hardcoded libdirs into the rpath.
4244 if test -n "$hardcode_libdir_separator" &&
4245 test -n "$hardcode_libdirs"; then
4246 libdir="$hardcode_libdirs"
4247 eval rpath=\" $hardcode_libdir_flag_spec\"
4248 fi
4249 finalize_rpath="$rpath"
4250
4251 if test -n "$libobjs" && test "$build_old_libs" = yes; then
4252 # Transform all the library objects into standard objects.
4253 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4254 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4255 fi
4256
4257 dlsyms=
4258 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4259 if test -n "$NM" && test -n "$global_symbol_pipe"; then
4260 dlsyms="${outputname}S.c"
4261 else
4262 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4263 fi
4264 fi
4265
4266 if test -n "$dlsyms"; then
4267 case $dlsyms in
4268 "") ;;
4269 *.c)
4270 # Discover the nlist of each of the dlfiles.
4271 nlist="$output_objdir/${outputname}.nm"
4272
4273 $show "$rm $nlist ${nlist}S ${nlist}T"
4274 $run $rm "$nlist" "${nlist}S" "${nlist}T"
4275
4276 # Parse the name list into a source file.
4277 $show "creating $output_objdir/$dlsyms"
4278
4279 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4280 /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4281 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
4282
4283 #ifdef __cplusplus
4284 extern \"C\" {
4285 #endif
4286
4287 /* Prevent the only kind of declaration conflicts we can make. */
4288 #define lt_preloaded_symbols some_other_symbol
4289
4290 /* External symbol declarations for the compiler. */\
4291 "
4292
4293 if test "$dlself" = yes; then
4294 $show "generating symbol list for \`$output'"
4295
4296 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
4297
4298 # Add our own program objects to the symbol list.
4299 progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4300 for arg in $progfiles; do
4301 $show "extracting global C symbols from \`$arg'"
4302 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4303 done
4304
4305 if test -n "$exclude_expsyms"; then
4306 $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4307 $run eval '$mv "$nlist"T "$nlist"'
4308 fi
4309
4310 if test -n "$export_symbols_regex"; then
4311 $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4312 $run eval '$mv "$nlist"T "$nlist"'
4313 fi
4314
4315 # Prepare the list of exported symbols
4316 if test -z "$export_symbols"; then
4317 export_symbols="$output_objdir/$output.exp"
4318 $run $rm $export_symbols
4319 $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4320 else
4321 $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
4322 $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
4323 $run eval 'mv "$nlist"T "$nlist"'
4324 fi
4325 fi
4326
4327 for arg in $dlprefiles; do
4328 $show "extracting global C symbols from \`$arg'"
4329 name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4330 $run eval '$echo ": $name " >> "$nlist"'
4331 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4332 done
4333
4334 if test -z "$run"; then
4335 # Make sure we have at least an empty file.
4336 test -f "$nlist" || : > "$nlist"
4337
4338 if test -n "$exclude_expsyms"; then
4339 $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4340 $mv "$nlist"T "$nlist"
4341 fi
4342
4343 # Try sorting and uniquifying the output.
4344 if grep -v "^: " < "$nlist" |
4345 if sort -k 3 </dev/null >/dev/null 2>&1; then
4346 sort -k 3
4347 else
4348 sort +2
4349 fi |
4350 uniq > "$nlist"S; then
4351 :
4352 else
4353 grep -v "^: " < "$nlist" > "$nlist"S
4354 fi
4355
4356 if test -f "$nlist"S; then
4357 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4358 else
4359 $echo '/* NONE */' >> "$output_objdir/$dlsyms"
4360 fi
4361
4362 $echo >> "$output_objdir/$dlsyms" "\
4363
4364 #undef lt_preloaded_symbols
4365
4366 #if defined (__STDC__) && __STDC__
4367 # define lt_ptr void *
4368 #else
4369 # define lt_ptr char *
4370 # define const
4371 #endif
4372
4373 /* The mapping between symbol names and symbols. */
4374 const struct {
4375 const char *name;
4376 lt_ptr address;
4377 }
4378 lt_preloaded_symbols[] =
4379 {\
4380 "
4381
4382 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
4383
4384 $echo >> "$output_objdir/$dlsyms" "\
4385 {0, (lt_ptr) 0}
4386 };
4387
4388 /* This works around a problem in FreeBSD linker */
4389 #ifdef FREEBSD_WORKAROUND
4390 static const void *lt_preloaded_setup() {
4391 return lt_preloaded_symbols;
4392 }
4393 #endif
4394
4395 #ifdef __cplusplus
4396 }
4397 #endif\
4398 "
4399 fi
4400
4401 pic_flag_for_symtable=
4402 case $host in
4403 # compiling the symbol table file with pic_flag works around
4404 # a FreeBSD bug that causes programs to crash when -lm is
4405 # linked before any other PIC object. But we must not use
4406 # pic_flag when linking with -static. The problem exists in
4407 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4408 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4409 case "$compile_command " in
4410 *" -static "*) ;;
4411 *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4412 esac;;
4413 *-*-hpux*)
4414 case "$compile_command " in
4415 *" -static "*) ;;
4416 *) pic_flag_for_symtable=" $pic_flag";;
4417 esac
4418 esac
4419
4420 # Now compile the dynamic symbol file.
4421 $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4422 $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
4423
4424 # Clean up the generated files.
4425 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4426 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
4427
4428 # Transform the symbol file into the correct name.
4429 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4430 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4431 ;;
4432 *)
4433 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4434 exit 1
4435 ;;
4436 esac
4437 else
4438 # We keep going just in case the user didn't refer to
4439 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
4440 # really was required.
4441
4442 # Nullify the symbol file.
4443 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
4444 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
4445 fi
4446
4447 if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4448 # Replace the output file specification.
4449 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4450 link_command="$compile_command$compile_rpath"
4451
4452 # We have no uninstalled library dependencies, so finalize right now.
4453 $show "$link_command"
4454 $run eval "$link_command"
4455 status=$?
4456
4457 # Delete the generated files.
4458 if test -n "$dlsyms"; then
4459 $show "$rm $output_objdir/${outputname}S.${objext}"
4460 $run $rm "$output_objdir/${outputname}S.${objext}"
4461 fi
4462
4463 exit $status
4464 fi
4465
4466 if test -n "$shlibpath_var"; then
4467 # We should set the shlibpath_var
4468 rpath=
4469 for dir in $temp_rpath; do
4470 case $dir in
4471 [\\/]* | [A-Za-z]:[\\/]*)
4472 # Absolute path.
4473 rpath="$rpath$dir:"
4474 ;;
4475 *)
4476 # Relative path: add a thisdir entry.
4477 rpath="$rpath\$thisdir/$dir:"
4478 ;;
4479 esac
4480 done
4481 temp_rpath="$rpath"
4482 fi
4483
4484 if test -n "$compile_shlibpath$finalize_shlibpath"; then
4485 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4486 fi
4487 if test -n "$finalize_shlibpath"; then
4488 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4489 fi
4490
4491 compile_var=
4492 finalize_var=
4493 if test -n "$runpath_var"; then
4494 if test -n "$perm_rpath"; then
4495 # We should set the runpath_var.
4496 rpath=
4497 for dir in $perm_rpath; do
4498 rpath="$rpath$dir:"
4499 done
4500 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4501 fi
4502 if test -n "$finalize_perm_rpath"; then
4503 # We should set the runpath_var.
4504 rpath=
4505 for dir in $finalize_perm_rpath; do
4506 rpath="$rpath$dir:"
4507 done
4508 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4509 fi
4510 fi
4511
4512 if test "$no_install" = yes; then
4513 # We don't need to create a wrapper script.
4514 link_command="$compile_var$compile_command$compile_rpath"
4515 # Replace the output file specification.
4516 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4517 # Delete the old output file.
4518 $run $rm $output
4519 # Link the executable and exit
4520 $show "$link_command"
4521 $run eval "$link_command" || exit $?
4522 exit 0
4523 fi
4524
4525 if test "$hardcode_action" = relink; then
4526 # Fast installation is not supported
4527 link_command="$compile_var$compile_command$compile_rpath"
4528 relink_command="$finalize_var$finalize_command$finalize_rpath"
4529
4530 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4531 $echo "$modename: \`$output' will be relinked during installation" 1>&2
4532 else
4533 if test "$fast_install" != no; then
4534 link_command="$finalize_var$compile_command$finalize_rpath"
4535 if test "$fast_install" = yes; then
4536 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
4537 else
4538 # fast_install is set to needless
4539 relink_command=
4540 fi
4541 else
4542 link_command="$compile_var$compile_command$compile_rpath"
4543 relink_command="$finalize_var$finalize_command$finalize_rpath"
4544 fi
4545 fi
4546
4547 # Replace the output file specification.
4548 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
4549
4550 # Delete the old output files.
4551 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
4552
4553 $show "$link_command"
4554 $run eval "$link_command" || exit $?
4555
4556 # Now create the wrapper script.
4557 $show "creating $output"
4558
4559 # Quote the relink command for shipping.
4560 if test -n "$relink_command"; then
4561 # Preserve any variables that may affect compiler behavior
4562 for var in $variables_saved_for_relink; do
4563 if eval test -z \"\${$var+set}\"; then
4564 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4565 elif eval var_value=\$$var; test -z "$var_value"; then
4566 relink_command="$var=; export $var; $relink_command"
4567 else
4568 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4569 relink_command="$var=\"$var_value\"; export $var; $relink_command"
4570 fi
4571 done
4572 relink_command="(cd `pwd`; $relink_command)"
4573 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
4574 fi
4575
4576 # Quote $echo for shipping.
4577 if test "X$echo" = "X$SHELL $0 --fallback-echo"; then
4578 case $0 in
4579 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";;
4580 *) qecho="$SHELL `pwd`/$0 --fallback-echo";;
4581 esac
4582 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4583 else
4584 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
4585 fi
4586
4587 # Only actually do things if our run command is non-null.
4588 if test -z "$run"; then
4589 # win32 will think the script is a binary if it has
4590 # a .exe suffix, so we strip it off here.
4591 case $output in
4592 *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
4593 esac
4594 # test for cygwin because mv fails w/o .exe extensions
4595 case $host in
4596 *cygwin*)
4597 exeext=.exe
4598 outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
4599 *) exeext= ;;
4600 esac
4601 case $host in
4602 *cygwin* | *mingw* )
4603 cwrappersource=`$echo ${objdir}/lt-${output}.c`
4604 cwrapper=`$echo ${output}.exe`
4605 $rm $cwrappersource $cwrapper
4606 trap "$rm $cwrappersource $cwrapper; exit 1" 1 2 15
4607
4608 cat > $cwrappersource <<EOF
4609
4610 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4611 Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4612
4613 The $output program cannot be directly executed until all the libtool
4614 libraries that it depends on are installed.
4615
4616 This wrapper executable should never be moved out of the build directory.
4617 If it is, it will not operate correctly.
4618
4619 Currently, it simply execs the wrapper *script* "/bin/sh $output",
4620 but could eventually absorb all of the scripts functionality and
4621 exec $objdir/$outputname directly.
4622 */
4623 EOF
4624 cat >> $cwrappersource<<"EOF"
4625 #include <stdio.h>
4626 #include <stdlib.h>
4627 #include <unistd.h>
4628 #include <malloc.h>
4629 #include <stdarg.h>
4630 #include <assert.h>
4631
4632 #if defined(PATH_MAX)
4633 # define LT_PATHMAX PATH_MAX
4634 #elif defined(MAXPATHLEN)
4635 # define LT_PATHMAX MAXPATHLEN
4636 #else
4637 # define LT_PATHMAX 1024
4638 #endif
4639
4640 #ifndef DIR_SEPARATOR
4641 #define DIR_SEPARATOR '/'
4642 #endif
4643
4644 #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4645 defined (__OS2__)
4646 #define HAVE_DOS_BASED_FILE_SYSTEM
4647 #ifndef DIR_SEPARATOR_2
4648 #define DIR_SEPARATOR_2 '\\'
4649 #endif
4650 #endif
4651
4652 #ifndef DIR_SEPARATOR_2
4653 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4654 #else /* DIR_SEPARATOR_2 */
4655 # define IS_DIR_SEPARATOR(ch) \
4656 (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4657 #endif /* DIR_SEPARATOR_2 */
4658
4659 #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
4660 #define XFREE(stale) do { \
4661 if (stale) { free ((void *) stale); stale = 0; } \
4662 } while (0)
4663
4664 const char *program_name = NULL;
4665
4666 void * xmalloc (size_t num);
4667 char * xstrdup (const char *string);
4668 char * basename (const char *name);
4669 char * fnqualify(const char *path);
4670 char * strendzap(char *str, const char *pat);
4671 void lt_fatal (const char *message, ...);
4672
4673 int
4674 main (int argc, char *argv[])
4675 {
4676 char **newargz;
4677 int i;
4678
4679 program_name = (char *) xstrdup ((char *) basename (argv[0]));
4680 newargz = XMALLOC(char *, argc+2);
4681 EOF
4682
4683 cat >> $cwrappersource <<EOF
4684 newargz[0] = "$SHELL";
4685 EOF
4686
4687 cat >> $cwrappersource <<"EOF"
4688 newargz[1] = fnqualify(argv[0]);
4689 /* we know the script has the same name, without the .exe */
4690 /* so make sure newargz[1] doesn't end in .exe */
4691 strendzap(newargz[1],".exe");
4692 for (i = 1; i < argc; i++)
4693 newargz[i+1] = xstrdup(argv[i]);
4694 newargz[argc+1] = NULL;
4695 EOF
4696
4697 cat >> $cwrappersource <<EOF
4698 execv("$SHELL",newargz);
4699 EOF
4700
4701 cat >> $cwrappersource <<"EOF"
4702 }
4703
4704 void *
4705 xmalloc (size_t num)
4706 {
4707 void * p = (void *) malloc (num);
4708 if (!p)
4709 lt_fatal ("Memory exhausted");
4710
4711 return p;
4712 }
4713
4714 char *
4715 xstrdup (const char *string)
4716 {
4717 return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
4718 ;
4719 }
4720
4721 char *
4722 basename (const char *name)
4723 {
4724 const char *base;
4725
4726 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4727 /* Skip over the disk name in MSDOS pathnames. */
4728 if (isalpha (name[0]) && name[1] == ':')
4729 name += 2;
4730 #endif
4731
4732 for (base = name; *name; name++)
4733 if (IS_DIR_SEPARATOR (*name))
4734 base = name + 1;
4735 return (char *) base;
4736 }
4737
4738 char *
4739 fnqualify(const char *path)
4740 {
4741 size_t size;
4742 char *p;
4743 char tmp[LT_PATHMAX + 1];
4744
4745 assert(path != NULL);
4746
4747 /* Is it qualified already? */
4748 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4749 if (isalpha (path[0]) && path[1] == ':')
4750 return xstrdup (path);
4751 #endif
4752 if (IS_DIR_SEPARATOR (path[0]))
4753 return xstrdup (path);
4754
4755 /* prepend the current directory */
4756 /* doesn't handle '~' */
4757 if (getcwd (tmp, LT_PATHMAX) == NULL)
4758 lt_fatal ("getcwd failed");
4759 size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
4760 p = XMALLOC(char, size);
4761 sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
4762 return p;
4763 }
4764
4765 char *
4766 strendzap(char *str, const char *pat)
4767 {
4768 size_t len, patlen;
4769
4770 assert(str != NULL);
4771 assert(pat != NULL);
4772
4773 len = strlen(str);
4774 patlen = strlen(pat);
4775
4776 if (patlen <= len)
4777 {
4778 str += len - patlen;
4779 if (strcmp(str, pat) == 0)
4780 *str = '\0';
4781 }
4782 return str;
4783 }
4784
4785 static void
4786 lt_error_core (int exit_status, const char * mode,
4787 const char * message, va_list ap)
4788 {
4789 fprintf (stderr, "%s: %s: ", program_name, mode);
4790 vfprintf (stderr, message, ap);
4791 fprintf (stderr, ".\n");
4792
4793 if (exit_status >= 0)
4794 exit (exit_status);
4795 }
4796
4797 void
4798 lt_fatal (const char *message, ...)
4799 {
4800 va_list ap;
4801 va_start (ap, message);
4802 lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
4803 va_end (ap);
4804 }
4805 EOF
4806 # we should really use a build-platform specific compiler
4807 # here, but OTOH, the wrappers (shell script and this C one)
4808 # are only useful if you want to execute the "real" binary.
4809 # Since the "real" binary is built for $host, then this
4810 # wrapper might as well be built for $host, too.
4811 $run $LTCC -s -o $cwrapper $cwrappersource
4812 ;;
4813 esac
4814 $rm $output
4815 trap "$rm $output; exit 1" 1 2 15
4816
4817 $echo > $output "\
4818 #! $SHELL
4819
4820 # $output - temporary wrapper script for $objdir/$outputname
4821 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4822 #
4823 # The $output program cannot be directly executed until all the libtool
4824 # libraries that it depends on are installed.
4825 #
4826 # This wrapper script should never be moved out of the build directory.
4827 # If it is, it will not operate correctly.
4828
4829 # Sed substitution that helps us do robust quoting. It backslashifies
4830 # metacharacters that are still active within double-quoted strings.
4831 Xsed='${SED} -e 1s/^X//'
4832 sed_quote_subst='$sed_quote_subst'
4833
4834 # The HP-UX ksh and POSIX shell print the target directory to stdout
4835 # if CDPATH is set.
4836 if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
4837
4838 relink_command=\"$relink_command\"
4839
4840 # This environment variable determines our operation mode.
4841 if test \"\$libtool_install_magic\" = \"$magic\"; then
4842 # install mode needs the following variable:
4843 notinst_deplibs='$notinst_deplibs'
4844 else
4845 # When we are sourced in execute mode, \$file and \$echo are already set.
4846 if test \"\$libtool_execute_magic\" != \"$magic\"; then
4847 echo=\"$qecho\"
4848 file=\"\$0\"
4849 # Make sure echo works.
4850 if test \"X\$1\" = X--no-reexec; then
4851 # Discard the --no-reexec flag, and continue.
4852 shift
4853 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
4854 # Yippee, \$echo works!
4855 :
4856 else
4857 # Restart under the correct shell, and then maybe \$echo will work.
4858 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
4859 fi
4860 fi\
4861 "
4862 $echo >> $output "\
4863
4864 # Find the directory that this script lives in.
4865 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
4866 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4867
4868 # Follow symbolic links until we get to the real thisdir.
4869 file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
4870 while test -n \"\$file\"; do
4871 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
4872
4873 # If there was a directory component, then change thisdir.
4874 if test \"x\$destdir\" != \"x\$file\"; then
4875 case \"\$destdir\" in
4876 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4877 *) thisdir=\"\$thisdir/\$destdir\" ;;
4878 esac
4879 fi
4880
4881 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
4882 file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
4883 done
4884
4885 # Try to get the absolute directory name.
4886 absdir=\`cd \"\$thisdir\" && pwd\`
4887 test -n \"\$absdir\" && thisdir=\"\$absdir\"
4888 "
4889
4890 if test "$fast_install" = yes; then
4891 $echo >> $output "\
4892 program=lt-'$outputname'$exeext
4893 progdir=\"\$thisdir/$objdir\"
4894
4895 if test ! -f \"\$progdir/\$program\" || \\
4896 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4897 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4898
4899 file=\"\$\$-\$program\"
4900
4901 if test ! -d \"\$progdir\"; then
4902 $mkdir \"\$progdir\"
4903 else
4904 $rm \"\$progdir/\$file\"
4905 fi"
4906
4907 $echo >> $output "\
4908
4909 # relink executable if necessary
4910 if test -n \"\$relink_command\"; then
4911 if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4912 else
4913 $echo \"\$relink_command_output\" >&2
4914 $rm \"\$progdir/\$file\"
4915 exit 1
4916 fi
4917 fi
4918
4919 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4920 { $rm \"\$progdir/\$program\";
4921 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4922 $rm \"\$progdir/\$file\"
4923 fi"
4924 else
4925 $echo >> $output "\
4926 program='$outputname'
4927 progdir=\"\$thisdir/$objdir\"
4928 "
4929 fi
4930
4931 $echo >> $output "\
4932
4933 if test -f \"\$progdir/\$program\"; then"
4934
4935 # Export our shlibpath_var if we have one.
4936 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4937 $echo >> $output "\
4938 # Add our own library path to $shlibpath_var
4939 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4940
4941 # Some systems cannot cope with colon-terminated $shlibpath_var
4942 # The second colon is a workaround for a bug in BeOS R4 sed
4943 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
4944
4945 export $shlibpath_var
4946 "
4947 fi
4948
4949 # fixup the dll searchpath if we need to.
4950 if test -n "$dllsearchpath"; then
4951 $echo >> $output "\
4952 # Add the dll search path components to the executable PATH
4953 PATH=$dllsearchpath:\$PATH
4954 "
4955 fi
4956
4957 $echo >> $output "\
4958 if test \"\$libtool_execute_magic\" != \"$magic\"; then
4959 # Run the actual program with our arguments.
4960 "
4961 case $host in
4962 # Backslashes separate directories on plain windows
4963 *-*-mingw | *-*-os2*)
4964 $echo >> $output "\
4965 exec \$progdir\\\\\$program \${1+\"\$@\"}
4966 "
4967 ;;
4968
4969 *)
4970 $echo >> $output "\
4971 exec \$progdir/\$program \${1+\"\$@\"}
4972 "
4973 ;;
4974 esac
4975 $echo >> $output "\
4976 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
4977 exit 1
4978 fi
4979 else
4980 # The program doesn't exist.
4981 \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
4982 \$echo \"This script is just a wrapper for \$program.\" 1>&2
4983 $echo \"See the $PACKAGE documentation for more information.\" 1>&2
4984 exit 1
4985 fi
4986 fi\
4987 "
4988 chmod +x $output
4989 fi
4990 exit 0
4991 ;;
4992 esac
4993
4994 # See if we need to build an old-fashioned archive.
4995 for oldlib in $oldlibs; do
4996
4997 if test "$build_libtool_libs" = convenience; then
4998 oldobjs="$libobjs_save"
4999 addlibs="$convenience"
5000 build_libtool_libs=no
5001 else
5002 if test "$build_libtool_libs" = module; then
5003 oldobjs="$libobjs_save"
5004 build_libtool_libs=no
5005 else
5006 oldobjs="$old_deplibs $non_pic_objects"
5007 fi
5008 addlibs="$old_convenience"
5009 fi
5010
5011 if test -n "$addlibs"; then
5012 gentop="$output_objdir/${outputname}x"
5013 $show "${rm}r $gentop"
5014 $run ${rm}r "$gentop"
5015 $show "$mkdir $gentop"
5016 $run $mkdir "$gentop"
5017 status=$?
5018 if test "$status" -ne 0 && test ! -d "$gentop"; then
5019 exit $status
5020 fi
5021 generated="$generated $gentop"
5022
5023 # Add in members from convenience archives.
5024 for xlib in $addlibs; do
5025 # Extract the objects.
5026 case $xlib in
5027 [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
5028 *) xabs=`pwd`"/$xlib" ;;
5029 esac
5030 xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
5031 xdir="$gentop/$xlib"
5032
5033 $show "${rm}r $xdir"
5034 $run ${rm}r "$xdir"
5035 $show "$mkdir $xdir"
5036 $run $mkdir "$xdir"
5037 status=$?
5038 if test "$status" -ne 0 && test ! -d "$xdir"; then
5039 exit $status
5040 fi
5041 # We will extract separately just the conflicting names and we will no
5042 # longer touch any unique names. It is faster to leave these extract
5043 # automatically by $AR in one run.
5044 $show "(cd $xdir && $AR x $xabs)"
5045 $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
5046 if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
5047 :
5048 else
5049 $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
5050 $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
5051 $AR t "$xabs" | sort | uniq -cd | while read -r count name
5052 do
5053 i=1
5054 while test "$i" -le "$count"
5055 do
5056 # Put our $i before any first dot (extension)
5057 # Never overwrite any file
5058 name_to="$name"
5059 while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
5060 do
5061 name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
5062 done
5063 $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
5064 $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
5065 i=`expr $i + 1`
5066 done
5067 done
5068 fi
5069
5070 oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
5071 done
5072 fi
5073
5074 # Do each command in the archive commands.
5075 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5076 cmds=$old_archive_from_new_cmds
5077 else
5078 eval cmds=\"$old_archive_cmds\"
5079
5080 if len=`expr "X$cmds" : ".*"` &&
5081 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5082 cmds=$old_archive_cmds
5083 else
5084 # the command line is too long to link in one step, link in parts
5085 $echo "using piecewise archive linking..."
5086 save_RANLIB=$RANLIB
5087 RANLIB=:
5088 objlist=
5089 concat_cmds=
5090 save_oldobjs=$oldobjs
5091 # GNU ar 2.10+ was changed to match POSIX; thus no paths are
5092 # encoded into archives. This makes 'ar r' malfunction in
5093 # this piecewise linking case whenever conflicting object
5094 # names appear in distinct ar calls; check, warn and compensate.
5095 if (for obj in $save_oldobjs
5096 do
5097 $echo "X$obj" | $Xsed -e 's%^.*/%%'
5098 done | sort | sort -uc >/dev/null 2>&1); then
5099 :
5100 else
5101 $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
5102 $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
5103 AR_FLAGS=cq
5104 fi
5105 # Is there a better way of finding the last object in the list?
5106 for obj in $save_oldobjs
5107 do
5108 last_oldobj=$obj
5109 done
5110 for obj in $save_oldobjs
5111 do
5112 oldobjs="$objlist $obj"
5113 objlist="$objlist $obj"
5114 eval test_cmds=\"$old_archive_cmds\"
5115 if len=`expr "X$test_cmds" : ".*"` &&
5116 test "$len" -le "$max_cmd_len"; then
5117 :
5118 else
5119 # the above command should be used before it gets too long
5120 oldobjs=$objlist
5121 if test "$obj" = "$last_oldobj" ; then
5122 RANLIB=$save_RANLIB
5123 fi
5124 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5125 eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5126 objlist=
5127 fi
5128 done
5129 RANLIB=$save_RANLIB
5130 oldobjs=$objlist
5131 if test "X$oldobjs" = "X" ; then
5132 eval cmds=\"\$concat_cmds\"
5133 else
5134 eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
5135 fi
5136 fi
5137 fi
5138 save_ifs="$IFS"; IFS='~'
5139 for cmd in $cmds; do
5140 eval cmd=\"$cmd\"
5141 IFS="$save_ifs"
5142 $show "$cmd"
5143 $run eval "$cmd" || exit $?
5144 done
5145 IFS="$save_ifs"
5146 done
5147
5148 if test -n "$generated"; then
5149 $show "${rm}r$generated"
5150 $run ${rm}r$generated
5151 fi
5152
5153 # Now create the libtool archive.
5154 case $output in
5155 *.la)
5156 old_library=
5157 test "$build_old_libs" = yes && old_library="$libname.$libext"
5158 $show "creating $output"
5159
5160 # Preserve any variables that may affect compiler behavior
5161 for var in $variables_saved_for_relink; do
5162 if eval test -z \"\${$var+set}\"; then
5163 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5164 elif eval var_value=\$$var; test -z "$var_value"; then
5165 relink_command="$var=; export $var; $relink_command"
5166 else
5167 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5168 relink_command="$var=\"$var_value\"; export $var; $relink_command"
5169 fi
5170 done
5171 # Quote the link command for shipping.
5172 relink_command="(cd `pwd`; $SHELL $0 $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5173 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
5174 if test "$hardcode_automatic" = yes ; then
5175 relink_command=
5176 fi
5177 # Only create the output if not a dry run.
5178 if test -z "$run"; then
5179 for installed in no yes; do
5180 if test "$installed" = yes; then
5181 if test -z "$install_libdir"; then
5182 break
5183 fi
5184 output="$output_objdir/$outputname"i
5185 # Replace all uninstalled libtool libraries with the installed ones
5186 newdependency_libs=
5187 for deplib in $dependency_libs; do
5188 case $deplib in
5189 *.la)
5190 name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5191 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5192 if test -z "$libdir"; then
5193 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5194 exit 1
5195 fi
5196 # We do not want portage's install root ($D) present. Check only for
5197 # this if the .la is being installed.
5198 if test "$installed" = yes && test "$D"; then
5199 eval mynewdependency_lib="`echo "$libdir/$name" |sed -e "s:$D::g" -e 's://:/:g'`"
5200 else
5201 mynewdependency_lib="$libdir/$name"
5202 fi
5203 # Do not add duplicates
5204 if test "$mynewdependency_lib"; then
5205 if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then
5206 newdependency_libs="$newdependency_libs $mynewdependency_lib"
5207 fi
5208 fi
5209 ;;
5210 *)
5211 if test "$installed" = yes; then
5212 # Rather use S=WORKDIR if our version of portage supports it.
5213 # This is because some ebuild (gcc) do not use $S as buildroot.
5214 if test "$PWORKDIR"; then
5215 S="$PWORKDIR"
5216 fi
5217 # We do not want portage's build root ($S) present.
5218 if test -n "`echo $deplib |grep -e "$S"`" && test "$S"; then
5219 mynewdependency_lib=""
5220 # We do not want portage's install root ($D) present.
5221 elif test -n "`echo $deplib |grep -e "$D"`" && test "$D"; then
5222 eval mynewdependency_lib="`echo "$deplib" |sed -e "s:$D::g" -e 's://:/:g'`"
5223 else
5224 mynewdependency_lib="$deplib"
5225 fi
5226 else
5227 mynewdependency_lib="$deplib"
5228 fi
5229 # Do not add duplicates
5230 if test "$mynewdependency_lib"; then
5231 if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then
5232 newdependency_libs="$newdependency_libs $mynewdependency_lib"
5233 fi
5234 fi
5235 ;;
5236 esac
5237 done
5238 dependency_libs="$newdependency_libs"
5239 newdlfiles=
5240 for lib in $dlfiles; do
5241 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5242 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5243 if test -z "$libdir"; then
5244 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5245 exit 1
5246 fi
5247 newdlfiles="$newdlfiles $libdir/$name"
5248 done
5249 dlfiles="$newdlfiles"
5250 newdlprefiles=
5251 for lib in $dlprefiles; do
5252 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5253 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5254 if test -z "$libdir"; then
5255 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5256 exit 1
5257 fi
5258 newdlprefiles="$newdlprefiles $libdir/$name"
5259 done
5260 dlprefiles="$newdlprefiles"
5261 else
5262 newdlfiles=
5263 for lib in $dlfiles; do
5264 case $lib in
5265 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5266 *) abs=`pwd`"/$lib" ;;
5267 esac
5268 newdlfiles="$newdlfiles $abs"
5269 done
5270 dlfiles="$newdlfiles"
5271 newdlprefiles=
5272 for lib in $dlprefiles; do
5273 case $lib in
5274 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5275 *) abs=`pwd`"/$lib" ;;
5276 esac
5277 newdlprefiles="$newdlprefiles $abs"
5278 done
5279 dlprefiles="$newdlprefiles"
5280 fi
5281 $rm $output
5282 # place dlname in correct position for cygwin
5283 tdlname=$dlname
5284 case $host,$output,$installed,$module,$dlname in
5285 *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5286 esac
5287 # Do not add duplicates
5288 if test "$installed" = yes && test "$D"; then
5289 install_libdir="`echo "$install_libdir" |sed -e "s:$D::g" -e 's://:/:g'`"
5290 fi
5291 $echo > $output "\
5292 # $outputname - a libtool library file
5293 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5294 #
5295 # Please DO NOT delete this file!
5296 # It is necessary for linking the library.
5297
5298 # The name that we can dlopen(3).
5299 dlname='$tdlname'
5300
5301 # Names of this library.
5302 library_names='$library_names'
5303
5304 # The name of the static archive.
5305 old_library='$old_library'
5306
5307 # Libraries that this one depends upon.
5308 dependency_libs='$dependency_libs'
5309
5310 # Version information for $libname.
5311 current=$current
5312 age=$age
5313 revision=$revision
5314
5315 # Is this an already installed library?
5316 installed=$installed
5317
5318 # Should we warn about portability when linking against -modules?
5319 shouldnotlink=$module
5320
5321 # Files to dlopen/dlpreopen
5322 dlopen='$dlfiles'
5323 dlpreopen='$dlprefiles'
5324
5325 # Directory that this library needs to be installed in:
5326 libdir='$install_libdir'"
5327 if test "$installed" = no && test "$need_relink" = yes; then
5328 $echo >> $output "\
5329 relink_command=\"$relink_command\""
5330 fi
5331 done
5332 fi
5333
5334 # Do a symbolic link so that the libtool archive can be found in
5335 # LD_LIBRARY_PATH before the program is installed.
5336 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5337 $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
5338 ;;
5339 esac
5340 exit 0
5341 ;;
5342
5343 # libtool install mode
5344 install)
5345 modename="$modename: install"
5346
5347 # There may be an optional sh(1) argument at the beginning of
5348 # install_prog (especially on Windows NT).
5349 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5350 # Allow the use of GNU shtool's install command.
5351 $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
5352 # Aesthetically quote it.
5353 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5354 case $arg in
5355 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
5356 arg="\"$arg\""
5357 ;;
5358 esac
5359 install_prog="$arg "
5360 arg="$1"
5361 shift
5362 else
5363 install_prog=
5364 arg="$nonopt"
5365 fi
5366
5367 # The real first argument should be the name of the installation program.
5368 # Aesthetically quote it.
5369 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5370 case $arg in
5371 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
5372 arg="\"$arg\""
5373 ;;
5374 esac
5375 install_prog="$install_prog$arg"
5376
5377 # We need to accept at least all the BSD install flags.
5378 dest=
5379 files=
5380 opts=
5381 prev=
5382 install_type=
5383 isdir=no
5384 stripme=
5385 for arg
5386 do
5387 if test -n "$dest"; then
5388 files="$files $dest"
5389 dest="$arg"
5390 continue
5391 fi
5392
5393 case $arg in
5394 -d) isdir=yes ;;
5395 -f) prev="-f" ;;
5396 -g) prev="-g" ;;
5397 -m) prev="-m" ;;
5398 -o) prev="-o" ;;
5399 -s)
5400 stripme=" -s"
5401 continue
5402 ;;
5403 -*) ;;
5404
5405 *)
5406 # If the previous option needed an argument, then skip it.
5407 if test -n "$prev"; then
5408 prev=
5409 else
5410 dest="$arg"
5411 continue
5412 fi
5413 ;;
5414 esac
5415
5416 # Aesthetically quote the argument.
5417 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5418 case $arg in
5419 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
5420 arg="\"$arg\""
5421 ;;
5422 esac
5423 install_prog="$install_prog $arg"
5424 done
5425
5426 if test -z "$install_prog"; then
5427 $echo "$modename: you must specify an install program" 1>&2
5428 $echo "$help" 1>&2
5429 exit 1
5430 fi
5431
5432 if test -n "$prev"; then
5433 $echo "$modename: the \`$prev' option requires an argument" 1>&2
5434 $echo "$help" 1>&2
5435 exit 1
5436 fi
5437
5438 if test -z "$files"; then
5439 if test -z "$dest"; then
5440 $echo "$modename: no file or destination specified" 1>&2
5441 else
5442 $echo "$modename: you must specify a destination" 1>&2
5443 fi
5444 $echo "$help" 1>&2
5445 exit 1
5446 fi
5447
5448 # Strip any trailing slash from the destination.
5449 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5450
5451 # Check to see that the destination is a directory.
5452 test -d "$dest" && isdir=yes
5453 if test "$isdir" = yes; then
5454 destdir="$dest"
5455 destname=
5456 else
5457 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5458 test "X$destdir" = "X$dest" && destdir=.
5459 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5460
5461 # Not a directory, so check to see that there is only one file specified.
5462 set dummy $files
5463 if test "$#" -gt 2; then
5464 $echo "$modename: \`$dest' is not a directory" 1>&2
5465 $echo "$help" 1>&2
5466 exit 1
5467 fi
5468 fi
5469 case $destdir in
5470 [\\/]* | [A-Za-z]:[\\/]*) ;;
5471 *)
5472 for file in $files; do
5473 case $file in
5474 *.lo) ;;
5475 *)
5476 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5477 $echo "$help" 1>&2
5478 exit 1
5479 ;;
5480 esac
5481 done
5482 ;;
5483 esac
5484
5485 # This variable tells wrapper scripts just to set variables rather
5486 # than running their programs.
5487 libtool_install_magic="$magic"
5488
5489 staticlibs=
5490 future_libdirs=
5491 current_libdirs=
5492 for file in $files; do
5493
5494 # Do each installation.
5495 case $file in
5496 *.$libext)
5497 # Do the static libraries later.
5498 staticlibs="$staticlibs $file"
5499 ;;
5500
5501 *.la)
5502 # Check to see that this really is a libtool archive.
5503 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5504 else
5505 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5506 $echo "$help" 1>&2
5507 exit 1
5508 fi
5509
5510 library_names=
5511 old_library=
5512 relink_command=
5513 # If there is no directory component, then add one.
5514 case $file in
5515 */* | *\\*) . $file ;;
5516 *) . ./$file ;;
5517 esac
5518
5519 # Add the libdir to current_libdirs if it is the destination.
5520 if test "X$destdir" = "X$libdir"; then
5521 case "$current_libdirs " in
5522 *" $libdir "*) ;;
5523 *) current_libdirs="$current_libdirs $libdir" ;;
5524 esac
5525 else
5526 # Note the libdir as a future libdir.
5527 case "$future_libdirs " in
5528 *" $libdir "*) ;;
5529 *) future_libdirs="$future_libdirs $libdir" ;;
5530 esac
5531 fi
5532
5533 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
5534 test "X$dir" = "X$file/" && dir=
5535 dir="$dir$objdir"
5536
5537 if test -n "$relink_command"; then
5538 # Determine the prefix the user has applied to our future dir.
5539 inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
5540
5541 # Don't allow the user to place us outside of our expected
5542 # location b/c this prevents finding dependent libraries that
5543 # are installed to the same prefix.
5544 # At present, this check doesn't affect windows .dll's that
5545 # are installed into $libdir/../bin (currently, that works fine)
5546 # but it's something to keep an eye on.
5547 if test "$inst_prefix_dir" = "$destdir"; then
5548 $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
5549 exit 1
5550 fi
5551
5552 if test -n "$inst_prefix_dir"; then
5553 # Stick the inst_prefix_dir data into the link command.
5554 relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
5555 else
5556 relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
5557 fi
5558
5559 $echo "$modename: warning: relinking \`$file'" 1>&2
5560 $show "$relink_command"
5561 if $run eval "$relink_command"; then :
5562 else
5563 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
5564 exit 1
5565 fi
5566 fi
5567
5568 # See the names of the shared library.
5569 set dummy $library_names
5570 if test -n "$2"; then
5571 realname="$2"
5572 shift
5573 shift
5574
5575 srcname="$realname"
5576 test -n "$relink_command" && srcname="$realname"T
5577
5578 # Install the shared library and build the symlinks.
5579 $show "$install_prog $dir/$srcname $destdir/$realname"
5580 $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
5581 if test -n "$stripme" && test -n "$striplib"; then
5582 $show "$striplib $destdir/$realname"
5583 $run eval "$striplib $destdir/$realname" || exit $?
5584 fi
5585
5586 if test "$#" -gt 0; then
5587 # Delete the old symlinks, and create new ones.
5588 for linkname
5589 do
5590 if test "$linkname" != "$realname"; then
5591 $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
5592 $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
5593 fi
5594 done
5595 fi
5596
5597 # Do each command in the postinstall commands.
5598 lib="$destdir/$realname"
5599 cmds=$postinstall_cmds
5600 save_ifs="$IFS"; IFS='~'
5601 for cmd in $cmds; do
5602 IFS="$save_ifs"
5603 eval cmd=\"$cmd\"
5604 $show "$cmd"
5605 $run eval "$cmd" || exit $?
5606 done
5607 IFS="$save_ifs"
5608 fi
5609
5610 # Install the pseudo-library for information purposes.
5611 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5612 instname="$dir/$name"i
5613 $show "$install_prog $instname $destdir/$name"
5614 $run eval "$install_prog $instname $destdir/$name" || exit $?
5615
5616 # Maybe install the static library, too.
5617 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
5618 ;;
5619
5620 *.lo)
5621 # Install (i.e. copy) a libtool object.
5622
5623 # Figure out destination file name, if it wasn't already specified.
5624 if test -n "$destname"; then
5625 destfile="$destdir/$destname"
5626 else
5627 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5628 destfile="$destdir/$destfile"
5629 fi
5630
5631 # Deduce the name of the destination old-style object file.
5632 case $destfile in
5633 *.lo)
5634 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
5635 ;;
5636 *.$objext)
5637 staticdest="$destfile"
5638 destfile=
5639 ;;
5640 *)
5641 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
5642 $echo "$help" 1>&2
5643 exit 1
5644 ;;
5645 esac
5646
5647 # Install the libtool object if requested.
5648 if test -n "$destfile"; then
5649 $show "$install_prog $file $destfile"
5650 $run eval "$install_prog $file $destfile" || exit $?
5651 fi
5652
5653 # Install the old object if enabled.
5654 if test "$build_old_libs" = yes; then
5655 # Deduce the name of the old-style object file.
5656 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
5657
5658 $show "$install_prog $staticobj $staticdest"
5659 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
5660 fi
5661 exit 0
5662 ;;
5663
5664 *)
5665 # Figure out destination file name, if it wasn't already specified.
5666 if test -n "$destname"; then
5667 destfile="$destdir/$destname"
5668 else
5669 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5670 destfile="$destdir/$destfile"
5671 fi
5672
5673 # If the file is missing, and there is a .exe on the end, strip it
5674 # because it is most likely a libtool script we actually want to
5675 # install
5676 stripped_ext=""
5677 case $file in
5678 *.exe)
5679 if test ! -f "$file"; then
5680 file=`$echo $file|${SED} 's,.exe$,,'`
5681 stripped_ext=".exe"
5682 fi
5683 ;;
5684 esac
5685
5686 # Do a test to see if this is really a libtool program.
5687 case $host in
5688 *cygwin*|*mingw*)
5689 wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
5690 ;;
5691 *)
5692 wrapper=$file
5693 ;;
5694 esac
5695 if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
5696 notinst_deplibs=
5697 relink_command=
5698
5699 # To insure that "foo" is sourced, and not "foo.exe",
5700 # finese the cygwin/MSYS system by explicitly sourcing "foo."
5701 # which disallows the automatic-append-.exe behavior.
5702 case $build in
5703 *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
5704 *) wrapperdot=${wrapper} ;;
5705 esac
5706 # If there is no directory component, then add one.
5707 case $file in
5708 */* | *\\*) . ${wrapperdot} ;;
5709 *) . ./${wrapperdot} ;;
5710 esac
5711
5712 # Check the variables that should have been set.
5713 if test -z "$notinst_deplibs"; then
5714 $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
5715 exit 1
5716 fi
5717
5718 finalize=yes
5719 for lib in $notinst_deplibs; do
5720 # Check to see that each library is installed.
5721 libdir=
5722 if test -f "$lib"; then
5723 # If there is no directory component, then add one.
5724 case $lib in
5725 */* | *\\*) . $lib ;;
5726 *) . ./$lib ;;
5727 esac
5728 fi
5729 libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
5730 if test -n "$libdir" && test ! -f "$libfile"; then
5731 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
5732 finalize=no
5733 fi
5734 done
5735
5736 relink_command=
5737 # To insure that "foo" is sourced, and not "foo.exe",
5738 # finese the cygwin/MSYS system by explicitly sourcing "foo."
5739 # which disallows the automatic-append-.exe behavior.
5740 case $build in
5741 *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
5742 *) wrapperdot=${wrapper} ;;
5743 esac
5744 # If there is no directory component, then add one.
5745 case $file in
5746 */* | *\\*) . ${wrapperdot} ;;
5747 *) . ./${wrapperdot} ;;
5748 esac
5749
5750 outputname=
5751 if test "$fast_install" = no && test -n "$relink_command"; then
5752 if test "$finalize" = yes && test -z "$run"; then
5753 tmpdir="/tmp"
5754 test -n "$TMPDIR" && tmpdir="$TMPDIR"
5755 tmpdir="$tmpdir/libtool-$$"
5756 if $mkdir "$tmpdir" && chmod 700 "$tmpdir"; then :
5757 else
5758 $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
5759 continue
5760 fi
5761 file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
5762 outputname="$tmpdir/$file"
5763 # Replace the output file specification.
5764 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
5765
5766 $show "$relink_command"
5767 if $run eval "$relink_command"; then :
5768 else
5769 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
5770 ${rm}r "$tmpdir"
5771 continue
5772 fi
5773 file="$outputname"
5774 else
5775 $echo "$modename: warning: cannot relink \`$file'" 1>&2
5776 fi
5777 else
5778 # Install the binary that we compiled earlier.
5779 file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
5780 fi
5781 fi
5782
5783 # remove .exe since cygwin /usr/bin/install will append another
5784 # one anyways
5785 case $install_prog,$host in
5786 */usr/bin/install*,*cygwin*)
5787 case $file:$destfile in
5788 *.exe:*.exe)
5789 # this is ok
5790 ;;
5791 *.exe:*)
5792 destfile=$destfile.exe
5793 ;;
5794 *:*.exe)
5795 destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
5796 ;;
5797 esac
5798 ;;
5799 esac
5800 $show "$install_prog$stripme $file $destfile"
5801 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
5802 test -n "$outputname" && ${rm}r "$tmpdir"
5803 ;;
5804 esac
5805 done
5806
5807 for file in $staticlibs; do
5808 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
5809
5810 # Set up the ranlib parameters.
5811 oldlib="$destdir/$name"
5812
5813 $show "$install_prog $file $oldlib"
5814 $run eval "$install_prog \$file \$oldlib" || exit $?
5815
5816 if test -n "$stripme" && test -n "$old_striplib"; then
5817 $show "$old_striplib $oldlib"
5818 $run eval "$old_striplib $oldlib" || exit $?
5819 fi
5820
5821 # Do each command in the postinstall commands.
5822 cmds=$old_postinstall_cmds
5823 save_ifs="$IFS"; IFS='~'
5824 for cmd in $cmds; do
5825 IFS="$save_ifs"
5826 eval cmd=\"$cmd\"
5827 $show "$cmd"
5828 $run eval "$cmd" || exit $?
5829 done
5830 IFS="$save_ifs"
5831 done
5832
5833 if test -n "$future_libdirs"; then
5834 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
5835 fi
5836
5837 if test -n "$current_libdirs"; then
5838 # Maybe just do a dry run.
5839 test -n "$run" && current_libdirs=" -n$current_libdirs"
5840 exec_cmd='$SHELL $0 $preserve_args --finish$current_libdirs'
5841 else
5842 exit 0
5843 fi
5844 ;;
5845
5846 # libtool finish mode
5847 finish)
5848 modename="$modename: finish"
5849 libdirs="$nonopt"
5850 admincmds=
5851
5852 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
5853 for dir
5854 do
5855 libdirs="$libdirs $dir"
5856 done
5857
5858 for libdir in $libdirs; do
5859 if test -n "$finish_cmds"; then
5860 # Do each command in the finish commands.
5861 cmds=$finish_cmds
5862 save_ifs="$IFS"; IFS='~'
5863 for cmd in $cmds; do
5864 IFS="$save_ifs"
5865 eval cmd=\"$cmd\"
5866 $show "$cmd"
5867 $run eval "$cmd" || admincmds="$admincmds
5868 $cmd"
5869 done
5870 IFS="$save_ifs"
5871 fi
5872 if test -n "$finish_eval"; then
5873 # Do the single finish_eval.
5874 eval cmds=\"$finish_eval\"
5875 $run eval "$cmds" || admincmds="$admincmds
5876 $cmds"
5877 fi
5878 done
5879 fi
5880
5881 # Exit here if they wanted silent mode.
5882 test "$show" = : && exit 0
5883
5884 $echo "----------------------------------------------------------------------"
5885 $echo "Libraries have been installed in:"
5886 for libdir in $libdirs; do
5887 $echo " $libdir"
5888 done
5889 $echo
5890 $echo "If you ever happen to want to link against installed libraries"
5891 $echo "in a given directory, LIBDIR, you must either use libtool, and"
5892 $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
5893 $echo "flag during linking and do at least one of the following:"
5894 if test -n "$shlibpath_var"; then
5895 $echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
5896 $echo " during execution"
5897 fi
5898 if test -n "$runpath_var"; then
5899 $echo " - add LIBDIR to the \`$runpath_var' environment variable"
5900 $echo " during linking"
5901 fi
5902 if test -n "$hardcode_libdir_flag_spec"; then
5903 libdir=LIBDIR
5904 eval flag=\"$hardcode_libdir_flag_spec\"
5905
5906 $echo " - use the \`$flag' linker flag"
5907 fi
5908 if test -n "$admincmds"; then
5909 $echo " - have your system administrator run these commands:$admincmds"
5910 fi
5911 if test -f /etc/ld.so.conf; then
5912 $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
5913 fi
5914 $echo
5915 $echo "See any operating system documentation about shared libraries for"
5916 $echo "more information, such as the ld(1) and ld.so(8) manual pages."
5917 $echo "----------------------------------------------------------------------"
5918 exit 0
5919 ;;
5920
5921 # libtool execute mode
5922 execute)
5923 modename="$modename: execute"
5924
5925 # The first argument is the command name.
5926 cmd="$nonopt"
5927 if test -z "$cmd"; then
5928 $echo "$modename: you must specify a COMMAND" 1>&2
5929 $echo "$help"
5930 exit 1
5931 fi
5932
5933 # Handle -dlopen flags immediately.
5934 for file in $execute_dlfiles; do
5935 if test ! -f "$file"; then
5936 $echo "$modename: \`$file' is not a file" 1>&2
5937 $echo "$help" 1>&2
5938 exit 1
5939 fi
5940
5941 dir=
5942 case $file in
5943 *.la)
5944 # Check to see that this really is a libtool archive.
5945 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5946 else
5947 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5948 $echo "$help" 1>&2
5949 exit 1
5950 fi
5951
5952 # Read the libtool library.
5953 dlname=
5954 library_names=
5955
5956 # If there is no directory component, then add one.
5957 case $file in
5958 */* | *\\*) . $file ;;
5959 *) . ./$file ;;
5960 esac
5961
5962 # Skip this library if it cannot be dlopened.
5963 if test -z "$dlname"; then
5964 # Warn if it was a shared library.
5965 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
5966 continue
5967 fi
5968
5969 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
5970 test "X$dir" = "X$file" && dir=.
5971
5972 if test -f "$dir/$objdir/$dlname"; then
5973 dir="$dir/$objdir"
5974 else
5975 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
5976 exit 1
5977 fi
5978 ;;
5979
5980 *.lo)
5981 # Just add the directory containing the .lo file.
5982 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
5983 test "X$dir" = "X$file" && dir=.
5984 ;;
5985
5986 *)
5987 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
5988 continue
5989 ;;
5990 esac
5991
5992 # Get the absolute pathname.
5993 absdir=`cd "$dir" && pwd`
5994 test -n "$absdir" && dir="$absdir"
5995
5996 # Now add the directory to shlibpath_var.
5997 if eval "test -z \"\$$shlibpath_var\""; then
5998 eval "$shlibpath_var=\"\$dir\""
5999 else
6000 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6001 fi
6002 done
6003
6004 # This variable tells wrapper scripts just to set shlibpath_var
6005 # rather than running their programs.
6006 libtool_execute_magic="$magic"
6007
6008 # Check if any of the arguments is a wrapper script.
6009 args=
6010 for file
6011 do
6012 case $file in
6013 -*) ;;
6014 *)
6015 # Do a test to see if this is really a libtool program.
6016 if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6017 # If there is no directory component, then add one.
6018 case $file in
6019 */* | *\\*) . $file ;;
6020 *) . ./$file ;;
6021 esac
6022
6023 # Transform arg to wrapped name.
6024 file="$progdir/$program"
6025 fi
6026 ;;
6027 esac
6028 # Quote arguments (to preserve shell metacharacters).
6029 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6030 args="$args \"$file\""
6031 done
6032
6033 if test -z "$run"; then
6034 if test -n "$shlibpath_var"; then
6035 # Export the shlibpath_var.
6036 eval "export $shlibpath_var"
6037 fi
6038
6039 # Restore saved environment variables
6040 if test "${save_LC_ALL+set}" = set; then
6041 LC_ALL="$save_LC_ALL"; export LC_ALL
6042 fi
6043 if test "${save_LANG+set}" = set; then
6044 LANG="$save_LANG"; export LANG
6045 fi
6046
6047 # Now prepare to actually exec the command.
6048 exec_cmd="\$cmd$args"
6049 else
6050 # Display what would be done.
6051 if test -n "$shlibpath_var"; then
6052 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6053 $echo "export $shlibpath_var"
6054 fi
6055 $echo "$cmd$args"
6056 exit 0
6057 fi
6058 ;;
6059
6060 # libtool clean and uninstall mode
6061 clean | uninstall)
6062 modename="$modename: $mode"
6063 rm="$nonopt"
6064 files=
6065 rmforce=
6066 exit_status=0
6067
6068 # This variable tells wrapper scripts just to set variables rather
6069 # than running their programs.
6070 libtool_install_magic="$magic"
6071
6072 for arg
6073 do
6074 case $arg in
6075 -f) rm="$rm $arg"; rmforce=yes ;;
6076 -*) rm="$rm $arg" ;;
6077 *) files="$files $arg" ;;
6078 esac
6079 done
6080
6081 if test -z "$rm"; then
6082 $echo "$modename: you must specify an RM program" 1>&2
6083 $echo "$help" 1>&2
6084 exit 1
6085 fi
6086
6087 rmdirs=
6088
6089 origobjdir="$objdir"
6090 for file in $files; do
6091 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6092 if test "X$dir" = "X$file"; then
6093 dir=.
6094 objdir="$origobjdir"
6095 else
6096 objdir="$dir/$origobjdir"
6097 fi
6098 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6099 test "$mode" = uninstall && objdir="$dir"
6100
6101 # Remember objdir for removal later, being careful to avoid duplicates
6102 if test "$mode" = clean; then
6103 case " $rmdirs " in
6104 *" $objdir "*) ;;
6105 *) rmdirs="$rmdirs $objdir" ;;
6106 esac
6107 fi
6108
6109 # Don't error if the file doesn't exist and rm -f was used.
6110 if (test -L "$file") >/dev/null 2>&1 \
6111 || (test -h "$file") >/dev/null 2>&1 \
6112 || test -f "$file"; then
6113 :
6114 elif test -d "$file"; then
6115 exit_status=1
6116 continue
6117 elif test "$rmforce" = yes; then
6118 continue
6119 fi
6120
6121 rmfiles="$file"
6122
6123 case $name in
6124 *.la)
6125 # Possibly a libtool archive, so verify it.
6126 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6127 . $dir/$name
6128
6129 # Delete the libtool libraries and symlinks.
6130 for n in $library_names; do
6131 rmfiles="$rmfiles $objdir/$n"
6132 done
6133 test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
6134 test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
6135
6136 if test "$mode" = uninstall; then
6137 if test -n "$library_names"; then
6138 # Do each command in the postuninstall commands.
6139 cmds=$postuninstall_cmds
6140 save_ifs="$IFS"; IFS='~'
6141 for cmd in $cmds; do
6142 IFS="$save_ifs"
6143 eval cmd=\"$cmd\"
6144 $show "$cmd"
6145 $run eval "$cmd"
6146 if test "$?" -ne 0 && test "$rmforce" != yes; then
6147 exit_status=1
6148 fi
6149 done
6150 IFS="$save_ifs"
6151 fi
6152
6153 if test -n "$old_library"; then
6154 # Do each command in the old_postuninstall commands.
6155 cmds=$old_postuninstall_cmds
6156 save_ifs="$IFS"; IFS='~'
6157 for cmd in $cmds; do
6158 IFS="$save_ifs"
6159 eval cmd=\"$cmd\"
6160 $show "$cmd"
6161 $run eval "$cmd"
6162 if test "$?" -ne 0 && test "$rmforce" != yes; then
6163 exit_status=1
6164 fi
6165 done
6166 IFS="$save_ifs"
6167 fi
6168 # FIXME: should reinstall the best remaining shared library.
6169 fi
6170 fi
6171 ;;
6172
6173 *.lo)
6174 # Possibly a libtool object, so verify it.
6175 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6176
6177 # Read the .lo file
6178 . $dir/$name
6179
6180 # Add PIC object to the list of files to remove.
6181 if test -n "$pic_object" \
6182 && test "$pic_object" != none; then
6183 rmfiles="$rmfiles $dir/$pic_object"
6184 fi
6185
6186 # Add non-PIC object to the list of files to remove.
6187 if test -n "$non_pic_object" \
6188 && test "$non_pic_object" != none; then
6189 rmfiles="$rmfiles $dir/$non_pic_object"
6190 fi
6191 fi
6192 ;;
6193
6194 *)
6195 if test "$mode" = clean ; then
6196 noexename=$name
6197 case $file in
6198 *.exe)
6199 file=`$echo $file|${SED} 's,.exe$,,'`
6200 noexename=`$echo $name|${SED} 's,.exe$,,'`
6201 # $file with .exe has already been added to rmfiles,
6202 # add $file without .exe
6203 rmfiles="$rmfiles $file"
6204 ;;
6205 esac
6206 # Do a test to see if this is a libtool program.
6207 if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6208 relink_command=
6209 . $dir/$noexename
6210
6211 # note $name still contains .exe if it was in $file originally
6212 # as does the version of $file that was added into $rmfiles
6213 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
6214 if test "$fast_install" = yes && test -n "$relink_command"; then
6215 rmfiles="$rmfiles $objdir/lt-$name"
6216 fi
6217 if test "X$noexename" != "X$name" ; then
6218 rmfiles="$rmfiles $objdir/lt-${noexename}.c"
6219 fi
6220 fi
6221 fi
6222 ;;
6223 esac
6224 $show "$rm $rmfiles"
6225 $run $rm $rmfiles || exit_status=1
6226 done
6227 objdir="$origobjdir"
6228
6229 # Try to remove the ${objdir}s in the directories where we deleted files
6230 for dir in $rmdirs; do
6231 if test -d "$dir"; then
6232 $show "rmdir $dir"
6233 $run rmdir $dir >/dev/null 2>&1
6234 fi
6235 done
6236
6237 exit $exit_status
6238 ;;
6239
6240 "")
6241 $echo "$modename: you must specify a MODE" 1>&2
6242 $echo "$generic_help" 1>&2
6243 exit 1
6244 ;;
6245 esac
6246
6247 if test -z "$exec_cmd"; then
6248 $echo "$modename: invalid operation mode \`$mode'" 1>&2
6249 $echo "$generic_help" 1>&2
6250 exit 1
6251 fi
6252 fi # test -z "$show_help"
6253
6254 if test -n "$exec_cmd"; then
6255 eval exec $exec_cmd
6256 exit 1
6257 fi
6258
6259 # We need to display help for each of the modes.
6260 case $mode in
6261 "") $echo \
6262 "Usage: $modename [OPTION]... [MODE-ARG]...
6263
6264 Provide generalized library-building support services.
6265
6266 --config show all configuration variables
6267 --debug enable verbose shell tracing
6268 -n, --dry-run display commands without modifying any files
6269 --features display basic configuration information and exit
6270 --finish same as \`--mode=finish'
6271 --help display this help message and exit
6272 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
6273 --quiet same as \`--silent'
6274 --silent don't print informational messages
6275 --tag=TAG use configuration variables from tag TAG
6276 --version print version information
6277
6278 MODE must be one of the following:
6279
6280 clean remove files from the build directory
6281 compile compile a source file into a libtool object
6282 execute automatically set library path, then run a program
6283 finish complete the installation of libtool libraries
6284 install install libraries or executables
6285 link create a library or an executable
6286 uninstall remove libraries from an installed directory
6287
6288 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
6289 a more detailed description of MODE.
6290
6291 Report bugs to <bug-libtool@gnu.org>."
6292 exit 0
6293 ;;
6294
6295 clean)
6296 $echo \
6297 "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6298
6299 Remove files from the build directory.
6300
6301 RM is the name of the program to use to delete files associated with each FILE
6302 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6303 to RM.
6304
6305 If FILE is a libtool library, object or program, all the files associated
6306 with it are deleted. Otherwise, only FILE itself is deleted using RM."
6307 ;;
6308
6309 compile)
6310 $echo \
6311 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6312
6313 Compile a source file into a libtool library object.
6314
6315 This mode accepts the following additional options:
6316
6317 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
6318 -prefer-pic try to building PIC objects only
6319 -prefer-non-pic try to building non-PIC objects only
6320 -static always build a \`.o' file suitable for static linking
6321
6322 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
6323 from the given SOURCEFILE.
6324
6325 The output file name is determined by removing the directory component from
6326 SOURCEFILE, then substituting the C source code suffix \`.c' with the
6327 library object suffix, \`.lo'."
6328 ;;
6329
6330 execute)
6331 $echo \
6332 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6333
6334 Automatically set library path, then run a program.
6335
6336 This mode accepts the following additional options:
6337
6338 -dlopen FILE add the directory containing FILE to the library path
6339
6340 This mode sets the library path environment variable according to \`-dlopen'
6341 flags.
6342
6343 If any of the ARGS are libtool executable wrappers, then they are translated
6344 into their corresponding uninstalled binary, and any of their required library
6345 directories are added to the library path.
6346
6347 Then, COMMAND is executed, with ARGS as arguments."
6348 ;;
6349
6350 finish)
6351 $echo \
6352 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6353
6354 Complete the installation of libtool libraries.
6355
6356 Each LIBDIR is a directory that contains libtool libraries.
6357
6358 The commands that this mode executes may require superuser privileges. Use
6359 the \`--dry-run' option if you just want to see what would be executed."
6360 ;;
6361
6362 install)
6363 $echo \
6364 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6365
6366 Install executables or libraries.
6367
6368 INSTALL-COMMAND is the installation command. The first component should be
6369 either the \`install' or \`cp' program.
6370
6371 The rest of the components are interpreted as arguments to that command (only
6372 BSD-compatible install options are recognized)."
6373 ;;
6374
6375 link)
6376 $echo \
6377 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6378
6379 Link object files or libraries together to form another library, or to
6380 create an executable program.
6381
6382 LINK-COMMAND is a command using the C compiler that you would use to create
6383 a program from several object files.
6384
6385 The following components of LINK-COMMAND are treated specially:
6386
6387 -all-static do not do any dynamic linking at all
6388 -avoid-version do not add a version suffix if possible
6389 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
6390 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
6391 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6392 -export-symbols SYMFILE
6393 try to export only the symbols listed in SYMFILE
6394 -export-symbols-regex REGEX
6395 try to export only the symbols matching REGEX
6396 -LLIBDIR search LIBDIR for required installed libraries
6397 -lNAME OUTPUT-FILE requires the installed library libNAME
6398 -module build a library that can dlopened
6399 -no-fast-install disable the fast-install mode
6400 -no-install link a not-installable executable
6401 -no-undefined declare that a library does not refer to external symbols
6402 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
6403 -objectlist FILE Use a list of object files found in FILE to specify objects
6404 -precious-files-regex REGEX
6405 don't remove output files matching REGEX
6406 -release RELEASE specify package release information
6407 -rpath LIBDIR the created library will eventually be installed in LIBDIR
6408 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
6409 -static do not do any dynamic linking of libtool libraries
6410 -version-info CURRENT[:REVISION[:AGE]]
6411 specify library version info [each variable defaults to 0]
6412
6413 All other options (arguments beginning with \`-') are ignored.
6414
6415 Every other argument is treated as a filename. Files ending in \`.la' are
6416 treated as uninstalled libtool libraries, other files are standard or library
6417 object files.
6418
6419 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6420 only library objects (\`.lo' files) may be specified, and \`-rpath' is
6421 required, except when creating a convenience library.
6422
6423 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6424 using \`ar' and \`ranlib', or on Windows using \`lib'.
6425
6426 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6427 is created, otherwise an executable program is created."
6428 ;;
6429
6430 uninstall)
6431 $echo \
6432 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6433
6434 Remove libraries from an installation directory.
6435
6436 RM is the name of the program to use to delete files associated with each FILE
6437 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6438 to RM.
6439
6440 If FILE is a libtool library, all the files associated with it are deleted.
6441 Otherwise, only FILE itself is deleted using RM."
6442 ;;
6443
6444 *)
6445 $echo "$modename: invalid operation mode \`$mode'" 1>&2
6446 $echo "$help" 1>&2
6447 exit 1
6448 ;;
6449 esac
6450
6451 $echo
6452 $echo "Try \`$modename --help' for more information about other modes."
6453
6454 exit 0
6455
6456 # The TAGs below are defined such that we never get into a situation
6457 # in which we disable both kinds of libraries. Given conflicting
6458 # choices, we go for a static library, that is the most portable,
6459 # since we can't tell whether shared libraries were disabled because
6460 # the user asked for that or because the platform doesn't support
6461 # them. This is particularly important on AIX, because we don't
6462 # support having both static and shared libraries enabled at the same
6463 # time on that platform, so we default to a shared-only configuration.
6464 # If a disable-shared tag is given, we'll fallback to a static-only
6465 # configuration. But we'll never go from static-only to shared-only.
6466
6467 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
6468 build_libtool_libs=no
6469 build_old_libs=yes
6470 # ### END LIBTOOL TAG CONFIG: disable-shared
6471
6472 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
6473 build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
6474 # ### END LIBTOOL TAG CONFIG: disable-static
6475
6476 # Local Variables:
6477 # mode:shell-script
6478 # sh-indentation:2
6479 # End:

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.20