Expand PMF_FN_* macros.
[netbsd-mini2440.git] / external / bsd / openldap / dist / build / ltmain.sh
blobf9ee8ff805c53a908305beb6569e6a626706e8d9
1 # ltmain.sh - Provide generalized library-building support services.
2 # NOTE: Changing this file will not affect anything until you rerun configure.
4 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
5 # Free Software Foundation, Inc.
6 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
8 # This program is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
13 # This program is distributed in the hope that it will be useful, but
14 # WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 # General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 # As a special exception to the GNU General Public License, if you
23 # distribute this file as part of a program that contains a
24 # configuration script generated by Autoconf, you may include it under
25 # the same distribution terms that you use for the rest of that program.
27 # This file is distributed with OpenLDAP Software, which contains a
28 # configuration script generated by Autoconf, and is distributable
29 # under the same distributions terms as OpenLDAP itself.
31 ## Portions Copyright 1998-2008 The OpenLDAP Foundation.
32 ## All rights reserved.
34 ## Redistribution and use in source and binary forms, with or without
35 ## modification, are permitted only as authorized by the OpenLDAP
36 ## Public License.
38 ## A copy of this license is available in the file LICENSE in the
39 ## top-level directory of the distribution or, alternatively, at
40 ## <http://www.OpenLDAP.org/license.html>.
42 basename="s,^.*/,,g"
44 # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
45 # is ksh but when the shell is invoked as "sh" and the current value of
46 # the _XPG environment variable is not equal to 1 (one), the special
47 # positional parameter $0, within a function call, is the name of the
48 # function.
49 progpath="$0"
51 # The name of this program:
52 progname=`echo "$progpath" | $SED $basename`
53 modename="$progname"
55 # Global variables:
56 EXIT_SUCCESS=0
57 EXIT_FAILURE=1
59 PROGRAM=ltmain.sh
60 PACKAGE=libtool
61 VERSION=1.5.22-OpenLDAP
62 TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
64 # See if we are running on zsh, and set the options which allow our
65 # commands through without removal of \ escapes.
66 if test -n "${ZSH_VERSION+set}" ; then
67 setopt NO_GLOB_SUBST
70 # Check that we have a working $echo.
71 if test "X$1" = X--no-reexec; then
72 # Discard the --no-reexec flag, and continue.
73 shift
74 elif test "X$1" = X--fallback-echo; then
75 # Avoid inline document here, it may be left over
77 elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
78 # Yippee, $echo works!
80 else
81 # Restart under the correct shell, and then maybe $echo will work.
82 exec $SHELL "$progpath" --no-reexec ${1+"$@"}
85 if test "X$1" = X--fallback-echo; then
86 # used as fallback echo
87 shift
88 cat <<EOF
90 EOF
91 exit $EXIT_SUCCESS
94 default_mode=
95 help="Try \`$progname --help' for more information."
96 magic="%%%MAGIC variable%%%"
97 mkdir="mkdir"
98 mv="mv -f"
99 rm="rm -f"
101 # Sed substitution that helps us do robust quoting. It backslashifies
102 # metacharacters that are still active within double-quoted strings.
103 Xsed="${SED}"' -e 1s/^X//'
104 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
105 # test EBCDIC or ASCII
106 case `echo X|tr X '\101'` in
107 A) # ASCII based system
108 # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
109 SP2NL='tr \040 \012'
110 NL2SP='tr \015\012 \040\040'
112 *) # EBCDIC based system
113 SP2NL='tr \100 \n'
114 NL2SP='tr \r\n \100\100'
116 esac
118 # NLS nuisances.
119 # Only set LANG and LC_ALL to C if already set.
120 # These must not be set unconditionally because not all systems understand
121 # e.g. LANG=C (notably SCO).
122 # We save the old values to restore during execute mode.
123 if test "${LC_ALL+set}" = set; then
124 save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
126 if test "${LANG+set}" = set; then
127 save_LANG="$LANG"; LANG=C; export LANG
130 # Make sure IFS has a sensible default
131 lt_nl='
133 IFS=" $lt_nl"
135 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
136 $echo "$modename: not configured to build any kind of library" 1>&2
137 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
138 exit $EXIT_FAILURE
141 # Global variables.
142 mode=$default_mode
143 nonopt=
144 prev=
145 prevopt=
146 run=
147 show="$echo"
148 show_help=
149 execute_dlfiles=
150 duplicate_deps=no
151 preserve_args=
152 lo2o="s/\\.lo\$/.${objext}/"
153 o2lo="s/\\.${objext}\$/.lo/"
155 #####################################
156 # Shell function definitions:
157 # This seems to be the best place for them
159 # func_mktempdir [string]
160 # Make a temporary directory that won't clash with other running
161 # libtool processes, and avoids race conditions if possible. If
162 # given, STRING is the basename for that directory.
163 func_mktempdir ()
165 my_template="${TMPDIR-/tmp}/${1-$progname}"
167 if test "$run" = ":"; then
168 # Return a directory name, but don't create it in dry-run mode
169 my_tmpdir="${my_template}-$$"
170 else
172 # If mktemp works, use that first and foremost
173 my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
175 if test ! -d "$my_tmpdir"; then
176 # Failing that, at least try and use $RANDOM to avoid a race
177 my_tmpdir="${my_template}-${RANDOM-0}$$"
179 save_mktempdir_umask=`umask`
180 umask 0077
181 $mkdir "$my_tmpdir"
182 umask $save_mktempdir_umask
185 # If we're not in dry-run mode, bomb out on failure
186 test -d "$my_tmpdir" || {
187 $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
188 exit $EXIT_FAILURE
192 $echo "X$my_tmpdir" | $Xsed
196 # func_win32_libid arg
197 # return the library type of file 'arg'
199 # Need a lot of goo to handle *both* DLLs and import libs
200 # Has to be a shell function in order to 'eat' the argument
201 # that is supplied when $file_magic_command is called.
202 func_win32_libid ()
204 win32_libid_type="unknown"
205 win32_fileres=`file -L $1 2>/dev/null`
206 case $win32_fileres in
207 *ar\ archive\ import\ library*) # definitely import
208 win32_libid_type="x86 archive import"
210 *ar\ archive*) # could be an import, or static
211 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
212 $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
213 win32_nmres=`eval $NM -f posix -A $1 | \
214 $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
215 case $win32_nmres in
216 import*) win32_libid_type="x86 archive import";;
217 *) win32_libid_type="x86 archive static";;
218 esac
221 *DLL*)
222 win32_libid_type="x86 DLL"
224 *executable*) # but shell scripts are "executable" too...
225 case $win32_fileres in
226 *MS\ Windows\ PE\ Intel*)
227 win32_libid_type="x86 DLL"
229 esac
231 esac
232 $echo $win32_libid_type
236 # func_infer_tag arg
237 # Infer tagged configuration to use if any are available and
238 # if one wasn't chosen via the "--tag" command line option.
239 # Only attempt this if the compiler in the base compile
240 # command doesn't match the default compiler.
241 # arg is usually of the form 'gcc ...'
242 func_infer_tag ()
244 # FreeBSD-specific: where we install compilers with non-standard names
245 tag_compilers_CC="*cc cc* *gcc gcc*"
246 tag_compilers_CXX="*c++ c++* *g++ g++*"
247 base_compiler=`set -- "$@"; echo $1`
249 # If $tagname isn't set, then try to infer if the default "CC" tag applies
250 if test -z "$tagname"; then
251 for zp in $tag_compilers_CC; do
252 case $base_compiler in
253 $zp) tagname="CC"; break;;
254 esac
255 done
258 if test -n "$available_tags" && test -z "$tagname"; then
259 CC_quoted=
260 for arg in $CC; do
261 case $arg in
262 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
263 arg="\"$arg\""
265 esac
266 CC_quoted="$CC_quoted $arg"
267 done
268 case $@ in
269 # Blanks in the command may have been stripped by the calling shell,
270 # but not from the CC environment variable when configure was run.
271 " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
272 # Blanks at the start of $base_compile will cause this to fail
273 # if we don't check for them as well.
275 for z in $available_tags; do
276 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
277 # Evaluate the configuration.
278 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
279 CC_quoted=
280 for arg in $CC; do
281 # Double-quote args containing other shell metacharacters.
282 case $arg in
283 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
284 arg="\"$arg\""
286 esac
287 CC_quoted="$CC_quoted $arg"
288 done
289 case "$@ " in
290 " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
291 # The compiler in the base compile command matches
292 # the one in the tagged configuration.
293 # Assume this is the tagged configuration we want.
294 tagname=$z
295 break
297 esac
299 # FreeBSD-specific: try compilers based on inferred tag
300 if test -z "$tagname"; then
301 eval "tag_compilers=\$tag_compilers_${z}"
302 if test -n "$tag_compilers"; then
303 for zp in $tag_compilers; do
304 case $base_compiler in
305 $zp) tagname=$z; break;;
306 esac
307 done
308 if test -n "$tagname"; then
309 break
314 done
315 # If $tagname still isn't set, then no tagged configuration
316 # was found and let the user know that the "--tag" command
317 # line option must be used.
318 if test -z "$tagname"; then
319 $echo "$modename: unable to infer tagged configuration"
320 $echo "$modename: specify a tag with \`--tag'" 1>&2
321 exit $EXIT_FAILURE
322 # else
323 # $echo "$modename: using $tagname tagged configuration"
326 esac
331 # func_extract_an_archive dir oldlib
332 func_extract_an_archive ()
334 f_ex_an_ar_dir="$1"; shift
335 f_ex_an_ar_oldlib="$1"
337 $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
338 $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
339 if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
341 else
342 $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
343 exit $EXIT_FAILURE
347 # func_extract_archives gentop oldlib ...
348 func_extract_archives ()
350 my_gentop="$1"; shift
351 my_oldlibs=${1+"$@"}
352 my_oldobjs=""
353 my_xlib=""
354 my_xabs=""
355 my_xdir=""
356 my_status=""
358 $show "${rm}r $my_gentop"
359 $run ${rm}r "$my_gentop"
360 $show "$mkdir $my_gentop"
361 $run $mkdir "$my_gentop"
362 my_status=$?
363 if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
364 exit $my_status
367 for my_xlib in $my_oldlibs; do
368 # Extract the objects.
369 case $my_xlib in
370 [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
371 *) my_xabs=`pwd`"/$my_xlib" ;;
372 esac
373 my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
374 my_xdir="$my_gentop/$my_xlib"
376 $show "${rm}r $my_xdir"
377 $run ${rm}r "$my_xdir"
378 $show "$mkdir $my_xdir"
379 $run $mkdir "$my_xdir"
380 exit_status=$?
381 if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
382 exit $exit_status
384 case $host in
385 *-darwin*)
386 $show "Extracting $my_xabs"
387 # Do not bother doing anything if just a dry run
388 if test -z "$run"; then
389 darwin_orig_dir=`pwd`
390 cd $my_xdir || exit $?
391 darwin_archive=$my_xabs
392 darwin_curdir=`pwd`
393 darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
394 darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
395 if test -n "$darwin_arches"; then
396 darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
397 darwin_arch=
398 $show "$darwin_base_archive has multiple architectures $darwin_arches"
399 for darwin_arch in $darwin_arches ; do
400 mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
401 lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
402 cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
403 func_extract_an_archive "`pwd`" "${darwin_base_archive}"
404 cd "$darwin_curdir"
405 $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
406 done # $darwin_arches
407 ## Okay now we have a bunch of thin objects, gotta fatten them up :)
408 darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
409 darwin_file=
410 darwin_files=
411 for darwin_file in $darwin_filelist; do
412 darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
413 lipo -create -output "$darwin_file" $darwin_files
414 done # $darwin_filelist
415 ${rm}r unfat-$$
416 cd "$darwin_orig_dir"
417 else
418 cd "$darwin_orig_dir"
419 func_extract_an_archive "$my_xdir" "$my_xabs"
420 fi # $darwin_arches
421 fi # $run
424 func_extract_an_archive "$my_xdir" "$my_xabs"
426 esac
427 my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
428 done
429 func_extract_archives_result="$my_oldobjs"
431 # End of Shell function definitions
432 #####################################
434 # Darwin sucks
435 eval std_shrext=\"$shrext_cmds\"
437 disable_libs=no
439 # Parse our command line options once, thoroughly.
440 while test "$#" -gt 0
442 arg="$1"
443 shift
445 case $arg in
446 -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
447 *) optarg= ;;
448 esac
450 # If the previous option needs an argument, assign it.
451 if test -n "$prev"; then
452 case $prev in
453 execute_dlfiles)
454 execute_dlfiles="$execute_dlfiles $arg"
456 tag)
457 tagname="$arg"
458 preserve_args="${preserve_args}=$arg"
460 # Check whether tagname contains only valid characters
461 case $tagname in
462 *[!-_A-Za-z0-9,/]*)
463 $echo "$progname: invalid tag name: $tagname" 1>&2
464 exit $EXIT_FAILURE
466 esac
468 case $tagname in
470 # Don't test for the "default" C tag, as we know, it's there, but
471 # not specially marked.
474 if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
475 taglist="$taglist $tagname"
476 # Evaluate the configuration.
477 eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
478 else
479 $echo "$progname: ignoring unknown tag $tagname" 1>&2
482 esac
485 eval "$prev=\$arg"
487 esac
489 prev=
490 prevopt=
491 continue
494 # Have we seen a non-optional argument yet?
495 case $arg in
496 --help)
497 show_help=yes
500 --version)
501 $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
502 $echo
503 $echo "Copyright (C) 2005 Free Software Foundation, Inc."
504 $echo "This is free software; see the source for copying conditions. There is NO"
505 $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
506 exit $?
509 --config)
510 ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
511 # Now print the configurations for the tags.
512 for tagname in $taglist; do
513 ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
514 done
515 exit $?
518 --debug)
519 $echo "$progname: enabling shell trace mode"
520 set -x
521 preserve_args="$preserve_args $arg"
524 --dry-run | -n)
525 run=:
528 --features)
529 $echo "host: $host"
530 if test "$build_libtool_libs" = yes; then
531 $echo "enable shared libraries"
532 else
533 $echo "disable shared libraries"
535 if test "$build_old_libs" = yes; then
536 $echo "enable static libraries"
537 else
538 $echo "disable static libraries"
540 exit $?
543 --finish) mode="finish" ;;
545 --mode) prevopt="--mode" prev=mode ;;
546 --mode=*) mode="$optarg" ;;
548 --preserve-dup-deps) duplicate_deps="yes" ;;
550 --quiet | --silent)
551 show=:
552 preserve_args="$preserve_args $arg"
555 --tag)
556 prevopt="--tag"
557 prev=tag
558 preserve_args="$preserve_args --tag"
560 --tag=*)
561 set tag "$optarg" ${1+"$@"}
562 shift
563 prev=tag
564 preserve_args="$preserve_args --tag"
567 -dlopen)
568 prevopt="-dlopen"
569 prev=execute_dlfiles
573 $echo "$modename: unrecognized option \`$arg'" 1>&2
574 $echo "$help" 1>&2
575 exit $EXIT_FAILURE
579 nonopt="$arg"
580 break
582 esac
583 done
585 if test -n "$prevopt"; then
586 $echo "$modename: option \`$prevopt' requires an argument" 1>&2
587 $echo "$help" 1>&2
588 exit $EXIT_FAILURE
591 case $disable_libs in
592 no)
594 shared)
595 build_libtool_libs=no
596 build_old_libs=yes
598 static)
599 build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
601 esac
603 # If this variable is set in any of the actions, the command in it
604 # will be execed at the end. This prevents here-documents from being
605 # left over by shells.
606 exec_cmd=
608 if test -z "$show_help"; then
610 # Infer the operation mode.
611 if test -z "$mode"; then
612 $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
613 $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
614 case $nonopt in
615 *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
616 mode=link
617 for arg
619 case $arg in
621 mode=compile
622 break
624 esac
625 done
627 *db | *dbx | *strace | *truss)
628 mode=execute
630 *install*|cp|mv)
631 mode=install
633 *rm)
634 mode=uninstall
637 # If we have no mode, but dlfiles were specified, then do execute mode.
638 test -n "$execute_dlfiles" && mode=execute
640 # Just use the default operation mode.
641 if test -z "$mode"; then
642 if test -n "$nonopt"; then
643 $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
644 else
645 $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
649 esac
652 # Only execute mode is allowed to have -dlopen flags.
653 if test -n "$execute_dlfiles" && test "$mode" != execute; then
654 $echo "$modename: unrecognized option \`-dlopen'" 1>&2
655 $echo "$help" 1>&2
656 exit $EXIT_FAILURE
659 # Change the help message to a mode-specific one.
660 generic_help="$help"
661 help="Try \`$modename --help --mode=$mode' for more information."
663 # These modes are in order of execution frequency so that they run quickly.
664 case $mode in
665 # libtool compile mode
666 compile)
667 modename="$modename: compile"
668 # Get the compilation command and the source file.
669 base_compile=
670 srcfile="$nonopt" # always keep a non-empty value in "srcfile"
671 suppress_opt=yes
672 suppress_output=
673 arg_mode=normal
674 libobj=
675 later=
677 for arg
679 case $arg_mode in
680 arg )
681 # do not "continue". Instead, add this to base_compile
682 lastarg="$arg"
683 arg_mode=normal
686 target )
687 libobj="$arg"
688 arg_mode=normal
689 continue
692 normal )
693 # Accept any command-line options.
694 case $arg in
696 if test -n "$libobj" ; then
697 $echo "$modename: you cannot specify \`-o' more than once" 1>&2
698 exit $EXIT_FAILURE
700 arg_mode=target
701 continue
704 -static | -prefer-pic | -prefer-non-pic)
705 later="$later $arg"
706 continue
709 -no-suppress)
710 suppress_opt=no
711 continue
714 -Xcompiler)
715 arg_mode=arg # the next one goes into the "base_compile" arg list
716 continue # The current "srcfile" will either be retained or
717 ;; # replaced later. I would guess that would be a bug.
719 -Wc,*)
720 args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
721 lastarg=
722 save_ifs="$IFS"; IFS=','
723 for arg in $args; do
724 IFS="$save_ifs"
726 # Double-quote args containing other shell metacharacters.
727 # Many Bourne shells cannot handle close brackets correctly
728 # in scan sets, so we specify it separately.
729 case $arg in
730 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
731 arg="\"$arg\""
733 esac
734 lastarg="$lastarg $arg"
735 done
736 IFS="$save_ifs"
737 lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
739 # Add the arguments to base_compile.
740 base_compile="$base_compile $lastarg"
741 continue
745 # Accept the current argument as the source file.
746 # The previous "srcfile" becomes the current argument.
748 lastarg="$srcfile"
749 srcfile="$arg"
751 esac # case $arg
753 esac # case $arg_mode
755 # Aesthetically quote the previous argument.
756 lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
758 case $lastarg in
759 # Double-quote args containing other shell metacharacters.
760 # Many Bourne shells cannot handle close brackets correctly
761 # in scan sets, and some SunOS ksh mistreat backslash-escaping
762 # in scan sets (worked around with variable expansion),
763 # and furthermore cannot handle '|' '&' '(' ')' in scan sets
764 # at all, so we specify them separately.
765 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
766 lastarg="\"$lastarg\""
768 esac
770 base_compile="$base_compile $lastarg"
771 done # for arg
773 case $arg_mode in
774 arg)
775 $echo "$modename: you must specify an argument for -Xcompile"
776 exit $EXIT_FAILURE
778 target)
779 $echo "$modename: you must specify a target with \`-o'" 1>&2
780 exit $EXIT_FAILURE
783 # Get the name of the library object.
784 [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
786 esac
788 # Recognize several different file suffixes.
789 # If the user specifies -o file.o, it is replaced with file.lo
790 xform='[cCFSifmso]'
791 case $libobj in
792 *.ada) xform=ada ;;
793 *.adb) xform=adb ;;
794 *.ads) xform=ads ;;
795 *.asm) xform=asm ;;
796 *.c++) xform=c++ ;;
797 *.cc) xform=cc ;;
798 *.ii) xform=ii ;;
799 *.class) xform=class ;;
800 *.cpp) xform=cpp ;;
801 *.cxx) xform=cxx ;;
802 *.f90) xform=f90 ;;
803 *.for) xform=for ;;
804 *.java) xform=java ;;
805 esac
807 libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
809 case $libobj in
810 *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
812 $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
813 exit $EXIT_FAILURE
815 esac
817 func_infer_tag $base_compile
819 for arg in $later; do
820 case $arg in
821 -static)
822 build_old_libs=yes
823 continue
826 -prefer-pic)
827 pic_mode=yes
828 continue
831 -prefer-non-pic)
832 pic_mode=no
833 continue
835 esac
836 done
838 qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
839 case $qlibobj in
840 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
841 qlibobj="\"$qlibobj\"" ;;
842 esac
843 test "X$libobj" != "X$qlibobj" \
844 && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
845 && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
846 objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
847 xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
848 if test "X$xdir" = "X$obj"; then
849 xdir=
850 else
851 xdir=$xdir/
853 lobj=${xdir}$objdir/$objname
855 if test -z "$base_compile"; then
856 $echo "$modename: you must specify a compilation command" 1>&2
857 $echo "$help" 1>&2
858 exit $EXIT_FAILURE
861 # Delete any leftover library objects.
862 if test "$build_old_libs" = yes; then
863 removelist="$obj $lobj $libobj ${libobj}T"
864 else
865 removelist="$lobj $libobj ${libobj}T"
868 $run $rm $removelist
869 trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
871 # On Cygwin there's no "real" PIC flag so we must build both object types
872 case $host_os in
873 cygwin* | mingw* | pw32* | os2*)
874 pic_mode=default
876 esac
877 if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
878 # non-PIC code in shared libraries is not supported
879 pic_mode=default
882 # Calculate the filename of the output object if compiler does
883 # not support -o with -c
884 if test "$compiler_c_o" = no; then
885 output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
886 lockfile="$output_obj.lock"
887 removelist="$removelist $output_obj $lockfile"
888 trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
889 else
890 output_obj=
891 need_locks=no
892 lockfile=
895 # Lock this critical section if it is needed
896 # We use this script file to make the link, it avoids creating a new file
897 if test "$need_locks" = yes; then
898 until $run ln "$progpath" "$lockfile" 2>/dev/null; do
899 $show "Waiting for $lockfile to be removed"
900 sleep 2
901 done
902 elif test "$need_locks" = warn; then
903 if test -f "$lockfile"; then
904 $echo "\
905 *** ERROR, $lockfile exists and contains:
906 `cat $lockfile 2>/dev/null`
908 This indicates that another process is trying to use the same
909 temporary object file, and libtool could not work around it because
910 your compiler does not support \`-c' and \`-o' together. If you
911 repeat this compilation, it may succeed, by chance, but you had better
912 avoid parallel builds (make -j) in this platform, or get a better
913 compiler."
915 $run $rm $removelist
916 exit $EXIT_FAILURE
918 $echo "$srcfile" > "$lockfile"
921 if test -n "$fix_srcfile_path"; then
922 eval srcfile=\"$fix_srcfile_path\"
924 qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
925 case $qsrcfile in
926 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
927 qsrcfile="\"$qsrcfile\"" ;;
928 esac
930 $run $rm "$libobj" "${libobj}T"
932 # Create a libtool object file (analogous to a ".la" file),
933 # but don't create it if we're doing a dry run.
934 test -z "$run" && cat > ${libobj}T <<EOF
935 # $libobj - a libtool object file
936 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
938 # Please DO NOT delete this file!
939 # It is necessary for linking the library.
941 # Name of the PIC object.
944 # Only build a PIC object if we are building libtool libraries.
945 if test "$build_libtool_libs" = yes; then
946 # Without this assignment, base_compile gets emptied.
947 fbsd_hideous_sh_bug=$base_compile
949 if test "$pic_mode" != no; then
950 command="$base_compile $qsrcfile $pic_flag"
951 else
952 # Don't build PIC code
953 command="$base_compile $qsrcfile"
956 if test ! -d "${xdir}$objdir"; then
957 $show "$mkdir ${xdir}$objdir"
958 $run $mkdir ${xdir}$objdir
959 exit_status=$?
960 if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
961 exit $exit_status
965 if test -z "$output_obj"; then
966 # Place PIC objects in $objdir
967 command="$command -o $lobj"
970 $run $rm "$lobj" "$output_obj"
972 $show "$command"
973 if $run eval "$command"; then :
974 else
975 test -n "$output_obj" && $run $rm $removelist
976 exit $EXIT_FAILURE
979 if test "$need_locks" = warn &&
980 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
981 $echo "\
982 *** ERROR, $lockfile contains:
983 `cat $lockfile 2>/dev/null`
985 but it should contain:
986 $srcfile
988 This indicates that another process is trying to use the same
989 temporary object file, and libtool could not work around it because
990 your compiler does not support \`-c' and \`-o' together. If you
991 repeat this compilation, it may succeed, by chance, but you had better
992 avoid parallel builds (make -j) in this platform, or get a better
993 compiler."
995 $run $rm $removelist
996 exit $EXIT_FAILURE
999 # Just move the object if needed, then go on to compile the next one
1000 if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1001 $show "$mv $output_obj $lobj"
1002 if $run $mv $output_obj $lobj; then :
1003 else
1004 error=$?
1005 $run $rm $removelist
1006 exit $error
1010 # Append the name of the PIC object to the libtool object file.
1011 test -z "$run" && cat >> ${libobj}T <<EOF
1012 pic_object='$objdir/$objname'
1016 # Allow error messages only from the first compilation.
1017 if test "$suppress_opt" = yes; then
1018 suppress_output=' >/dev/null 2>&1'
1020 else
1021 # No PIC object so indicate it doesn't exist in the libtool
1022 # object file.
1023 test -z "$run" && cat >> ${libobj}T <<EOF
1024 pic_object=none
1029 # Only build a position-dependent object if we build old libraries.
1030 if test "$build_old_libs" = yes; then
1031 if test "$pic_mode" != yes; then
1032 # Don't build PIC code
1033 command="$base_compile $qsrcfile"
1034 else
1035 command="$base_compile $qsrcfile $pic_flag"
1037 if test "$compiler_c_o" = yes; then
1038 command="$command -o $obj"
1041 # Suppress compiler output if we already did a PIC compilation.
1042 command="$command$suppress_output"
1043 $run $rm "$obj" "$output_obj"
1044 $show "$command"
1045 if $run eval "$command"; then :
1046 else
1047 $run $rm $removelist
1048 exit $EXIT_FAILURE
1051 if test "$need_locks" = warn &&
1052 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1053 $echo "\
1054 *** ERROR, $lockfile contains:
1055 `cat $lockfile 2>/dev/null`
1057 but it should contain:
1058 $srcfile
1060 This indicates that another process is trying to use the same
1061 temporary object file, and libtool could not work around it because
1062 your compiler does not support \`-c' and \`-o' together. If you
1063 repeat this compilation, it may succeed, by chance, but you had better
1064 avoid parallel builds (make -j) in this platform, or get a better
1065 compiler."
1067 $run $rm $removelist
1068 exit $EXIT_FAILURE
1071 # Just move the object if needed
1072 if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1073 $show "$mv $output_obj $obj"
1074 if $run $mv $output_obj $obj; then :
1075 else
1076 error=$?
1077 $run $rm $removelist
1078 exit $error
1082 # Append the name of the non-PIC object the libtool object file.
1083 # Only append if the libtool object file exists.
1084 test -z "$run" && cat >> ${libobj}T <<EOF
1085 # Name of the non-PIC object.
1086 non_pic_object='$objname'
1089 else
1090 # Append the name of the non-PIC object the libtool object file.
1091 # Only append if the libtool object file exists.
1092 test -z "$run" && cat >> ${libobj}T <<EOF
1093 # Name of the non-PIC object.
1094 non_pic_object=none
1099 $run $mv "${libobj}T" "${libobj}"
1101 # Unlock the critical section if it was locked
1102 if test "$need_locks" != no; then
1103 $run $rm "$lockfile"
1106 exit $EXIT_SUCCESS
1109 # libtool link mode
1110 link | relink)
1111 modename="$modename: link"
1112 case $host in
1113 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1114 # It is impossible to link a dll without this setting, and
1115 # we shouldn't force the makefile maintainer to figure out
1116 # which system we are compiling for in order to pass an extra
1117 # flag for every libtool invocation.
1118 # allow_undefined=no
1120 # FIXME: Unfortunately, there are problems with the above when trying
1121 # to make a dll which has undefined symbols, in which case not
1122 # even a static library is built. For now, we need to specify
1123 # -no-undefined on the libtool link line when we can be certain
1124 # that all symbols are satisfied, otherwise we get a static library.
1125 allow_undefined=yes
1128 allow_undefined=yes
1130 esac
1131 libtool_args="$nonopt"
1132 base_compile="$nonopt $@"
1133 compile_command="$nonopt"
1134 finalize_command="$nonopt"
1136 compile_rpath=
1137 finalize_rpath=
1138 compile_shlibpath=
1139 finalize_shlibpath=
1140 convenience=
1141 old_convenience=
1142 deplibs=
1143 old_deplibs=
1144 compiler_flags=
1145 linker_flags=
1146 dllsearchpath=
1147 lib_search_path=`pwd`
1148 inst_prefix_dir=
1150 avoid_version=no
1151 dlfiles=
1152 dlprefiles=
1153 dlself=no
1154 export_dynamic=no
1155 export_symbols=
1156 export_symbols_regex=
1157 generated=
1158 libobjs=
1159 ltlibs=
1160 module=no
1161 no_install=no
1162 objs=
1163 non_pic_objects=
1164 notinst_path= # paths that contain not-installed libtool libraries
1165 precious_files_regex=
1166 prefer_static_libs=no
1167 preload=no
1168 prev=
1169 prevarg=
1170 release=
1171 rpath=
1172 xrpath=
1173 perm_rpath=
1174 temp_rpath=
1175 thread_safe=no
1176 vinfo=
1177 vinfo_number=no
1179 func_infer_tag $base_compile
1181 # We need to know -static, to get the right output filenames.
1182 for arg
1184 case $arg in
1185 -all-static | -static)
1186 if test "X$arg" = "X-all-static"; then
1187 if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1188 $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
1190 if test -n "$link_static_flag"; then
1191 dlopen_self=$dlopen_self_static
1193 prefer_static_libs=yes
1194 else
1195 if test -z "$pic_flag" && test -n "$link_static_flag"; then
1196 dlopen_self=$dlopen_self_static
1198 prefer_static_libs=built
1200 build_libtool_libs=no
1201 build_old_libs=yes
1202 break
1204 esac
1205 done
1207 # See if our shared archives depend on static archives.
1208 test -n "$old_archive_from_new_cmds" && build_old_libs=yes
1210 # Go through the arguments, transforming them on the way.
1211 while test "$#" -gt 0; do
1212 arg="$1"
1213 shift
1214 case $arg in
1215 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1216 qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1218 *) qarg=$arg ;;
1219 esac
1220 libtool_args="$libtool_args $qarg"
1222 # If the previous option needs an argument, assign it.
1223 if test -n "$prev"; then
1224 case $prev in
1225 output)
1226 compile_command="$compile_command @OUTPUT@"
1227 finalize_command="$finalize_command @OUTPUT@"
1229 esac
1231 case $prev in
1232 dlfiles|dlprefiles)
1233 if test "$preload" = no; then
1234 # Add the symbol object into the linking commands.
1235 compile_command="$compile_command @SYMFILE@"
1236 finalize_command="$finalize_command @SYMFILE@"
1237 preload=yes
1239 case $arg in
1240 *.la | *.lo) ;; # We handle these cases below.
1241 force)
1242 if test "$dlself" = no; then
1243 dlself=needless
1244 export_dynamic=yes
1246 prev=
1247 continue
1249 self)
1250 if test "$prev" = dlprefiles; then
1251 dlself=yes
1252 elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1253 dlself=yes
1254 else
1255 dlself=needless
1256 export_dynamic=yes
1258 prev=
1259 continue
1262 if test "$prev" = dlfiles; then
1263 dlfiles="$dlfiles $arg"
1264 else
1265 dlprefiles="$dlprefiles $arg"
1267 prev=
1268 continue
1270 esac
1272 expsyms)
1273 export_symbols="$arg"
1274 if test ! -f "$arg"; then
1275 $echo "$modename: symbol file \`$arg' does not exist"
1276 exit $EXIT_FAILURE
1278 prev=
1279 continue
1281 expsyms_regex)
1282 export_symbols_regex="$arg"
1283 prev=
1284 continue
1286 inst_prefix)
1287 inst_prefix_dir="$arg"
1288 prev=
1289 continue
1291 precious_regex)
1292 precious_files_regex="$arg"
1293 prev=
1294 continue
1296 release)
1297 release="-$arg"
1298 prev=
1299 continue
1301 objectlist)
1302 if test -f "$arg"; then
1303 save_arg=$arg
1304 moreargs=
1305 for fil in `cat $save_arg`
1307 # moreargs="$moreargs $fil"
1308 arg=$fil
1309 # A libtool-controlled object.
1311 # Check to see that this really is a libtool object.
1312 if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1313 pic_object=
1314 non_pic_object=
1316 # Read the .lo file
1317 # If there is no directory component, then add one.
1318 case $arg in
1319 */* | *\\*) . $arg ;;
1320 *) . ./$arg ;;
1321 esac
1323 if test -z "$pic_object" || \
1324 test -z "$non_pic_object" ||
1325 test "$pic_object" = none && \
1326 test "$non_pic_object" = none; then
1327 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1328 exit $EXIT_FAILURE
1331 # Extract subdirectory from the argument.
1332 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1333 if test "X$xdir" = "X$arg"; then
1334 xdir=
1335 else
1336 xdir="$xdir/"
1339 if test "$pic_object" != none; then
1340 # Prepend the subdirectory the object is found in.
1341 pic_object="$xdir$pic_object"
1343 if test "$prev" = dlfiles; then
1344 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1345 dlfiles="$dlfiles $pic_object"
1346 prev=
1347 continue
1348 else
1349 # If libtool objects are unsupported, then we need to preload.
1350 prev=dlprefiles
1354 # CHECK ME: I think I busted this. -Ossama
1355 if test "$prev" = dlprefiles; then
1356 # Preload the old-style object.
1357 dlprefiles="$dlprefiles $pic_object"
1358 prev=
1361 # A PIC object.
1362 libobjs="$libobjs $pic_object"
1363 arg="$pic_object"
1366 # Non-PIC object.
1367 if test "$non_pic_object" != none; then
1368 # Prepend the subdirectory the object is found in.
1369 non_pic_object="$xdir$non_pic_object"
1371 # A standard non-PIC object
1372 non_pic_objects="$non_pic_objects $non_pic_object"
1373 if test -z "$pic_object" || test "$pic_object" = none ; then
1374 arg="$non_pic_object"
1376 else
1377 # If the PIC object exists, use it instead.
1378 # $xdir was prepended to $pic_object above.
1379 non_pic_object="$pic_object"
1380 non_pic_objects="$non_pic_objects $non_pic_object"
1382 else
1383 # Only an error if not doing a dry-run.
1384 if test -z "$run"; then
1385 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1386 exit $EXIT_FAILURE
1387 else
1388 # Dry-run case.
1390 # Extract subdirectory from the argument.
1391 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1392 if test "X$xdir" = "X$arg"; then
1393 xdir=
1394 else
1395 xdir="$xdir/"
1398 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1399 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1400 libobjs="$libobjs $pic_object"
1401 non_pic_objects="$non_pic_objects $non_pic_object"
1404 done
1405 else
1406 $echo "$modename: link input file \`$save_arg' does not exist"
1407 exit $EXIT_FAILURE
1409 arg=$save_arg
1410 prev=
1411 continue
1413 rpath | xrpath)
1414 # We need an absolute path.
1415 case $arg in
1416 [\\/]* | [A-Za-z]:[\\/]*) ;;
1418 $echo "$modename: only absolute run-paths are allowed" 1>&2
1419 exit $EXIT_FAILURE
1421 esac
1422 if test "$prev" = rpath; then
1423 case "$rpath " in
1424 *" $arg "*) ;;
1425 *) rpath="$rpath $arg" ;;
1426 esac
1427 else
1428 case "$xrpath " in
1429 *" $arg "*) ;;
1430 *) xrpath="$xrpath $arg" ;;
1431 esac
1433 prev=
1434 continue
1436 xcompiler)
1437 compiler_flags="$compiler_flags $qarg"
1438 prev=
1439 compile_command="$compile_command $qarg"
1440 finalize_command="$finalize_command $qarg"
1441 continue
1443 xlinker)
1444 linker_flags="$linker_flags $qarg"
1445 compiler_flags="$compiler_flags $wl$qarg"
1446 prev=
1447 compile_command="$compile_command $wl$qarg"
1448 finalize_command="$finalize_command $wl$qarg"
1449 continue
1451 xcclinker)
1452 linker_flags="$linker_flags $qarg"
1453 compiler_flags="$compiler_flags $qarg"
1454 prev=
1455 compile_command="$compile_command $qarg"
1456 finalize_command="$finalize_command $qarg"
1457 continue
1459 shrext)
1460 shrext_cmds="$arg"
1461 prev=
1462 continue
1464 darwin_framework|darwin_framework_skip)
1465 test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
1466 compile_command="$compile_command $arg"
1467 finalize_command="$finalize_command $arg"
1468 prev=
1469 continue
1472 eval "$prev=\"\$arg\""
1473 prev=
1474 continue
1476 esac
1477 fi # test -n "$prev"
1479 prevarg="$arg"
1481 case $arg in
1482 -all-static)
1483 if test -n "$link_static_flag"; then
1484 compile_command="$compile_command $link_static_flag"
1485 finalize_command="$finalize_command $link_static_flag"
1487 continue
1490 -allow-undefined)
1491 # FIXME: remove this flag sometime in the future.
1492 $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1493 continue
1496 -avoid-version)
1497 avoid_version=yes
1498 continue
1501 -dlopen)
1502 prev=dlfiles
1503 continue
1506 -dlpreopen)
1507 prev=dlprefiles
1508 continue
1511 -export-dynamic)
1512 export_dynamic=yes
1513 continue
1516 -export-symbols | -export-symbols-regex)
1517 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1518 $echo "$modename: more than one -exported-symbols argument is not allowed"
1519 exit $EXIT_FAILURE
1521 if test "X$arg" = "X-export-symbols"; then
1522 prev=expsyms
1523 else
1524 prev=expsyms_regex
1526 continue
1529 -framework|-arch|-isysroot)
1530 case " $CC " in
1531 *" ${arg} ${1} "* | *" ${arg} ${1} "*)
1532 prev=darwin_framework_skip ;;
1533 *) compiler_flags="$compiler_flags $arg"
1534 prev=darwin_framework ;;
1535 esac
1536 compile_command="$compile_command $arg"
1537 finalize_command="$finalize_command $arg"
1538 continue
1541 -inst-prefix-dir)
1542 prev=inst_prefix
1543 continue
1546 # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1547 # so, if we see these flags be careful not to treat them like -L
1548 -L[A-Z][A-Z]*:*)
1549 case $with_gcc/$host in
1550 no/*-*-irix* | /*-*-irix*)
1551 compile_command="$compile_command $arg"
1552 finalize_command="$finalize_command $arg"
1554 esac
1555 continue
1558 -L*)
1559 dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1560 # We need an absolute path.
1561 case $dir in
1562 [\\/]* | [A-Za-z]:[\\/]*) ;;
1564 absdir=`cd "$dir" && pwd`
1565 if test -z "$absdir"; then
1566 $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1567 absdir="$dir"
1568 notinst_path="$notinst_path $dir"
1570 dir="$absdir"
1572 esac
1573 case "$deplibs " in
1574 *" -L$dir "*) ;;
1576 deplibs="$deplibs -L$dir"
1577 lib_search_path="$lib_search_path $dir"
1579 esac
1580 case $host in
1581 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1582 testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
1583 case :$dllsearchpath: in
1584 *":$dir:"*) ;;
1585 *) dllsearchpath="$dllsearchpath:$dir";;
1586 esac
1587 case :$dllsearchpath: in
1588 *":$testbindir:"*) ;;
1589 *) dllsearchpath="$dllsearchpath:$testbindir";;
1590 esac
1592 esac
1593 continue
1596 -l*)
1597 if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1598 case $host in
1599 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
1600 # These systems don't actually have a C or math library (as such)
1601 continue
1603 *-*-os2*)
1604 # These systems don't actually have a C library (as such)
1605 test "X$arg" = "X-lc" && continue
1607 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1608 # Do not include libc due to us having libc/libc_r.
1609 test "X$arg" = "X-lc" && continue
1611 *-*-rhapsody* | *-*-darwin1.[012])
1612 # Rhapsody C and math libraries are in the System framework
1613 deplibs="$deplibs -framework System"
1614 continue
1616 *-*-sco3.2v5* | *-*-sco5v6*)
1617 # Causes problems with __ctype
1618 test "X$arg" = "X-lc" && continue
1620 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
1621 # Compiler inserts libc in the correct place for threads to work
1622 test "X$arg" = "X-lc" && continue
1624 esac
1625 elif test "X$arg" = "X-lc_r"; then
1626 case $host in
1627 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1628 # Do not include libc_r directly, use -pthread flag.
1629 continue
1631 esac
1633 deplibs="$deplibs $arg"
1634 continue
1637 # Tru64 UNIX uses -model [arg] to determine the layout of C++
1638 # classes, name mangling, and exception handling.
1639 -model)
1640 compile_command="$compile_command $arg"
1641 compiler_flags="$compiler_flags $arg"
1642 finalize_command="$finalize_command $arg"
1643 prev=xcompiler
1644 continue
1647 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
1648 compiler_flags="$compiler_flags $arg"
1649 compile_command="$compile_command $arg"
1650 finalize_command="$finalize_command $arg"
1651 deplibs="$deplibs $arg"
1652 continue
1655 -module)
1656 module=yes
1657 continue
1660 # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
1661 # -r[0-9][0-9]* specifies the processor on the SGI compiler
1662 # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
1663 # +DA*, +DD* enable 64-bit mode on the HP compiler
1664 # -q* pass through compiler args for the IBM compiler
1665 # -m* pass through architecture-specific compiler args for GCC
1666 # -m*, -t[45]*, -txscale* pass through architecture-specific
1667 # compiler args for GCC
1668 # -pg pass through profiling flag for GCC
1669 # @file GCC response files
1670 -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
1671 -t[45]*|-txscale*|@*)
1673 # Unknown arguments in both finalize_command and compile_command need
1674 # to be aesthetically quoted because they are evaled later.
1675 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1676 case $arg in
1677 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1678 arg="\"$arg\""
1680 esac
1681 compile_command="$compile_command $arg"
1682 finalize_command="$finalize_command $arg"
1683 compiler_flags="$compiler_flags $arg"
1684 continue
1687 -shrext)
1688 prev=shrext
1689 continue
1692 -no-fast-install)
1693 fast_install=no
1694 continue
1697 -no-install)
1698 case $host in
1699 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1700 # The PATH hackery in wrapper scripts is required on Windows
1701 # in order for the loader to find any dlls it needs.
1702 $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1703 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1704 fast_install=no
1706 *) no_install=yes ;;
1707 esac
1708 continue
1711 -no-undefined)
1712 allow_undefined=no
1713 continue
1716 -objectlist)
1717 prev=objectlist
1718 continue
1721 -o) prev=output ;;
1723 -precious-files-regex)
1724 prev=precious_regex
1725 continue
1728 -release)
1729 prev=release
1730 continue
1733 -rpath)
1734 prev=rpath
1735 continue
1739 prev=xrpath
1740 continue
1743 -R*)
1744 dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1745 # We need an absolute path.
1746 case $dir in
1747 [\\/]* | [A-Za-z]:[\\/]*) ;;
1749 $echo "$modename: only absolute run-paths are allowed" 1>&2
1750 exit $EXIT_FAILURE
1752 esac
1753 case "$xrpath " in
1754 *" $dir "*) ;;
1755 *) xrpath="$xrpath $dir" ;;
1756 esac
1757 continue
1760 -static)
1761 # The effects of -static are defined in a previous loop.
1762 # We used to do the same as -all-static on platforms that
1763 # didn't have a PIC flag, but the assumption that the effects
1764 # would be equivalent was wrong. It would break on at least
1765 # Digital Unix and AIX.
1766 continue
1769 -thread-safe)
1770 thread_safe=yes
1771 continue
1774 -version-info)
1775 prev=vinfo
1776 continue
1778 -version-number)
1779 prev=vinfo
1780 vinfo_number=yes
1781 continue
1784 -Wc,*)
1785 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1786 arg=
1787 save_ifs="$IFS"; IFS=','
1788 for flag in $args; do
1789 IFS="$save_ifs"
1790 case $flag in
1791 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1792 flag="\"$flag\""
1794 esac
1795 arg="$arg $wl$flag"
1796 compiler_flags="$compiler_flags $flag"
1797 done
1798 IFS="$save_ifs"
1799 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1802 -Wl,*)
1803 args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1804 arg=
1805 save_ifs="$IFS"; IFS=','
1806 for flag in $args; do
1807 IFS="$save_ifs"
1808 case $flag in
1809 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1810 flag="\"$flag\""
1812 esac
1813 arg="$arg $wl$flag"
1814 compiler_flags="$compiler_flags $wl$flag"
1815 linker_flags="$linker_flags $flag"
1816 done
1817 IFS="$save_ifs"
1818 arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1821 -Xcompiler)
1822 prev=xcompiler
1823 continue
1826 -Xlinker)
1827 prev=xlinker
1828 continue
1831 -XCClinker)
1832 prev=xcclinker
1833 continue
1836 # Some other compiler flag.
1837 -* | +*)
1838 # Unknown arguments in both finalize_command and compile_command need
1839 # to be aesthetically quoted because they are evaled later.
1840 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1841 case $arg in
1842 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1843 arg="\"$arg\""
1845 esac
1848 *.$objext)
1849 # A standard object.
1850 objs="$objs $arg"
1853 *.lo)
1854 # A libtool-controlled object.
1856 # Check to see that this really is a libtool object.
1857 if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1858 pic_object=
1859 non_pic_object=
1861 # Read the .lo file
1862 # If there is no directory component, then add one.
1863 case $arg in
1864 */* | *\\*) . $arg ;;
1865 *) . ./$arg ;;
1866 esac
1868 if test -z "$pic_object" || \
1869 test -z "$non_pic_object" ||
1870 test "$pic_object" = none && \
1871 test "$non_pic_object" = none; then
1872 $echo "$modename: cannot find name of object for \`$arg'" 1>&2
1873 exit $EXIT_FAILURE
1876 # Extract subdirectory from the argument.
1877 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1878 if test "X$xdir" = "X$arg"; then
1879 xdir=
1880 else
1881 xdir="$xdir/"
1884 if test "$pic_object" != none; then
1885 # Prepend the subdirectory the object is found in.
1886 pic_object="$xdir$pic_object"
1888 if test "$prev" = dlfiles; then
1889 if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1890 dlfiles="$dlfiles $pic_object"
1891 prev=
1892 continue
1893 else
1894 # If libtool objects are unsupported, then we need to preload.
1895 prev=dlprefiles
1899 # CHECK ME: I think I busted this. -Ossama
1900 if test "$prev" = dlprefiles; then
1901 # Preload the old-style object.
1902 dlprefiles="$dlprefiles $pic_object"
1903 prev=
1906 # A PIC object.
1907 libobjs="$libobjs $pic_object"
1908 arg="$pic_object"
1911 # Non-PIC object.
1912 if test "$non_pic_object" != none; then
1913 # Prepend the subdirectory the object is found in.
1914 non_pic_object="$xdir$non_pic_object"
1916 # A standard non-PIC object
1917 non_pic_objects="$non_pic_objects $non_pic_object"
1918 if test -z "$pic_object" || test "$pic_object" = none ; then
1919 arg="$non_pic_object"
1921 else
1922 # If the PIC object exists, use it instead.
1923 # $xdir was prepended to $pic_object above.
1924 non_pic_object="$pic_object"
1925 non_pic_objects="$non_pic_objects $non_pic_object"
1927 else
1928 # Only an error if not doing a dry-run.
1929 if test -z "$run"; then
1930 $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1931 exit $EXIT_FAILURE
1932 else
1933 # Dry-run case.
1935 # Extract subdirectory from the argument.
1936 xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1937 if test "X$xdir" = "X$arg"; then
1938 xdir=
1939 else
1940 xdir="$xdir/"
1943 pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1944 non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1945 libobjs="$libobjs $pic_object"
1946 non_pic_objects="$non_pic_objects $non_pic_object"
1951 *.$libext)
1952 # An archive.
1953 deplibs="$deplibs $arg"
1954 old_deplibs="$old_deplibs $arg"
1955 continue
1958 *.la)
1959 # A libtool-controlled library.
1961 if test "$prev" = dlfiles; then
1962 # This library was specified with -dlopen.
1963 dlfiles="$dlfiles $arg"
1964 prev=
1965 elif test "$prev" = dlprefiles; then
1966 # The library was specified with -dlpreopen.
1967 dlprefiles="$dlprefiles $arg"
1968 prev=
1969 else
1970 deplibs="$deplibs $arg"
1972 continue
1975 # Some other compiler argument.
1977 # Unknown arguments in both finalize_command and compile_command need
1978 # to be aesthetically quoted because they are evaled later.
1979 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1980 case $arg in
1981 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1982 arg="\"$arg\""
1984 esac
1986 esac # arg
1988 # Now actually substitute the argument into the commands.
1989 if test -n "$arg"; then
1990 compile_command="$compile_command $arg"
1991 finalize_command="$finalize_command $arg"
1993 done # argument parsing loop
1995 if test -n "$prev"; then
1996 $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
1997 $echo "$help" 1>&2
1998 exit $EXIT_FAILURE
2001 if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
2002 eval arg=\"$export_dynamic_flag_spec\"
2003 compile_command="$compile_command $arg"
2004 finalize_command="$finalize_command $arg"
2007 oldlibs=
2008 # calculate the name of the file, without its directory
2009 outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
2010 libobjs_save="$libobjs"
2012 if test -n "$shlibpath_var"; then
2013 # get the directories listed in $shlibpath_var
2014 eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
2015 else
2016 shlib_search_path=
2018 eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
2019 eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
2021 output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2022 if test "X$output_objdir" = "X$output"; then
2023 output_objdir="$objdir"
2024 else
2025 output_objdir="$output_objdir/$objdir"
2027 # Create the object directory.
2028 if test ! -d "$output_objdir"; then
2029 $show "$mkdir $output_objdir"
2030 $run $mkdir $output_objdir
2031 exit_status=$?
2032 if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
2033 exit $exit_status
2037 # Determine the type of output
2038 case $output in
2040 $echo "$modename: you must specify an output file" 1>&2
2041 $echo "$help" 1>&2
2042 exit $EXIT_FAILURE
2044 *.$libext) linkmode=oldlib ;;
2045 *.lo | *.$objext) linkmode=obj ;;
2046 *.la) linkmode=lib ;;
2047 *) linkmode=prog ;; # Anything else should be a program.
2048 esac
2050 case $host in
2051 *cygwin* | *mingw* | *pw32*)
2052 # don't eliminate duplications in $postdeps and $predeps
2053 duplicate_compiler_generated_deps=yes
2056 duplicate_compiler_generated_deps=$duplicate_deps
2058 esac
2059 specialdeplibs=
2061 libs=
2062 # Find all interdependent deplibs by searching for libraries
2063 # that are linked more than once (e.g. -la -lb -la)
2064 for deplib in $deplibs; do
2065 if test "X$duplicate_deps" = "Xyes" ; then
2066 case "$libs " in
2067 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2068 esac
2070 libs="$libs $deplib"
2071 done
2073 if test "$linkmode" = lib; then
2074 libs="$predeps $libs $compiler_lib_search_path $postdeps"
2076 # Compute libraries that are listed more than once in $predeps
2077 # $postdeps and mark them as special (i.e., whose duplicates are
2078 # not to be eliminated).
2079 pre_post_deps=
2080 if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
2081 for pre_post_dep in $predeps $postdeps; do
2082 case "$pre_post_deps " in
2083 *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
2084 esac
2085 pre_post_deps="$pre_post_deps $pre_post_dep"
2086 done
2088 pre_post_deps=
2091 deplibs=
2092 newdependency_libs=
2093 newlib_search_path=
2094 need_relink=no # whether we're linking any uninstalled libtool libraries
2095 notinst_deplibs= # not-installed libtool libraries
2096 case $linkmode in
2097 lib)
2098 passes="conv link"
2099 for file in $dlfiles $dlprefiles; do
2100 case $file in
2101 *.la) ;;
2103 $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
2104 exit $EXIT_FAILURE
2106 esac
2107 done
2109 prog)
2110 compile_deplibs=
2111 finalize_deplibs=
2112 alldeplibs=no
2113 newdlfiles=
2114 newdlprefiles=
2115 passes="conv scan dlopen dlpreopen link"
2117 *) passes="conv"
2119 esac
2120 for pass in $passes; do
2121 if test "$linkmode,$pass" = "lib,link" ||
2122 test "$linkmode,$pass" = "prog,scan"; then
2123 libs="$deplibs"
2124 deplibs=
2126 if test "$linkmode" = prog; then
2127 case $pass in
2128 dlopen) libs="$dlfiles" ;;
2129 dlpreopen) libs="$dlprefiles" ;;
2130 link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
2131 esac
2133 if test "$pass" = dlopen; then
2134 # Collect dlpreopened libraries
2135 save_deplibs="$deplibs"
2136 deplibs=
2138 for deplib in $libs; do
2139 lib=
2140 found=no
2141 case $deplib in
2142 -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
2143 if test "$linkmode,$pass" = "prog,link"; then
2144 compile_deplibs="$deplib $compile_deplibs"
2145 finalize_deplibs="$deplib $finalize_deplibs"
2146 else
2147 compiler_flags="$compiler_flags $deplib"
2150 case $linkmode in
2151 lib)
2152 deplibs="$deplib $deplibs"
2153 test "$pass" = conv && continue
2154 newdependency_libs="$deplib $newdependency_libs"
2156 prog)
2157 if test "$pass" = conv; then
2158 deplibs="$deplib $deplibs"
2159 continue
2161 if test "$pass" = scan; then
2162 deplibs="$deplib $deplibs"
2163 else
2164 compile_deplibs="$deplib $compile_deplibs"
2165 finalize_deplibs="$deplib $finalize_deplibs"
2170 esac # linkmode
2172 continue
2174 -l*)
2175 if test "$linkmode" != lib && test "$linkmode" != prog; then
2176 $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
2177 continue
2179 name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
2180 for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
2181 for search_ext in .la $std_shrext .so .a; do
2182 # Search the libtool library
2183 lib="$searchdir/lib${name}${search_ext}"
2184 if test -f "$lib"; then
2185 if test "$search_ext" = ".la"; then
2186 found=yes
2187 else
2188 found=no
2190 break 2
2192 done
2193 done
2194 if test "$found" != yes; then
2195 # deplib doesn't seem to be a libtool library
2196 if test "$linkmode,$pass" = "prog,link"; then
2197 compile_deplibs="$deplib $compile_deplibs"
2198 finalize_deplibs="$deplib $finalize_deplibs"
2199 else
2200 deplibs="$deplib $deplibs"
2201 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2203 continue
2204 else # deplib is a libtool library
2205 # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
2206 # We need to do some special things here, and not later.
2207 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
2208 case " $predeps $postdeps " in
2209 *" $deplib "*)
2210 if (${SED} -e '2q' $lib |
2211 grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
2212 library_names=
2213 old_library=
2214 case $lib in
2215 */* | *\\*) . $lib ;;
2216 *) . ./$lib ;;
2217 esac
2218 for l in $old_library $library_names; do
2219 ll="$l"
2220 done
2221 if test "X$ll" = "X$old_library" ; then # only static version available
2222 found=no
2223 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2224 test "X$ladir" = "X$lib" && ladir="."
2225 lib=$ladir/$old_library
2226 if test "$linkmode,$pass" = "prog,link"; then
2227 compile_deplibs="$deplib $compile_deplibs"
2228 finalize_deplibs="$deplib $finalize_deplibs"
2229 else
2230 deplibs="$deplib $deplibs"
2231 test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2233 continue
2237 *) ;;
2238 esac
2241 ;; # -l
2242 -L*)
2243 case $linkmode in
2244 lib)
2245 deplibs="$deplib $deplibs"
2246 test "$pass" = conv && continue
2247 newdependency_libs="$deplib $newdependency_libs"
2248 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2250 prog)
2251 if test "$pass" = conv; then
2252 deplibs="$deplib $deplibs"
2253 continue
2255 if test "$pass" = scan; then
2256 deplibs="$deplib $deplibs"
2257 else
2258 compile_deplibs="$deplib $compile_deplibs"
2259 finalize_deplibs="$deplib $finalize_deplibs"
2261 newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2264 $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
2266 esac # linkmode
2267 continue
2268 ;; # -L
2269 -R*)
2270 if test "$pass" = link; then
2271 dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2272 # Make sure the xrpath contains only unique directories.
2273 case "$xrpath " in
2274 *" $dir "*) ;;
2275 *) xrpath="$xrpath $dir" ;;
2276 esac
2278 deplibs="$deplib $deplibs"
2279 continue
2281 *.la) lib="$deplib" ;;
2282 *.$libext)
2283 if test "$pass" = conv; then
2284 deplibs="$deplib $deplibs"
2285 continue
2287 case $linkmode in
2288 lib)
2289 valid_a_lib=no
2290 case $deplibs_check_method in
2291 match_pattern*)
2292 set dummy $deplibs_check_method
2293 match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2294 if eval $echo \"$deplib\" 2>/dev/null \
2295 | $SED 10q \
2296 | $EGREP "$match_pattern_regex" > /dev/null; then
2297 valid_a_lib=yes
2300 pass_all)
2301 valid_a_lib=yes
2303 esac
2304 if test "$valid_a_lib" != yes; then
2305 $echo
2306 $echo "*** Warning: Trying to link with static lib archive $deplib."
2307 $echo "*** I have the capability to make that library automatically link in when"
2308 $echo "*** you link to this library. But I can only do this if you have a"
2309 $echo "*** shared version of the library, which you do not appear to have"
2310 $echo "*** because the file extensions .$libext of this argument makes me believe"
2311 $echo "*** that it is just a static archive that I should not used here."
2312 else
2313 $echo
2314 $echo "*** Warning: Linking the shared library $output against the"
2315 $echo "*** static library $deplib is not portable!"
2316 deplibs="$deplib $deplibs"
2318 continue
2320 prog)
2321 if test "$pass" != link; then
2322 deplibs="$deplib $deplibs"
2323 else
2324 compile_deplibs="$deplib $compile_deplibs"
2325 finalize_deplibs="$deplib $finalize_deplibs"
2327 continue
2329 esac # linkmode
2330 ;; # *.$libext
2331 *.lo | *.$objext)
2332 if test "$pass" = conv; then
2333 deplibs="$deplib $deplibs"
2334 elif test "$linkmode" = prog; then
2335 if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2336 # If there is no dlopen support or we're linking statically,
2337 # we need to preload.
2338 newdlprefiles="$newdlprefiles $deplib"
2339 compile_deplibs="$deplib $compile_deplibs"
2340 finalize_deplibs="$deplib $finalize_deplibs"
2341 else
2342 newdlfiles="$newdlfiles $deplib"
2345 continue
2347 %DEPLIBS%)
2348 alldeplibs=yes
2349 continue
2351 esac # case $deplib
2352 if test "$found" = yes || test -f "$lib"; then :
2353 else
2354 $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
2355 exit $EXIT_FAILURE
2358 # Check to see that this really is a libtool archive.
2359 if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2360 else
2361 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2362 exit $EXIT_FAILURE
2365 ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2366 test "X$ladir" = "X$lib" && ladir="."
2368 dlname=
2369 dlopen=
2370 dlpreopen=
2371 libdir=
2372 library_names=
2373 old_library=
2374 # If the library was installed with an old release of libtool,
2375 # it will not redefine variables installed, or shouldnotlink
2376 installed=yes
2377 shouldnotlink=no
2378 avoidtemprpath=
2381 # Read the .la file
2382 case $lib in
2383 */* | *\\*) . $lib ;;
2384 *) . ./$lib ;;
2385 esac
2387 if test "$linkmode,$pass" = "lib,link" ||
2388 test "$linkmode,$pass" = "prog,scan" ||
2389 { test "$linkmode" != prog && test "$linkmode" != lib; }; then
2390 test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2391 test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2394 if test "$pass" = conv; then
2395 # Only check for convenience libraries
2396 deplibs="$lib $deplibs"
2397 if test -z "$libdir"; then
2398 if test -z "$old_library"; then
2399 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2400 exit $EXIT_FAILURE
2402 # It is a libtool convenience library, so add in its objects.
2403 convenience="$convenience $ladir/$objdir/$old_library"
2404 old_convenience="$old_convenience $ladir/$objdir/$old_library"
2405 tmp_libs=
2406 for deplib in $dependency_libs; do
2407 deplibs="$deplib $deplibs"
2408 if test "X$duplicate_deps" = "Xyes" ; then
2409 case "$tmp_libs " in
2410 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2411 esac
2413 tmp_libs="$tmp_libs $deplib"
2414 done
2415 elif test "$linkmode" != prog && test "$linkmode" != lib; then
2416 $echo "$modename: \`$lib' is not a convenience library" 1>&2
2417 exit $EXIT_FAILURE
2419 continue
2420 fi # $pass = conv
2423 # Get the name of the library we link against.
2424 linklib=
2425 for l in $old_library $library_names; do
2426 linklib="$l"
2427 done
2428 if test -z "$linklib"; then
2429 $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2430 exit $EXIT_FAILURE
2433 # This library was specified with -dlopen.
2434 if test "$pass" = dlopen; then
2435 if test -z "$libdir"; then
2436 $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2437 exit $EXIT_FAILURE
2439 if test -z "$dlname" ||
2440 test "$dlopen_support" != yes ||
2441 test "$build_libtool_libs" = no; then
2442 # If there is no dlname, no dlopen support or we're linking
2443 # statically, we need to preload. We also need to preload any
2444 # dependent libraries so libltdl's deplib preloader doesn't
2445 # bomb out in the load deplibs phase.
2446 dlprefiles="$dlprefiles $lib $dependency_libs"
2447 else
2448 newdlfiles="$newdlfiles $lib"
2450 continue
2451 fi # $pass = dlopen
2453 # We need an absolute path.
2454 case $ladir in
2455 [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2457 abs_ladir=`cd "$ladir" && pwd`
2458 if test -z "$abs_ladir"; then
2459 $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2460 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2461 abs_ladir="$ladir"
2464 esac
2465 laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
2467 # Find the relevant object directory and library name.
2468 if test "X$installed" = Xyes; then
2469 if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2470 $echo "$modename: warning: library \`$lib' was moved." 1>&2
2471 dir="$ladir"
2472 absdir="$abs_ladir"
2473 libdir="$abs_ladir"
2474 else
2475 dir="$libdir"
2476 absdir="$libdir"
2478 test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
2479 else
2480 if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2481 dir="$ladir"
2482 absdir="$abs_ladir"
2483 # Remove this search path later
2484 notinst_path="$notinst_path $abs_ladir"
2485 else
2486 dir="$ladir/$objdir"
2487 absdir="$abs_ladir/$objdir"
2488 # Remove this search path later
2489 notinst_path="$notinst_path $abs_ladir"
2491 fi # $installed = yes
2492 name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2494 # This library was specified with -dlpreopen.
2495 if test "$pass" = dlpreopen; then
2496 if test -z "$libdir"; then
2497 $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2498 exit $EXIT_FAILURE
2500 # Prefer using a static library (so that no silly _DYNAMIC symbols
2501 # are required to link).
2502 if test -n "$old_library"; then
2503 newdlprefiles="$newdlprefiles $dir/$old_library"
2504 # Otherwise, use the dlname, so that lt_dlopen finds it.
2505 elif test -n "$dlname"; then
2506 newdlprefiles="$newdlprefiles $dir/$dlname"
2507 else
2508 newdlprefiles="$newdlprefiles $dir/$linklib"
2510 fi # $pass = dlpreopen
2512 if test -z "$libdir"; then
2513 # Link the convenience library
2514 if test "$linkmode" = lib; then
2515 deplibs="$dir/$old_library $deplibs"
2516 elif test "$linkmode,$pass" = "prog,link"; then
2517 compile_deplibs="$dir/$old_library $compile_deplibs"
2518 finalize_deplibs="$dir/$old_library $finalize_deplibs"
2519 else
2520 deplibs="$lib $deplibs" # used for prog,scan pass
2522 continue
2526 if test "$linkmode" = prog && test "$pass" != link; then
2527 newlib_search_path="$newlib_search_path $ladir"
2528 deplibs="$lib $deplibs"
2530 linkalldeplibs=no
2531 if test "$link_all_deplibs" != no || test -z "$library_names" ||
2532 test "$build_libtool_libs" = no; then
2533 linkalldeplibs=yes
2536 tmp_libs=
2537 for deplib in $dependency_libs; do
2538 case $deplib in
2539 -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2540 esac
2541 # Need to link against all dependency_libs?
2542 if test "$linkalldeplibs" = yes; then
2543 deplibs="$deplib $deplibs"
2544 else
2545 # Need to hardcode shared library paths
2546 # or/and link against static libraries
2547 newdependency_libs="$deplib $newdependency_libs"
2549 if test "X$duplicate_deps" = "Xyes" ; then
2550 case "$tmp_libs " in
2551 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2552 esac
2554 tmp_libs="$tmp_libs $deplib"
2555 done # for deplib
2556 continue
2557 fi # $linkmode = prog...
2559 if test "$linkmode,$pass" = "prog,link"; then
2560 if test -n "$library_names" &&
2561 { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
2562 # We need to hardcode the library path
2563 if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
2564 # Make sure the rpath contains only unique directories.
2565 case "$temp_rpath " in
2566 *" $dir "*) ;;
2567 *" $absdir "*) ;;
2568 *) temp_rpath="$temp_rpath $absdir" ;;
2569 esac
2572 # Hardcode the library path.
2573 # Skip directories that are in the system default run-time
2574 # search path.
2575 case " $sys_lib_dlsearch_path " in
2576 *" $absdir "*) ;;
2578 case "$compile_rpath " in
2579 *" $absdir "*) ;;
2580 *) compile_rpath="$compile_rpath $absdir"
2581 esac
2583 esac
2584 case " $sys_lib_dlsearch_path " in
2585 *" $libdir "*) ;;
2587 case "$finalize_rpath " in
2588 *" $libdir "*) ;;
2589 *) finalize_rpath="$finalize_rpath $libdir"
2590 esac
2592 esac
2593 fi # $linkmode,$pass = prog,link...
2595 if test "$alldeplibs" = yes &&
2596 { test "$deplibs_check_method" = pass_all ||
2597 { test "$build_libtool_libs" = yes &&
2598 test -n "$library_names"; }; }; then
2599 # We only need to search for static libraries
2600 continue
2604 link_static=no # Whether the deplib will be linked statically
2605 use_static_libs=$prefer_static_libs
2606 if test "$use_static_libs" = built && test "$installed" = yes ; then
2607 use_static_libs=no
2609 if test -n "$library_names" &&
2610 { test "$use_static_libs" = no || test -z "$old_library"; }; then
2611 if test "$installed" = no; then
2612 notinst_deplibs="$notinst_deplibs $lib"
2613 need_relink=yes
2615 # This is a shared library
2617 # Warn about portability, can't link against -module's on
2618 # some systems (darwin)
2619 if test "$shouldnotlink" = yes && test "$pass" = link ; then
2620 $echo
2621 if test "$linkmode" = prog; then
2622 $echo "*** Warning: Linking the executable $output against the loadable module"
2623 else
2624 $echo "*** Warning: Linking the shared library $output against the loadable module"
2626 $echo "*** $linklib is not portable!"
2628 if test "$linkmode" = lib &&
2629 test "$hardcode_into_libs" = yes; then
2630 # Hardcode the library path.
2631 # Skip directories that are in the system default run-time
2632 # search path.
2633 case " $sys_lib_dlsearch_path " in
2634 *" $absdir "*) ;;
2636 case "$compile_rpath " in
2637 *" $absdir "*) ;;
2638 *) compile_rpath="$compile_rpath $absdir"
2639 esac
2641 esac
2642 case " $sys_lib_dlsearch_path " in
2643 *" $libdir "*) ;;
2645 case "$finalize_rpath " in
2646 *" $libdir "*) ;;
2647 *) finalize_rpath="$finalize_rpath $libdir"
2648 esac
2650 esac
2653 if test -n "$old_archive_from_expsyms_cmds"; then
2654 # figure out the soname
2655 set dummy $library_names
2656 realname="$2"
2657 shift; shift
2658 libname=`eval \\$echo \"$libname_spec\"`
2659 # use dlname if we got it. it's perfectly good, no?
2660 if test -n "$dlname"; then
2661 soname="$dlname"
2662 elif test -n "$soname_spec"; then
2663 # bleh windows
2664 case $host in
2665 *cygwin* | mingw*)
2666 major=`expr $current - $age`
2667 versuffix="-$major"
2669 esac
2670 eval soname=\"$soname_spec\"
2671 else
2672 soname="$realname"
2675 # Make a new name for the extract_expsyms_cmds to use
2676 soroot="$soname"
2677 soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2678 newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
2680 # If the library has no export list, then create one now
2681 if test -f "$output_objdir/$soname-def"; then :
2682 else
2683 $show "extracting exported symbol list from \`$soname'"
2684 save_ifs="$IFS"; IFS='~'
2685 cmds=$extract_expsyms_cmds
2686 for cmd in $cmds; do
2687 IFS="$save_ifs"
2688 eval cmd=\"$cmd\"
2689 $show "$cmd"
2690 $run eval "$cmd" || exit $?
2691 done
2692 IFS="$save_ifs"
2695 # Create $newlib
2696 if test -f "$output_objdir/$newlib"; then :; else
2697 $show "generating import library for \`$soname'"
2698 save_ifs="$IFS"; IFS='~'
2699 cmds=$old_archive_from_expsyms_cmds
2700 for cmd in $cmds; do
2701 IFS="$save_ifs"
2702 eval cmd=\"$cmd\"
2703 $show "$cmd"
2704 $run eval "$cmd" || exit $?
2705 done
2706 IFS="$save_ifs"
2708 # make sure the library variables are pointing to the new library
2709 dir=$output_objdir
2710 linklib=$newlib
2711 fi # test -n "$old_archive_from_expsyms_cmds"
2713 if test "$linkmode" = prog || test "$mode" != relink; then
2714 add_shlibpath=
2715 add_dir=
2716 add=
2717 lib_linked=yes
2718 case $hardcode_action in
2719 immediate | unsupported)
2720 if test "$hardcode_direct" = no; then
2721 add="$dir/$linklib"
2722 case $host in
2723 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
2724 *-*-sysv4*uw2*) add_dir="-L$dir" ;;
2725 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
2726 *-*-unixware7*) add_dir="-L$dir" ;;
2727 *-*-darwin* )
2728 # if the lib is a module then we can not link against
2729 # it, someone is ignoring the new warnings I added
2730 if /usr/bin/file -L $add 2> /dev/null |
2731 $EGREP ": [^:]* bundle" >/dev/null ; then
2732 $echo "** Warning, lib $linklib is a module, not a shared library"
2733 if test -z "$old_library" ; then
2734 $echo
2735 $echo "** And there doesn't seem to be a static archive available"
2736 $echo "** The link will probably fail, sorry"
2737 else
2738 add="$dir/$old_library"
2741 esac
2742 elif test "$hardcode_minus_L" = no; then
2743 case $host in
2744 *-*-sunos*) add_shlibpath="$dir" ;;
2745 esac
2746 add_dir="-L$dir"
2747 add="-l$name"
2748 elif test "$hardcode_shlibpath_var" = no; then
2749 add_shlibpath="$dir"
2750 add="-l$name"
2751 else
2752 lib_linked=no
2755 relink)
2756 if test "$hardcode_direct" = yes; then
2757 add="$dir/$linklib"
2758 elif test "$hardcode_minus_L" = yes; then
2759 add_dir="-L$dir"
2760 # Try looking first in the location we're being installed to.
2761 if test -n "$inst_prefix_dir"; then
2762 case $libdir in
2763 [\\/]*)
2764 add_dir="$add_dir -L$inst_prefix_dir$libdir"
2766 esac
2768 add="-l$name"
2769 elif test "$hardcode_shlibpath_var" = yes; then
2770 add_shlibpath="$dir"
2771 add="-l$name"
2772 else
2773 lib_linked=no
2776 *) lib_linked=no ;;
2777 esac
2779 if test "$lib_linked" != yes; then
2780 $echo "$modename: configuration error: unsupported hardcode properties"
2781 exit $EXIT_FAILURE
2784 if test -n "$add_shlibpath"; then
2785 case :$compile_shlibpath: in
2786 *":$add_shlibpath:"*) ;;
2787 *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2788 esac
2790 if test "$linkmode" = prog; then
2791 test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2792 test -n "$add" && compile_deplibs="$add $compile_deplibs"
2793 else
2794 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2795 test -n "$add" && deplibs="$add $deplibs"
2796 if test "$hardcode_direct" != yes && \
2797 test "$hardcode_minus_L" != yes && \
2798 test "$hardcode_shlibpath_var" = yes; then
2799 case :$finalize_shlibpath: in
2800 *":$libdir:"*) ;;
2801 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2802 esac
2807 if test "$linkmode" = prog || test "$mode" = relink; then
2808 add_shlibpath=
2809 add_dir=
2810 add=
2811 # Finalize command for both is simple: just hardcode it.
2812 if test "$hardcode_direct" = yes; then
2813 add="$libdir/$linklib"
2814 elif test "$hardcode_minus_L" = yes; then
2815 add_dir="-L$libdir"
2816 add="-l$name"
2817 elif test "$hardcode_shlibpath_var" = yes; then
2818 case :$finalize_shlibpath: in
2819 *":$libdir:"*) ;;
2820 *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2821 esac
2822 add="-l$name"
2823 elif test "$hardcode_automatic" = yes; then
2824 if test -n "$inst_prefix_dir" &&
2825 test -f "$inst_prefix_dir$libdir/$linklib" ; then
2826 add="$inst_prefix_dir$libdir/$linklib"
2827 else
2828 add="$libdir/$linklib"
2830 else
2831 # We cannot seem to hardcode it, guess we'll fake it.
2832 add_dir="-L$libdir"
2833 # Try looking first in the location we're being installed to.
2834 if test -n "$inst_prefix_dir"; then
2835 case $libdir in
2836 [\\/]*)
2837 add_dir="$add_dir -L$inst_prefix_dir$libdir"
2839 esac
2841 add="-l$name"
2844 if test "$linkmode" = prog; then
2845 test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2846 test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2847 else
2848 test -n "$add_dir" && deplibs="$add_dir $deplibs"
2849 test -n "$add" && deplibs="$add $deplibs"
2852 elif test "$linkmode" = prog; then
2853 # Here we assume that one of hardcode_direct or hardcode_minus_L
2854 # is not unsupported. This is valid on all known static and
2855 # shared platforms.
2856 if test "$hardcode_direct" != unsupported; then
2857 test -n "$old_library" && linklib="$old_library"
2858 compile_deplibs="$dir/$linklib $compile_deplibs"
2859 finalize_deplibs="$dir/$linklib $finalize_deplibs"
2860 else
2861 compile_deplibs="-l$name -L$dir $compile_deplibs"
2862 finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2864 elif test "$build_libtool_libs" = yes; then
2865 # Not a shared library
2866 if test "$deplibs_check_method" != pass_all; then
2867 # We're trying link a shared library against a static one
2868 # but the system doesn't support it.
2870 # Just print a warning and add the library to dependency_libs so
2871 # that the program can be linked against the static library.
2872 $echo
2873 $echo "*** Warning: This system can not link to static lib archive $lib."
2874 $echo "*** I have the capability to make that library automatically link in when"
2875 $echo "*** you link to this library. But I can only do this if you have a"
2876 $echo "*** shared version of the library, which you do not appear to have."
2877 if test "$module" = yes; then
2878 $echo "*** But as you try to build a module library, libtool will still create "
2879 $echo "*** a static module, that should work as long as the dlopening application"
2880 $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2881 if test -z "$global_symbol_pipe"; then
2882 $echo
2883 $echo "*** However, this would only work if libtool was able to extract symbol"
2884 $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2885 $echo "*** not find such a program. So, this module is probably useless."
2886 $echo "*** \`nm' from GNU binutils and a full rebuild may help."
2888 if test "$build_old_libs" = no; then
2889 build_libtool_libs=module
2890 build_old_libs=yes
2891 else
2892 build_libtool_libs=no
2895 else
2896 deplibs="$dir/$old_library $deplibs"
2897 link_static=yes
2899 fi # link shared/static library?
2901 if test "$linkmode" = lib; then
2902 if test -n "$dependency_libs" &&
2903 { test "$hardcode_into_libs" != yes ||
2904 test "$build_old_libs" = yes ||
2905 test "$link_static" = yes; }; then
2906 # Extract -R from dependency_libs
2907 temp_deplibs=
2908 for libdir in $dependency_libs; do
2909 case $libdir in
2910 -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2911 case " $xrpath " in
2912 *" $temp_xrpath "*) ;;
2913 *) xrpath="$xrpath $temp_xrpath";;
2914 esac;;
2915 *) temp_deplibs="$temp_deplibs $libdir";;
2916 esac
2917 done
2918 dependency_libs="$temp_deplibs"
2921 newlib_search_path="$newlib_search_path $absdir"
2922 # Link against this library
2923 test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2924 # ... and its dependency_libs
2925 tmp_libs=
2926 for deplib in $dependency_libs; do
2927 newdependency_libs="$deplib $newdependency_libs"
2928 if test "X$duplicate_deps" = "Xyes" ; then
2929 case "$tmp_libs " in
2930 *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2931 esac
2933 tmp_libs="$tmp_libs $deplib"
2934 done
2936 if test "$link_all_deplibs" != no; then
2937 # Add the search paths of all dependency libraries
2938 for deplib in $dependency_libs; do
2939 case $deplib in
2940 -L*) path="$deplib" ;;
2941 *.la)
2942 dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2943 test "X$dir" = "X$deplib" && dir="."
2944 # We need an absolute path.
2945 case $dir in
2946 [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2948 absdir=`cd "$dir" && pwd`
2949 if test -z "$absdir"; then
2950 $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2951 absdir="$dir"
2954 esac
2955 if grep "^installed=no" $deplib > /dev/null; then
2956 path="$absdir/$objdir"
2957 else
2958 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2959 if test -z "$libdir"; then
2960 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2961 exit $EXIT_FAILURE
2963 if test "$absdir" != "$libdir"; then
2964 $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2966 path="$absdir"
2968 depdepl=
2969 case $host in
2970 *-*-darwin*)
2971 # we do not want to link against static libs,
2972 # but need to link against shared
2973 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
2974 if test -n "$deplibrary_names" ; then
2975 for tmp in $deplibrary_names ; do
2976 depdepl=$tmp
2977 done
2978 if test -f "$path/$depdepl" ; then
2979 depdepl="$path/$depdepl"
2981 # do not add paths which are already there
2982 case " $newlib_search_path " in
2983 *" $path "*) ;;
2984 *) newlib_search_path="$newlib_search_path $path";;
2985 esac
2987 path=""
2990 path="-L$path"
2992 esac
2994 -l*)
2995 case $host in
2996 *-*-darwin*)
2997 # Again, we only want to link against shared libraries
2998 eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
2999 for tmp in $newlib_search_path ; do
3000 if test -f "$tmp/lib$tmp_libs.dylib" ; then
3001 eval depdepl="$tmp/lib$tmp_libs.dylib"
3002 break
3004 done
3005 path=""
3007 *) continue ;;
3008 esac
3010 *) continue ;;
3011 esac
3012 case " $deplibs " in
3013 *" $path "*) ;;
3014 *) deplibs="$path $deplibs" ;;
3015 esac
3016 case " $deplibs " in
3017 *" $depdepl "*) ;;
3018 *) deplibs="$depdepl $deplibs" ;;
3019 esac
3020 done
3021 fi # link_all_deplibs != no
3022 fi # linkmode = lib
3023 done # for deplib in $libs
3024 dependency_libs="$newdependency_libs"
3025 if test "$pass" = dlpreopen; then
3026 # Link the dlpreopened libraries before other libraries
3027 for deplib in $save_deplibs; do
3028 deplibs="$deplib $deplibs"
3029 done
3031 if test "$pass" != dlopen; then
3032 if test "$pass" != conv; then
3033 # Make sure lib_search_path contains only unique directories.
3034 lib_search_path=
3035 for dir in $newlib_search_path; do
3036 case "$lib_search_path " in
3037 *" $dir "*) ;;
3038 *) lib_search_path="$lib_search_path $dir" ;;
3039 esac
3040 done
3041 newlib_search_path=
3044 if test "$linkmode,$pass" != "prog,link"; then
3045 vars="deplibs"
3046 else
3047 vars="compile_deplibs finalize_deplibs"
3049 for var in $vars dependency_libs; do
3050 # Add libraries to $var in reverse order
3051 eval tmp_libs=\"\$$var\"
3052 new_libs=
3053 for deplib in $tmp_libs; do
3054 # FIXME: Pedantically, this is the right thing to do, so
3055 # that some nasty dependency loop isn't accidentally
3056 # broken:
3057 #new_libs="$deplib $new_libs"
3058 # Pragmatically, this seems to cause very few problems in
3059 # practice:
3060 case $deplib in
3061 -L*) new_libs="$deplib $new_libs" ;;
3062 -R*) ;;
3064 # And here is the reason: when a library appears more
3065 # than once as an explicit dependence of a library, or
3066 # is implicitly linked in more than once by the
3067 # compiler, it is considered special, and multiple
3068 # occurrences thereof are not removed. Compare this
3069 # with having the same library being listed as a
3070 # dependency of multiple other libraries: in this case,
3071 # we know (pedantically, we assume) the library does not
3072 # need to be listed more than once, so we keep only the
3073 # last copy. This is not always right, but it is rare
3074 # enough that we require users that really mean to play
3075 # such unportable linking tricks to link the library
3076 # using -Wl,-lname, so that libtool does not consider it
3077 # for duplicate removal.
3078 case " $specialdeplibs " in
3079 *" $deplib "*) new_libs="$deplib $new_libs" ;;
3081 case " $new_libs " in
3082 *" $deplib "*) ;;
3083 *) new_libs="$deplib $new_libs" ;;
3084 esac
3086 esac
3088 esac
3089 done
3090 tmp_libs=
3091 for deplib in $new_libs; do
3092 case $deplib in
3093 -L*)
3094 case " $tmp_libs " in
3095 *" $deplib "*) ;;
3096 *) tmp_libs="$tmp_libs $deplib" ;;
3097 esac
3099 *) tmp_libs="$tmp_libs $deplib" ;;
3100 esac
3101 done
3102 eval $var=\"$tmp_libs\"
3103 done # for var
3105 # Last step: remove runtime libs from dependency_libs
3106 # (they stay in deplibs)
3107 tmp_libs=
3108 for i in $dependency_libs ; do
3109 case " $predeps $postdeps $compiler_lib_search_path " in
3110 *" $i "*)
3111 i=""
3113 esac
3114 if test -n "$i" ; then
3115 tmp_libs="$tmp_libs $i"
3117 done
3118 dependency_libs=$tmp_libs
3119 done # for pass
3120 if test "$linkmode" = prog; then
3121 dlfiles="$newdlfiles"
3122 dlprefiles="$newdlprefiles"
3125 case $linkmode in
3126 oldlib)
3127 if test -n "$deplibs"; then
3128 $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
3131 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3132 $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
3135 if test -n "$rpath"; then
3136 $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
3139 if test -n "$xrpath"; then
3140 $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
3143 if test -n "$vinfo"; then
3144 $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
3147 if test -n "$release"; then
3148 $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
3151 if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
3152 $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
3155 # Now set the variables for building old libraries.
3156 build_libtool_libs=no
3157 oldlibs="$output"
3158 objs="$objs$old_deplibs"
3161 lib)
3162 # Make sure we only generate libraries of the form `libNAME.la'.
3163 case $outputname in
3164 lib*)
3165 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
3166 eval shared_ext=\"$shrext_cmds\"
3167 eval libname=\"$libname_spec\"
3170 if test "$module" = no; then
3171 $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
3172 $echo "$help" 1>&2
3173 exit $EXIT_FAILURE
3175 if test "$need_lib_prefix" != no; then
3176 # Add the "lib" prefix for modules if required
3177 name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3178 eval shared_ext=\"$shrext_cmds\"
3179 eval libname=\"$libname_spec\"
3180 else
3181 libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3184 esac
3186 if test -n "$objs"; then
3187 if test "$deplibs_check_method" != pass_all; then
3188 $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
3189 exit $EXIT_FAILURE
3190 else
3191 $echo
3192 $echo "*** Warning: Linking the shared library $output against the non-libtool"
3193 $echo "*** objects $objs is not portable!"
3194 libobjs="$libobjs $objs"
3198 if test "$dlself" != no; then
3199 $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
3202 set dummy $rpath
3203 if test "$#" -gt 2; then
3204 $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
3206 install_libdir="$2"
3208 oldlibs=
3209 if test -z "$rpath"; then
3210 if test "$build_libtool_libs" = yes; then
3211 # Building a libtool convenience library.
3212 # Some compilers have problems with a `.al' extension so
3213 # convenience libraries should have the same extension an
3214 # archive normally would.
3215 oldlibs="$output_objdir/$libname.$libext $oldlibs"
3216 build_libtool_libs=convenience
3217 build_old_libs=yes
3220 if test -n "$vinfo"; then
3221 $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
3224 if test -n "$release"; then
3225 $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
3227 else
3229 # Parse the version information argument.
3230 save_ifs="$IFS"; IFS=':'
3231 set dummy $vinfo 0 0 0
3232 IFS="$save_ifs"
3234 if test -n "$8"; then
3235 $echo "$modename: too many parameters to \`-version-info'" 1>&2
3236 $echo "$help" 1>&2
3237 exit $EXIT_FAILURE
3240 # convert absolute version numbers to libtool ages
3241 # this retains compatibility with .la files and attempts
3242 # to make the code below a bit more comprehensible
3244 case $vinfo_number in
3245 yes)
3246 number_major="$2"
3247 number_minor="$3"
3248 number_revision="$4"
3250 # There are really only two kinds -- those that
3251 # use the current revision as the major version
3252 # and those that subtract age and use age as
3253 # a minor version. But, then there is irix
3254 # which has an extra 1 added just for fun
3256 case $version_type in
3257 darwin|linux|osf|windows)
3258 current=`expr $number_major + $number_minor`
3259 age="$number_minor"
3260 revision="$number_revision"
3262 freebsd-aout|freebsd-elf|sunos)
3263 current="$number_major"
3264 revision="$number_minor"
3265 age="0"
3267 irix|nonstopux)
3268 current=`expr $number_major + $number_minor - 1`
3269 age="$number_minor"
3270 revision="$number_minor"
3272 esac
3275 current="$2"
3276 revision="$3"
3277 age="$4"
3279 esac
3281 # Check that each of the things are valid numbers.
3282 case $current in
3283 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3285 $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
3286 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3287 exit $EXIT_FAILURE
3289 esac
3291 case $revision in
3292 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3294 $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
3295 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3296 exit $EXIT_FAILURE
3298 esac
3300 case $age in
3301 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3303 $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
3304 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3305 exit $EXIT_FAILURE
3307 esac
3309 if test "$age" -gt "$current"; then
3310 $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
3311 $echo "$modename: \`$vinfo' is not valid version information" 1>&2
3312 exit $EXIT_FAILURE
3315 # Calculate the version variables.
3316 major=
3317 versuffix=
3318 verstring=
3319 case $version_type in
3320 none) ;;
3322 darwin)
3323 # Like Linux, but with the current version available in
3324 # verstring for coding it into the library header
3325 major=.`expr $current - $age`
3326 versuffix="$major.$age.$revision"
3327 # Darwin ld doesn't like 0 for these options...
3328 minor_current=`expr $current + 1`
3329 verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
3332 freebsd-aout)
3333 major=".$current"
3334 versuffix=".$current.$revision";
3337 freebsd-elf)
3338 major=".$current"
3339 versuffix=".$current";
3342 irix | nonstopux)
3343 major=`expr $current - $age + 1`
3345 case $version_type in
3346 nonstopux) verstring_prefix=nonstopux ;;
3347 *) verstring_prefix=sgi ;;
3348 esac
3349 verstring="$verstring_prefix$major.$revision"
3351 # Add in all the interfaces that we are compatible with.
3352 loop=$revision
3353 while test "$loop" -ne 0; do
3354 iface=`expr $revision - $loop`
3355 loop=`expr $loop - 1`
3356 verstring="$verstring_prefix$major.$iface:$verstring"
3357 done
3359 # Before this point, $major must not contain `.'.
3360 major=.$major
3361 versuffix="$major.$revision"
3364 linux)
3365 major=.`expr $current - $age`
3366 versuffix="$major.$age.$revision"
3369 osf)
3370 major=.`expr $current - $age`
3371 versuffix=".$current.$age.$revision"
3372 verstring="$current.$age.$revision"
3374 # Add in all the interfaces that we are compatible with.
3375 loop=$age
3376 while test "$loop" -ne 0; do
3377 iface=`expr $current - $loop`
3378 loop=`expr $loop - 1`
3379 verstring="$verstring:${iface}.0"
3380 done
3382 # Make executables depend on our current version.
3383 verstring="$verstring:${current}.0"
3386 sunos)
3387 major=".$current"
3388 versuffix=".$current.$revision"
3391 windows)
3392 # Use '-' rather than '.', since we only want one
3393 # extension on DOS 8.3 filesystems.
3394 major=`expr $current - $age`
3395 versuffix="-$major"
3399 $echo "$modename: unknown library version type \`$version_type'" 1>&2
3400 $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
3401 exit $EXIT_FAILURE
3403 esac
3405 # Clear the version info if we defaulted, and they specified a release.
3406 if test -z "$vinfo" && test -n "$release"; then
3407 major=
3408 case $version_type in
3409 darwin)
3410 # we can't check for "0.0" in archive_cmds due to quoting
3411 # problems, so we reset it completely
3412 verstring=
3415 verstring="0.0"
3417 esac
3418 if test "$need_version" = no; then
3419 versuffix=
3420 else
3421 versuffix=".0.0"
3425 # Remove version info from name if versioning should be avoided
3426 if test "$avoid_version" = yes && test "$need_version" = no; then
3427 major=
3428 versuffix=
3429 verstring=""
3432 # Check to see if the archive will have undefined symbols.
3433 if test "$allow_undefined" = yes; then
3434 if test "$allow_undefined_flag" = unsupported; then
3435 $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3436 build_libtool_libs=no
3437 build_old_libs=yes
3439 else
3440 # Don't allow undefined symbols.
3441 allow_undefined_flag="$no_undefined_flag"
3445 if test "$mode" != relink; then
3446 # Remove our outputs, but don't remove object files since they
3447 # may have been created when compiling PIC objects.
3448 removelist=
3449 tempremovelist=`$echo "$output_objdir/*"`
3450 for p in $tempremovelist; do
3451 case $p in
3452 *.$objext)
3454 $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3455 if test "X$precious_files_regex" != "X"; then
3456 if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3457 then
3458 continue
3461 removelist="$removelist $p"
3463 *) ;;
3464 esac
3465 done
3466 if test -n "$removelist"; then
3467 $show "${rm}r $removelist"
3468 $run ${rm}r $removelist
3472 # Now set the variables for building old libraries.
3473 if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3474 oldlibs="$oldlibs $output_objdir/$libname.$libext"
3476 # Transform .lo files to .o files.
3477 oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3480 # Eliminate all temporary directories.
3481 for path in $notinst_path; do
3482 lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
3483 deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
3484 dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
3485 done
3487 if test -n "$xrpath"; then
3488 # If the user specified any rpath flags, then add them.
3489 temp_xrpath=
3490 for libdir in $xrpath; do
3491 temp_xrpath="$temp_xrpath -R$libdir"
3492 case "$finalize_rpath " in
3493 *" $libdir "*) ;;
3494 *) finalize_rpath="$finalize_rpath $libdir" ;;
3495 esac
3496 done
3497 if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3498 dependency_libs="$temp_xrpath $dependency_libs"
3502 # Make sure dlfiles contains only unique files that won't be dlpreopened
3503 old_dlfiles="$dlfiles"
3504 dlfiles=
3505 for lib in $old_dlfiles; do
3506 case " $dlprefiles $dlfiles " in
3507 *" $lib "*) ;;
3508 *) dlfiles="$dlfiles $lib" ;;
3509 esac
3510 done
3512 # Make sure dlprefiles contains only unique files
3513 old_dlprefiles="$dlprefiles"
3514 dlprefiles=
3515 for lib in $old_dlprefiles; do
3516 case "$dlprefiles " in
3517 *" $lib "*) ;;
3518 *) dlprefiles="$dlprefiles $lib" ;;
3519 esac
3520 done
3522 if test "$build_libtool_libs" = yes; then
3523 if test -n "$rpath"; then
3524 case $host in
3525 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3526 # these systems don't actually have a c library (as such)!
3528 *-*-rhapsody* | *-*-darwin1.[012])
3529 # Rhapsody C library is in the System framework
3530 deplibs="$deplibs -framework System"
3532 *-*-netbsd*)
3533 # Don't link with libc until the a.out ld.so is fixed.
3535 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
3536 # Do not include libc due to us having libc/libc_r.
3538 *-*-sco3.2v5* | *-*-sco5v6*)
3539 # Causes problems with __ctype
3541 *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
3542 # Compiler inserts libc in the correct place for threads to work
3545 # Add libc to deplibs on all other systems if necessary.
3546 if test "$build_libtool_need_lc" = "yes"; then
3547 deplibs="$deplibs -lc"
3550 esac
3553 # Transform deplibs into only deplibs that can be linked in shared.
3554 name_save=$name
3555 libname_save=$libname
3556 release_save=$release
3557 versuffix_save=$versuffix
3558 major_save=$major
3559 # I'm not sure if I'm treating the release correctly. I think
3560 # release should show up in the -l (ie -lgmp5) so we don't want to
3561 # add it in twice. Is that correct?
3562 release=""
3563 versuffix=""
3564 major=""
3565 newdeplibs=
3566 droppeddeps=no
3567 case $deplibs_check_method in
3568 pass_all)
3569 # Don't check for shared/static. Everything works.
3570 # This might be a little naive. We might want to check
3571 # whether the library exists or not. But this is on
3572 # osf3 & osf4 and I'm not really sure... Just
3573 # implementing what was already the behavior.
3574 newdeplibs=$deplibs
3576 test_compile)
3577 # This code stresses the "libraries are programs" paradigm to its
3578 # limits. Maybe even breaks it. We compile a program, linking it
3579 # against the deplibs as a proxy for the library. Then we can check
3580 # whether they linked in statically or dynamically with ldd.
3581 $rm conftest.c
3582 cat > conftest.c <<EOF
3583 int main() { return 0; }
3585 $rm conftest
3586 $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
3587 if test "$?" -eq 0 ; then
3588 ldd_output=`ldd conftest`
3589 for i in $deplibs; do
3590 name=`expr $i : '-l\(.*\)'`
3591 # If $name is empty we are operating on a -L argument.
3592 if test "$name" != "" && test "$name" -ne "0"; then
3593 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3594 case " $predeps $postdeps " in
3595 *" $i "*)
3596 newdeplibs="$newdeplibs $i"
3597 i=""
3599 esac
3601 if test -n "$i" ; then
3602 libname=`eval \\$echo \"$libname_spec\"`
3603 deplib_matches=`eval \\$echo \"$library_names_spec\"`
3604 set dummy $deplib_matches
3605 deplib_match=$2
3606 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3607 newdeplibs="$newdeplibs $i"
3608 else
3609 droppeddeps=yes
3610 $echo
3611 $echo "*** Warning: dynamic linker does not accept needed library $i."
3612 $echo "*** I have the capability to make that library automatically link in when"
3613 $echo "*** you link to this library. But I can only do this if you have a"
3614 $echo "*** shared version of the library, which I believe you do not have"
3615 $echo "*** because a test_compile did reveal that the linker did not use it for"
3616 $echo "*** its dynamic dependency list that programs get resolved with at runtime."
3619 else
3620 newdeplibs="$newdeplibs $i"
3622 done
3623 else
3624 # Error occurred in the first compile. Let's try to salvage
3625 # the situation: Compile a separate program for each library.
3626 for i in $deplibs; do
3627 name=`expr $i : '-l\(.*\)'`
3628 # If $name is empty we are operating on a -L argument.
3629 if test "$name" != "" && test "$name" != "0"; then
3630 $rm conftest
3631 $LTCC $LTCFLAGS -o conftest conftest.c $i
3632 # Did it work?
3633 if test "$?" -eq 0 ; then
3634 ldd_output=`ldd conftest`
3635 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3636 case " $predeps $postdeps " in
3637 *" $i "*)
3638 newdeplibs="$newdeplibs $i"
3639 i=""
3641 esac
3643 if test -n "$i" ; then
3644 libname=`eval \\$echo \"$libname_spec\"`
3645 deplib_matches=`eval \\$echo \"$library_names_spec\"`
3646 set dummy $deplib_matches
3647 deplib_match=$2
3648 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3649 newdeplibs="$newdeplibs $i"
3650 else
3651 droppeddeps=yes
3652 $echo
3653 $echo "*** Warning: dynamic linker does not accept needed library $i."
3654 $echo "*** I have the capability to make that library automatically link in when"
3655 $echo "*** you link to this library. But I can only do this if you have a"
3656 $echo "*** shared version of the library, which you do not appear to have"
3657 $echo "*** because a test_compile did reveal that the linker did not use this one"
3658 $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3661 else
3662 droppeddeps=yes
3663 $echo
3664 $echo "*** Warning! Library $i is needed by this library but I was not able to"
3665 $echo "*** make it link in! You will probably need to install it or some"
3666 $echo "*** library that it depends on before this library will be fully"
3667 $echo "*** functional. Installing it before continuing would be even better."
3669 else
3670 newdeplibs="$newdeplibs $i"
3672 done
3675 file_magic*)
3676 set dummy $deplibs_check_method
3677 file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3678 for a_deplib in $deplibs; do
3679 name=`expr $a_deplib : '-l\(.*\)'`
3680 # If $name is empty we are operating on a -L argument.
3681 if test "$name" != "" && test "$name" != "0"; then
3682 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3683 case " $predeps $postdeps " in
3684 *" $a_deplib "*)
3685 newdeplibs="$newdeplibs $a_deplib"
3686 a_deplib=""
3688 esac
3690 if test -n "$a_deplib" ; then
3691 libname=`eval \\$echo \"$libname_spec\"`
3692 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3693 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3694 for potent_lib in $potential_libs; do
3695 # Follow soft links.
3696 if ls -lLd "$potent_lib" 2>/dev/null \
3697 | grep " -> " >/dev/null; then
3698 continue
3700 # The statement above tries to avoid entering an
3701 # endless loop below, in case of cyclic links.
3702 # We might still enter an endless loop, since a link
3703 # loop can be closed while we follow links,
3704 # but so what?
3705 potlib="$potent_lib"
3706 while test -h "$potlib" 2>/dev/null; do
3707 potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3708 case $potliblink in
3709 [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3710 *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3711 esac
3712 done
3713 if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3714 | ${SED} 10q \
3715 | $EGREP "$file_magic_regex" > /dev/null; then
3716 newdeplibs="$newdeplibs $a_deplib"
3717 a_deplib=""
3718 break 2
3720 done
3721 done
3723 if test -n "$a_deplib" ; then
3724 droppeddeps=yes
3725 $echo
3726 $echo "*** Warning: linker path does not have real file for library $a_deplib."
3727 $echo "*** I have the capability to make that library automatically link in when"
3728 $echo "*** you link to this library. But I can only do this if you have a"
3729 $echo "*** shared version of the library, which you do not appear to have"
3730 $echo "*** because I did check the linker path looking for a file starting"
3731 if test -z "$potlib" ; then
3732 $echo "*** with $libname but no candidates were found. (...for file magic test)"
3733 else
3734 $echo "*** with $libname and none of the candidates passed a file format test"
3735 $echo "*** using a file magic. Last file checked: $potlib"
3738 else
3739 # Add a -L argument.
3740 newdeplibs="$newdeplibs $a_deplib"
3742 done # Gone through all deplibs.
3744 match_pattern*)
3745 set dummy $deplibs_check_method
3746 match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3747 for a_deplib in $deplibs; do
3748 name=`expr $a_deplib : '-l\(.*\)'`
3749 # If $name is empty we are operating on a -L argument.
3750 if test -n "$name" && test "$name" != "0"; then
3751 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3752 case " $predeps $postdeps " in
3753 *" $a_deplib "*)
3754 newdeplibs="$newdeplibs $a_deplib"
3755 a_deplib=""
3757 esac
3759 if test -n "$a_deplib" ; then
3760 libname=`eval \\$echo \"$libname_spec\"`
3761 for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3762 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3763 for potent_lib in $potential_libs; do
3764 potlib="$potent_lib" # see symlink-check above in file_magic test
3765 if eval $echo \"$potent_lib\" 2>/dev/null \
3766 | ${SED} 10q \
3767 | $EGREP "$match_pattern_regex" > /dev/null; then
3768 newdeplibs="$newdeplibs $a_deplib"
3769 a_deplib=""
3770 break 2
3772 done
3773 done
3775 if test -n "$a_deplib" ; then
3776 droppeddeps=yes
3777 $echo
3778 $echo "*** Warning: linker path does not have real file for library $a_deplib."
3779 $echo "*** I have the capability to make that library automatically link in when"
3780 $echo "*** you link to this library. But I can only do this if you have a"
3781 $echo "*** shared version of the library, which you do not appear to have"
3782 $echo "*** because I did check the linker path looking for a file starting"
3783 if test -z "$potlib" ; then
3784 $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3785 else
3786 $echo "*** with $libname and none of the candidates passed a file format test"
3787 $echo "*** using a regex pattern. Last file checked: $potlib"
3790 else
3791 # Add a -L argument.
3792 newdeplibs="$newdeplibs $a_deplib"
3794 done # Gone through all deplibs.
3796 none | unknown | *)
3797 newdeplibs=""
3798 tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3799 -e 's/ -[LR][^ ]*//g'`
3800 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3801 for i in $predeps $postdeps ; do
3802 # can't use Xsed below, because $i might contain '/'
3803 tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3804 done
3806 if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
3807 | grep . >/dev/null; then
3808 $echo
3809 if test "X$deplibs_check_method" = "Xnone"; then
3810 $echo "*** Warning: inter-library dependencies are not supported in this platform."
3811 else
3812 $echo "*** Warning: inter-library dependencies are not known to be supported."
3814 $echo "*** All declared inter-library dependencies are being dropped."
3815 droppeddeps=yes
3818 esac
3819 versuffix=$versuffix_save
3820 major=$major_save
3821 release=$release_save
3822 libname=$libname_save
3823 name=$name_save
3825 case $host in
3826 *-*-rhapsody* | *-*-darwin1.[012])
3827 # On Rhapsody replace the C library is the System framework
3828 newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3830 esac
3832 if test "$droppeddeps" = yes; then
3833 if test "$module" = yes; then
3834 $echo
3835 $echo "*** Warning: libtool could not satisfy all declared inter-library"
3836 $echo "*** dependencies of module $libname. Therefore, libtool will create"
3837 $echo "*** a static module, that should work as long as the dlopening"
3838 $echo "*** application is linked with the -dlopen flag."
3839 if test -z "$global_symbol_pipe"; then
3840 $echo
3841 $echo "*** However, this would only work if libtool was able to extract symbol"
3842 $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3843 $echo "*** not find such a program. So, this module is probably useless."
3844 $echo "*** \`nm' from GNU binutils and a full rebuild may help."
3846 if test "$build_old_libs" = no; then
3847 oldlibs="$output_objdir/$libname.$libext"
3848 build_libtool_libs=module
3849 build_old_libs=yes
3850 else
3851 build_libtool_libs=no
3853 else
3854 $echo "*** The inter-library dependencies that have been dropped here will be"
3855 $echo "*** automatically added whenever a program is linked with this library"
3856 $echo "*** or is declared to -dlopen it."
3858 if test "$allow_undefined" = no; then
3859 $echo
3860 $echo "*** Since this library must not contain undefined symbols,"
3861 $echo "*** because either the platform does not support them or"
3862 $echo "*** it was explicitly requested with -no-undefined,"
3863 $echo "*** libtool will only create a static version of it."
3864 if test "$build_old_libs" = no; then
3865 oldlibs="$output_objdir/$libname.$libext"
3866 build_libtool_libs=module
3867 build_old_libs=yes
3868 else
3869 build_libtool_libs=no
3874 # Done checking deplibs!
3875 deplibs=$newdeplibs
3879 # move library search paths that coincide with paths to not yet
3880 # installed libraries to the beginning of the library search list
3881 new_libs=
3882 for path in $notinst_path; do
3883 case " $new_libs " in
3884 *" -L$path/$objdir "*) ;;
3886 case " $deplibs " in
3887 *" -L$path/$objdir "*)
3888 new_libs="$new_libs -L$path/$objdir" ;;
3889 esac
3891 esac
3892 done
3893 for deplib in $deplibs; do
3894 case $deplib in
3895 -L*)
3896 case " $new_libs " in
3897 *" $deplib "*) ;;
3898 *) new_libs="$new_libs $deplib" ;;
3899 esac
3901 *) new_libs="$new_libs $deplib" ;;
3902 esac
3903 done
3904 deplibs="$new_libs"
3907 # All the library-specific variables (install_libdir is set above).
3908 library_names=
3909 old_library=
3910 dlname=
3912 # Test again, we may have decided not to build it any more
3913 if test "$build_libtool_libs" = yes; then
3914 if test "$hardcode_into_libs" = yes; then
3915 # Hardcode the library paths
3916 hardcode_libdirs=
3917 dep_rpath=
3918 rpath="$finalize_rpath"
3919 test "$mode" != relink && rpath="$compile_rpath$rpath"
3920 for libdir in $rpath; do
3921 if test -n "$hardcode_libdir_flag_spec"; then
3922 if test -n "$hardcode_libdir_separator"; then
3923 if test -z "$hardcode_libdirs"; then
3924 hardcode_libdirs="$libdir"
3925 else
3926 # Just accumulate the unique libdirs.
3927 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3928 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3931 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3933 esac
3935 else
3936 eval flag=\"$hardcode_libdir_flag_spec\"
3937 dep_rpath="$dep_rpath $flag"
3939 elif test -n "$runpath_var"; then
3940 case "$perm_rpath " in
3941 *" $libdir "*) ;;
3942 *) perm_rpath="$perm_rpath $libdir" ;;
3943 esac
3945 done
3946 # Substitute the hardcoded libdirs into the rpath.
3947 if test -n "$hardcode_libdir_separator" &&
3948 test -n "$hardcode_libdirs"; then
3949 libdir="$hardcode_libdirs"
3950 if test -n "$hardcode_libdir_flag_spec_ld"; then
3951 eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
3952 else
3953 eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3956 if test -n "$runpath_var" && test -n "$perm_rpath"; then
3957 # We should set the runpath_var.
3958 rpath=
3959 for dir in $perm_rpath; do
3960 rpath="$rpath$dir:"
3961 done
3962 eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3964 test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3967 shlibpath="$finalize_shlibpath"
3968 test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3969 if test -n "$shlibpath"; then
3970 eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3973 # Get the real and link names of the library.
3974 eval shared_ext=\"$shrext_cmds\"
3975 eval library_names=\"$library_names_spec\"
3976 set dummy $library_names
3977 realname="$2"
3978 shift; shift
3980 if test -n "$soname_spec"; then
3981 eval soname=\"$soname_spec\"
3982 else
3983 soname="$realname"
3985 if test -z "$dlname"; then
3986 dlname=$soname
3989 lib="$output_objdir/$realname"
3990 linknames=
3991 for link
3993 linknames="$linknames $link"
3994 done
3996 # Use standard objects if they are pic
3997 test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3999 # Prepare the list of exported symbols
4000 if test -z "$export_symbols"; then
4001 if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
4002 $show "generating symbol list for \`$libname.la'"
4003 export_symbols="$output_objdir/$libname.exp"
4004 $run $rm $export_symbols
4005 cmds=$export_symbols_cmds
4006 save_ifs="$IFS"; IFS='~'
4007 for cmd in $cmds; do
4008 IFS="$save_ifs"
4009 eval cmd=\"$cmd\"
4010 if len=`expr "X$cmd" : ".*"` &&
4011 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4012 $show "$cmd"
4013 $run eval "$cmd" || exit $?
4014 skipped_export=false
4015 else
4016 # The command line is too long to execute in one step.
4017 $show "using reloadable object file for export list..."
4018 skipped_export=:
4019 # Break out early, otherwise skipped_export may be
4020 # set to false by a later but shorter cmd.
4021 break
4023 done
4024 IFS="$save_ifs"
4025 if test -n "$export_symbols_regex"; then
4026 $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
4027 $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
4028 $show "$mv \"${export_symbols}T\" \"$export_symbols\""
4029 $run eval '$mv "${export_symbols}T" "$export_symbols"'
4034 if test -n "$export_symbols" && test -n "$include_expsyms"; then
4035 $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
4038 tmp_deplibs=
4039 for test_deplib in $deplibs; do
4040 case " $convenience " in
4041 *" $test_deplib "*) ;;
4043 tmp_deplibs="$tmp_deplibs $test_deplib"
4045 esac
4046 done
4047 deplibs="$tmp_deplibs"
4049 if test -n "$convenience"; then
4050 if test -n "$whole_archive_flag_spec"; then
4051 save_libobjs=$libobjs
4052 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4053 else
4054 gentop="$output_objdir/${outputname}x"
4055 generated="$generated $gentop"
4057 func_extract_archives $gentop $convenience
4058 libobjs="$libobjs $func_extract_archives_result"
4062 if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
4063 eval flag=\"$thread_safe_flag_spec\"
4064 linker_flags="$linker_flags $flag"
4067 # Make a backup of the uninstalled library when relinking
4068 if test "$mode" = relink; then
4069 $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
4072 # Do each of the archive commands.
4073 if test "$module" = yes && test -n "$module_cmds" ; then
4074 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4075 eval test_cmds=\"$module_expsym_cmds\"
4076 cmds=$module_expsym_cmds
4077 else
4078 eval test_cmds=\"$module_cmds\"
4079 cmds=$module_cmds
4081 else
4082 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4083 eval test_cmds=\"$archive_expsym_cmds\"
4084 cmds=$archive_expsym_cmds
4085 else
4086 eval test_cmds=\"$archive_cmds\"
4087 cmds=$archive_cmds
4091 if test "X$skipped_export" != "X:" &&
4092 len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4093 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4095 else
4096 # The command line is too long to link in one step, link piecewise.
4097 $echo "creating reloadable object files..."
4099 # Save the value of $output and $libobjs because we want to
4100 # use them later. If we have whole_archive_flag_spec, we
4101 # want to use save_libobjs as it was before
4102 # whole_archive_flag_spec was expanded, because we can't
4103 # assume the linker understands whole_archive_flag_spec.
4104 # This may have to be revisited, in case too many
4105 # convenience libraries get linked in and end up exceeding
4106 # the spec.
4107 if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
4108 save_libobjs=$libobjs
4110 save_output=$output
4111 output_la=`$echo "X$output" | $Xsed -e "$basename"`
4113 # Clear the reloadable object creation command queue and
4114 # initialize k to one.
4115 test_cmds=
4116 concat_cmds=
4117 objlist=
4118 delfiles=
4119 last_robj=
4121 output=$output_objdir/$output_la-${k}.$objext
4122 # Loop over the list of objects to be linked.
4123 for obj in $save_libobjs
4125 eval test_cmds=\"$reload_cmds $objlist $last_robj\"
4126 if test "X$objlist" = X ||
4127 { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4128 test "$len" -le "$max_cmd_len"; }; then
4129 objlist="$objlist $obj"
4130 else
4131 # The command $test_cmds is almost too long, add a
4132 # command to the queue.
4133 if test "$k" -eq 1 ; then
4134 # The first file doesn't have a previous command to add.
4135 eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
4136 else
4137 # All subsequent reloadable object files will link in
4138 # the last one created.
4139 eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
4141 last_robj=$output_objdir/$output_la-${k}.$objext
4142 k=`expr $k + 1`
4143 output=$output_objdir/$output_la-${k}.$objext
4144 objlist=$obj
4145 len=1
4147 done
4148 # Handle the remaining objects by creating one last
4149 # reloadable object file. All subsequent reloadable object
4150 # files will link in the last one created.
4151 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
4152 eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
4154 if ${skipped_export-false}; then
4155 $show "generating symbol list for \`$libname.la'"
4156 export_symbols="$output_objdir/$libname.exp"
4157 $run $rm $export_symbols
4158 libobjs=$output
4159 # Append the command to create the export file.
4160 eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
4163 # Set up a command to remove the reloadable object files
4164 # after they are used.
4166 while test "$i" -lt "$k"
4168 i=`expr $i + 1`
4169 delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
4170 done
4172 $echo "creating a temporary reloadable object file: $output"
4174 # Loop through the commands generated above and execute them.
4175 save_ifs="$IFS"; IFS='~'
4176 for cmd in $concat_cmds; do
4177 IFS="$save_ifs"
4178 $show "$cmd"
4179 $run eval "$cmd" || exit $?
4180 done
4181 IFS="$save_ifs"
4183 libobjs=$output
4184 # Restore the value of output.
4185 output=$save_output
4187 if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
4188 eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4190 # Expand the library linking commands again to reset the
4191 # value of $libobjs for piecewise linking.
4193 # Do each of the archive commands.
4194 if test "$module" = yes && test -n "$module_cmds" ; then
4195 if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4196 cmds=$module_expsym_cmds
4197 else
4198 cmds=$module_cmds
4200 else
4201 if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4202 cmds=$archive_expsym_cmds
4203 else
4204 cmds=$archive_cmds
4208 # Append the command to remove the reloadable object files
4209 # to the just-reset $cmds.
4210 eval cmds=\"\$cmds~\$rm $delfiles\"
4212 save_ifs="$IFS"; IFS='~'
4213 for cmd in $cmds; do
4214 IFS="$save_ifs"
4215 eval cmd=\"$cmd\"
4216 $show "$cmd"
4217 $run eval "$cmd" || {
4218 lt_exit=$?
4220 # Restore the uninstalled library and exit
4221 if test "$mode" = relink; then
4222 $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
4225 exit $lt_exit
4227 done
4228 IFS="$save_ifs"
4230 # Restore the uninstalled library and exit
4231 if test "$mode" = relink; then
4232 $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
4234 if test -n "$convenience"; then
4235 if test -z "$whole_archive_flag_spec"; then
4236 $show "${rm}r $gentop"
4237 $run ${rm}r "$gentop"
4241 exit $EXIT_SUCCESS
4244 # Create links to the real library.
4245 for linkname in $linknames; do
4246 if test "$realname" != "$linkname"; then
4247 $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
4248 $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
4250 done
4252 # If -module or -export-dynamic was specified, set the dlname.
4253 if test "$module" = yes || test "$export_dynamic" = yes; then
4254 # On all known operating systems, these are identical.
4255 dlname="$soname"
4260 obj)
4261 if test -n "$deplibs"; then
4262 $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
4265 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4266 $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
4269 if test -n "$rpath"; then
4270 $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
4273 if test -n "$xrpath"; then
4274 $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
4277 if test -n "$vinfo"; then
4278 $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
4281 if test -n "$release"; then
4282 $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
4285 case $output in
4286 *.lo)
4287 if test -n "$objs$old_deplibs"; then
4288 $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
4289 exit $EXIT_FAILURE
4291 libobj="$output"
4292 obj=`$echo "X$output" | $Xsed -e "$lo2o"`
4295 libobj=
4296 obj="$output"
4298 esac
4300 # Delete the old objects.
4301 $run $rm $obj $libobj
4303 # Objects from convenience libraries. This assumes
4304 # single-version convenience libraries. Whenever we create
4305 # different ones for PIC/non-PIC, this we'll have to duplicate
4306 # the extraction.
4307 reload_conv_objs=
4308 gentop=
4309 # reload_cmds runs $LD directly, so let us get rid of
4310 # -Wl from whole_archive_flag_spec
4313 if test -n "$convenience"; then
4314 if test -n "$whole_archive_flag_spec"; then
4315 eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
4316 else
4317 gentop="$output_objdir/${obj}x"
4318 generated="$generated $gentop"
4320 func_extract_archives $gentop $convenience
4321 reload_conv_objs="$reload_objs $func_extract_archives_result"
4325 # Create the old-style object.
4326 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
4328 output="$obj"
4329 cmds=$reload_cmds
4330 save_ifs="$IFS"; IFS='~'
4331 for cmd in $cmds; do
4332 IFS="$save_ifs"
4333 eval cmd=\"$cmd\"
4334 $show "$cmd"
4335 $run eval "$cmd" || exit $?
4336 done
4337 IFS="$save_ifs"
4339 # Exit if we aren't doing a library object file.
4340 if test -z "$libobj"; then
4341 if test -n "$gentop"; then
4342 $show "${rm}r $gentop"
4343 $run ${rm}r $gentop
4346 exit $EXIT_SUCCESS
4349 if test "$build_libtool_libs" != yes; then
4350 if test -n "$gentop"; then
4351 $show "${rm}r $gentop"
4352 $run ${rm}r $gentop
4355 # Create an invalid libtool object if no PIC, so that we don't
4356 # accidentally link it into a program.
4357 # $show "echo timestamp > $libobj"
4358 # $run eval "echo timestamp > $libobj" || exit $?
4359 exit $EXIT_SUCCESS
4362 if test -n "$pic_flag" || test "$pic_mode" != default; then
4363 # Only do commands if we really have different PIC objects.
4364 reload_objs="$libobjs $reload_conv_objs"
4365 output="$libobj"
4366 cmds=$reload_cmds
4367 save_ifs="$IFS"; IFS='~'
4368 for cmd in $cmds; do
4369 IFS="$save_ifs"
4370 eval cmd=\"$cmd\"
4371 $show "$cmd"
4372 $run eval "$cmd" || exit $?
4373 done
4374 IFS="$save_ifs"
4377 if test -n "$gentop"; then
4378 $show "${rm}r $gentop"
4379 $run ${rm}r $gentop
4382 exit $EXIT_SUCCESS
4385 prog)
4386 case $host in
4387 *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4388 esac
4389 if test -n "$vinfo"; then
4390 $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4393 if test -n "$release"; then
4394 $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4397 if test "$preload" = yes; then
4398 if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4399 test "$dlopen_self_static" = unknown; then
4400 $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
4404 case $host in
4405 *-*-rhapsody* | *-*-darwin1.[012])
4406 # On Rhapsody replace the C library is the System framework
4407 compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4408 finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4410 esac
4412 case $host in
4413 *darwin*)
4414 # Don't allow lazy linking, it breaks C++ global constructors
4415 if test "$tagname" = CXX ; then
4416 compile_command="$compile_command ${wl}-bind_at_load"
4417 finalize_command="$finalize_command ${wl}-bind_at_load"
4420 esac
4423 # move library search paths that coincide with paths to not yet
4424 # installed libraries to the beginning of the library search list
4425 new_libs=
4426 for path in $notinst_path; do
4427 case " $new_libs " in
4428 *" -L$path/$objdir "*) ;;
4430 case " $compile_deplibs " in
4431 *" -L$path/$objdir "*)
4432 new_libs="$new_libs -L$path/$objdir" ;;
4433 esac
4435 esac
4436 done
4437 for deplib in $compile_deplibs; do
4438 case $deplib in
4439 -L*)
4440 case " $new_libs " in
4441 *" $deplib "*) ;;
4442 *) new_libs="$new_libs $deplib" ;;
4443 esac
4445 *) new_libs="$new_libs $deplib" ;;
4446 esac
4447 done
4448 compile_deplibs="$new_libs"
4451 compile_command="$compile_command $compile_deplibs"
4452 finalize_command="$finalize_command $finalize_deplibs"
4454 if test -n "$rpath$xrpath"; then
4455 # If the user specified any rpath flags, then add them.
4456 for libdir in $rpath $xrpath; do
4457 # This is the magic to use -rpath.
4458 case "$finalize_rpath " in
4459 *" $libdir "*) ;;
4460 *) finalize_rpath="$finalize_rpath $libdir" ;;
4461 esac
4462 done
4465 # Now hardcode the library paths
4466 rpath=
4467 hardcode_libdirs=
4468 for libdir in $compile_rpath $finalize_rpath; do
4469 if test -n "$hardcode_libdir_flag_spec"; then
4470 if test -n "$hardcode_libdir_separator"; then
4471 if test -z "$hardcode_libdirs"; then
4472 hardcode_libdirs="$libdir"
4473 else
4474 # Just accumulate the unique libdirs.
4475 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4476 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4479 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4481 esac
4483 else
4484 eval flag=\"$hardcode_libdir_flag_spec\"
4485 rpath="$rpath $flag"
4487 elif test -n "$runpath_var"; then
4488 case "$perm_rpath " in
4489 *" $libdir "*) ;;
4490 *) perm_rpath="$perm_rpath $libdir" ;;
4491 esac
4493 case $host in
4494 *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4495 testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
4496 case :$dllsearchpath: in
4497 *":$libdir:"*) ;;
4498 *) dllsearchpath="$dllsearchpath:$libdir";;
4499 esac
4500 case :$dllsearchpath: in
4501 *":$testbindir:"*) ;;
4502 *) dllsearchpath="$dllsearchpath:$testbindir";;
4503 esac
4505 esac
4506 done
4507 # Substitute the hardcoded libdirs into the rpath.
4508 if test -n "$hardcode_libdir_separator" &&
4509 test -n "$hardcode_libdirs"; then
4510 libdir="$hardcode_libdirs"
4511 eval rpath=\" $hardcode_libdir_flag_spec\"
4513 compile_rpath="$rpath"
4515 rpath=
4516 hardcode_libdirs=
4517 for libdir in $finalize_rpath; do
4518 if test -n "$hardcode_libdir_flag_spec"; then
4519 if test -n "$hardcode_libdir_separator"; then
4520 if test -z "$hardcode_libdirs"; then
4521 hardcode_libdirs="$libdir"
4522 else
4523 # Just accumulate the unique libdirs.
4524 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4525 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4528 hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4530 esac
4532 else
4533 eval flag=\"$hardcode_libdir_flag_spec\"
4534 rpath="$rpath $flag"
4536 elif test -n "$runpath_var"; then
4537 case "$finalize_perm_rpath " in
4538 *" $libdir "*) ;;
4539 *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
4540 esac
4542 done
4543 # Substitute the hardcoded libdirs into the rpath.
4544 if test -n "$hardcode_libdir_separator" &&
4545 test -n "$hardcode_libdirs"; then
4546 libdir="$hardcode_libdirs"
4547 eval rpath=\" $hardcode_libdir_flag_spec\"
4549 finalize_rpath="$rpath"
4551 if test -n "$libobjs" && test "$build_old_libs" = yes; then
4552 # Transform all the library objects into standard objects.
4553 compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4554 finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4557 dlsyms=
4558 if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4559 if test -n "$NM" && test -n "$global_symbol_pipe"; then
4560 dlsyms="${outputname}S.c"
4561 else
4562 $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4566 if test -n "$dlsyms"; then
4567 case $dlsyms in
4568 "") ;;
4569 *.c)
4570 # Discover the nlist of each of the dlfiles.
4571 nlist="$output_objdir/${outputname}.nm"
4573 $show "$rm $nlist ${nlist}S ${nlist}T"
4574 $run $rm "$nlist" "${nlist}S" "${nlist}T"
4576 # Parse the name list into a source file.
4577 $show "creating $output_objdir/$dlsyms"
4579 test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4580 /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4581 /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
4583 #ifdef __cplusplus
4584 extern \"C\" {
4585 #endif
4587 /* Prevent the only kind of declaration conflicts we can make. */
4588 #define lt_preloaded_symbols some_other_symbol
4590 /* External symbol declarations for the compiler. */\
4593 if test "$dlself" = yes; then
4594 $show "generating symbol list for \`$output'"
4596 test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
4598 # Add our own program objects to the symbol list.
4599 progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4600 for arg in $progfiles; do
4601 $show "extracting global C symbols from \`$arg'"
4602 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4603 done
4605 if test -n "$exclude_expsyms"; then
4606 $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4607 $run eval '$mv "$nlist"T "$nlist"'
4610 if test -n "$export_symbols_regex"; then
4611 $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4612 $run eval '$mv "$nlist"T "$nlist"'
4615 # Prepare the list of exported symbols
4616 if test -z "$export_symbols"; then
4617 export_symbols="$output_objdir/$outputname.exp"
4618 $run $rm $export_symbols
4619 $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4620 case $host in
4621 *cygwin* | *mingw* )
4622 $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4623 $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4625 esac
4626 else
4627 $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4628 $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4629 $run eval 'mv "$nlist"T "$nlist"'
4630 case $host in
4631 *cygwin* | *mingw* )
4632 $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4633 $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4635 esac
4639 for arg in $dlprefiles; do
4640 $show "extracting global C symbols from \`$arg'"
4641 name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4642 $run eval '$echo ": $name " >> "$nlist"'
4643 $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4644 done
4646 if test -z "$run"; then
4647 # Make sure we have at least an empty file.
4648 test -f "$nlist" || : > "$nlist"
4650 if test -n "$exclude_expsyms"; then
4651 $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4652 $mv "$nlist"T "$nlist"
4655 # Try sorting and uniquifying the output.
4656 if grep -v "^: " < "$nlist" |
4657 if sort -k 3 </dev/null >/dev/null 2>&1; then
4658 sort -k 3
4659 else
4660 sort +2
4661 fi |
4662 uniq > "$nlist"S; then
4664 else
4665 grep -v "^: " < "$nlist" > "$nlist"S
4668 if test -f "$nlist"S; then
4669 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4670 else
4671 $echo '/* NONE */' >> "$output_objdir/$dlsyms"
4674 $echo >> "$output_objdir/$dlsyms" "\
4676 #undef lt_preloaded_symbols
4678 #if defined (__STDC__) && __STDC__
4679 # define lt_ptr void *
4680 #else
4681 # define lt_ptr char *
4682 # define const
4683 #endif
4685 /* The mapping between symbol names and symbols. */
4688 case $host in
4689 *cygwin* | *mingw* )
4690 $echo >> "$output_objdir/$dlsyms" "\
4691 /* DATA imports from DLLs on WIN32 can't be const, because
4692 runtime relocations are performed -- see ld's documentation
4693 on pseudo-relocs */
4694 struct {
4698 $echo >> "$output_objdir/$dlsyms" "\
4699 const struct {
4702 esac
4705 $echo >> "$output_objdir/$dlsyms" "\
4706 const char *name;
4707 lt_ptr address;
4709 lt_preloaded_symbols[] =
4713 eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
4715 $echo >> "$output_objdir/$dlsyms" "\
4716 {0, (lt_ptr) 0}
4719 /* This works around a problem in FreeBSD linker */
4720 #ifdef FREEBSD_WORKAROUND
4721 static const void *lt_preloaded_setup() {
4722 return lt_preloaded_symbols;
4724 #endif
4726 #ifdef __cplusplus
4728 #endif\
4732 pic_flag_for_symtable=
4733 case $host in
4734 # compiling the symbol table file with pic_flag works around
4735 # a FreeBSD bug that causes programs to crash when -lm is
4736 # linked before any other PIC object. But we must not use
4737 # pic_flag when linking with -static. The problem exists in
4738 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4739 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4740 case "$compile_command " in
4741 *" -static "*) ;;
4742 *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4743 esac;;
4744 *-*-hpux*)
4745 case "$compile_command " in
4746 *" -static "*) ;;
4747 *) pic_flag_for_symtable=" $pic_flag";;
4748 esac
4749 esac
4751 # Now compile the dynamic symbol file.
4752 $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4753 $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
4755 # Clean up the generated files.
4756 $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4757 $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
4759 # Transform the symbol file into the correct name.
4760 case $host in
4761 *cygwin* | *mingw* )
4762 if test -f "$output_objdir/${outputname}.def" ; then
4763 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
4764 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
4765 else
4766 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4767 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4771 compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4772 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4774 esac
4776 *-*-freebsd*)
4777 # FreeBSD doesn't need this...
4780 $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4781 exit $EXIT_FAILURE
4783 esac
4784 else
4785 # We keep going just in case the user didn't refer to
4786 # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
4787 # really was required.
4789 # Nullify the symbol file.
4790 compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
4791 finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
4794 if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4795 # Replace the output file specification.
4796 compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4797 link_command="$compile_command$compile_rpath"
4799 # We have no uninstalled library dependencies, so finalize right now.
4800 $show "$link_command"
4801 $run eval "$link_command"
4802 exit_status=$?
4804 # Delete the generated files.
4805 if test -n "$dlsyms"; then
4806 $show "$rm $output_objdir/${outputname}S.${objext}"
4807 $run $rm "$output_objdir/${outputname}S.${objext}"
4810 exit $exit_status
4813 if test -n "$shlibpath_var"; then
4814 # We should set the shlibpath_var
4815 rpath=
4816 for dir in $temp_rpath; do
4817 case $dir in
4818 [\\/]* | [A-Za-z]:[\\/]*)
4819 # Absolute path.
4820 rpath="$rpath$dir:"
4823 # Relative path: add a thisdir entry.
4824 rpath="$rpath\$thisdir/$dir:"
4826 esac
4827 done
4828 temp_rpath="$rpath"
4831 if test -n "$compile_shlibpath$finalize_shlibpath"; then
4832 compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4834 if test -n "$finalize_shlibpath"; then
4835 finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4838 compile_var=
4839 finalize_var=
4840 if test -n "$runpath_var"; then
4841 if test -n "$perm_rpath"; then
4842 # We should set the runpath_var.
4843 rpath=
4844 for dir in $perm_rpath; do
4845 rpath="$rpath$dir:"
4846 done
4847 compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4849 if test -n "$finalize_perm_rpath"; then
4850 # We should set the runpath_var.
4851 rpath=
4852 for dir in $finalize_perm_rpath; do
4853 rpath="$rpath$dir:"
4854 done
4855 finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4859 if test "$no_install" = yes; then
4860 # We don't need to create a wrapper script.
4861 link_command="$compile_var$compile_command$compile_rpath"
4862 # Replace the output file specification.
4863 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4864 # Delete the old output file.
4865 $run $rm $output
4866 # Link the executable and exit
4867 $show "$link_command"
4868 $run eval "$link_command" || exit $?
4869 exit $EXIT_SUCCESS
4872 if test "$hardcode_action" = relink; then
4873 # Fast installation is not supported
4874 link_command="$compile_var$compile_command$compile_rpath"
4875 relink_command="$finalize_var$finalize_command$finalize_rpath"
4877 $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4878 $echo "$modename: \`$output' will be relinked during installation" 1>&2
4879 else
4880 if test "$fast_install" != no; then
4881 link_command="$finalize_var$compile_command$finalize_rpath"
4882 if test "$fast_install" = yes; then
4883 relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
4884 else
4885 # fast_install is set to needless
4886 relink_command=
4888 else
4889 link_command="$compile_var$compile_command$compile_rpath"
4890 relink_command="$finalize_var$finalize_command$finalize_rpath"
4894 # Replace the output file specification.
4895 link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
4897 # Delete the old output files.
4898 $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
4900 $show "$link_command"
4901 $run eval "$link_command" || exit $?
4903 # Now create the wrapper script.
4904 $show "creating $output"
4906 # Quote the relink command for shipping.
4907 if test -n "$relink_command"; then
4908 # Preserve any variables that may affect compiler behavior
4909 for var in $variables_saved_for_relink; do
4910 if eval test -z \"\${$var+set}\"; then
4911 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4912 elif eval var_value=\$$var; test -z "$var_value"; then
4913 relink_command="$var=; export $var; $relink_command"
4914 else
4915 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4916 relink_command="$var=\"$var_value\"; export $var; $relink_command"
4918 done
4919 relink_command="(cd `pwd`; $relink_command)"
4920 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
4923 # Quote $echo for shipping.
4924 if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
4925 case $progpath in
4926 [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
4927 *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
4928 esac
4929 qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4930 else
4931 qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
4934 # Only actually do things if our run command is non-null.
4935 if test -z "$run"; then
4936 # win32 will think the script is a binary if it has
4937 # a .exe suffix, so we strip it off here.
4938 case $output in
4939 *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
4940 esac
4941 # test for cygwin because mv fails w/o .exe extensions
4942 case $host in
4943 *cygwin*)
4944 exeext=.exe
4945 outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
4946 *) exeext= ;;
4947 esac
4948 case $host in
4949 *cygwin* | *mingw* )
4950 output_name=`basename $output`
4951 output_path=`dirname $output`
4952 cwrappersource="$output_path/$objdir/lt-$output_name.c"
4953 cwrapper="$output_path/$output_name.exe"
4954 $rm $cwrappersource $cwrapper
4955 trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
4957 cat > $cwrappersource <<EOF
4959 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4960 Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4962 The $output program cannot be directly executed until all the libtool
4963 libraries that it depends on are installed.
4965 This wrapper executable should never be moved out of the build directory.
4966 If it is, it will not operate correctly.
4968 Currently, it simply execs the wrapper *script* "/bin/sh $output",
4969 but could eventually absorb all of the scripts functionality and
4970 exec $objdir/$outputname directly.
4973 cat >> $cwrappersource<<"EOF"
4974 #include <stdio.h>
4975 #include <stdlib.h>
4976 #include <unistd.h>
4977 #include <malloc.h>
4978 #include <stdarg.h>
4979 #include <assert.h>
4980 #include <string.h>
4981 #include <ctype.h>
4982 #include <sys/stat.h>
4984 #if defined(PATH_MAX)
4985 # define LT_PATHMAX PATH_MAX
4986 #elif defined(MAXPATHLEN)
4987 # define LT_PATHMAX MAXPATHLEN
4988 #else
4989 # define LT_PATHMAX 1024
4990 #endif
4992 #ifndef DIR_SEPARATOR
4993 # define DIR_SEPARATOR '/'
4994 # define PATH_SEPARATOR ':'
4995 #endif
4997 #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4998 defined (__OS2__)
4999 # define HAVE_DOS_BASED_FILE_SYSTEM
5000 # ifndef DIR_SEPARATOR_2
5001 # define DIR_SEPARATOR_2 '\\'
5002 # endif
5003 # ifndef PATH_SEPARATOR_2
5004 # define PATH_SEPARATOR_2 ';'
5005 # endif
5006 #endif
5008 #ifndef DIR_SEPARATOR_2
5009 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5010 #else /* DIR_SEPARATOR_2 */
5011 # define IS_DIR_SEPARATOR(ch) \
5012 (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5013 #endif /* DIR_SEPARATOR_2 */
5015 #ifndef PATH_SEPARATOR_2
5016 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5017 #else /* PATH_SEPARATOR_2 */
5018 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5019 #endif /* PATH_SEPARATOR_2 */
5021 #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
5022 #define XFREE(stale) do { \
5023 if (stale) { free ((void *) stale); stale = 0; } \
5024 } while (0)
5026 /* -DDEBUG is fairly common in CFLAGS. */
5027 #undef DEBUG
5028 #if defined DEBUGWRAPPER
5029 # define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
5030 #else
5031 # define DEBUG(format, ...)
5032 #endif
5034 const char *program_name = NULL;
5036 void * xmalloc (size_t num);
5037 char * xstrdup (const char *string);
5038 const char * base_name (const char *name);
5039 char * find_executable(const char *wrapper);
5040 int check_executable(const char *path);
5041 char * strendzap(char *str, const char *pat);
5042 void lt_fatal (const char *message, ...);
5045 main (int argc, char *argv[])
5047 char **newargz;
5048 int i;
5050 program_name = (char *) xstrdup (base_name (argv[0]));
5051 DEBUG("(main) argv[0] : %s\n",argv[0]);
5052 DEBUG("(main) program_name : %s\n",program_name);
5053 newargz = XMALLOC(char *, argc+2);
5056 cat >> $cwrappersource <<EOF
5057 newargz[0] = (char *) xstrdup("$SHELL");
5060 cat >> $cwrappersource <<"EOF"
5061 newargz[1] = find_executable(argv[0]);
5062 if (newargz[1] == NULL)
5063 lt_fatal("Couldn't find %s", argv[0]);
5064 DEBUG("(main) found exe at : %s\n",newargz[1]);
5065 /* we know the script has the same name, without the .exe */
5066 /* so make sure newargz[1] doesn't end in .exe */
5067 strendzap(newargz[1],".exe");
5068 for (i = 1; i < argc; i++)
5069 newargz[i+1] = xstrdup(argv[i]);
5070 newargz[argc+1] = NULL;
5072 for (i=0; i<argc+1; i++)
5074 DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
5080 case $host_os in
5081 mingw*)
5082 cat >> $cwrappersource <<EOF
5083 execv("$SHELL",(char const **)newargz);
5087 cat >> $cwrappersource <<EOF
5088 execv("$SHELL",newargz);
5091 esac
5093 cat >> $cwrappersource <<"EOF"
5094 return 127;
5097 void *
5098 xmalloc (size_t num)
5100 void * p = (void *) malloc (num);
5101 if (!p)
5102 lt_fatal ("Memory exhausted");
5104 return p;
5107 char *
5108 xstrdup (const char *string)
5110 return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
5114 const char *
5115 base_name (const char *name)
5117 const char *base;
5119 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5120 /* Skip over the disk name in MSDOS pathnames. */
5121 if (isalpha ((unsigned char)name[0]) && name[1] == ':')
5122 name += 2;
5123 #endif
5125 for (base = name; *name; name++)
5126 if (IS_DIR_SEPARATOR (*name))
5127 base = name + 1;
5128 return base;
5132 check_executable(const char * path)
5134 struct stat st;
5136 DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
5137 if ((!path) || (!*path))
5138 return 0;
5140 if ((stat (path, &st) >= 0) &&
5142 /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
5143 #if defined (S_IXOTH)
5144 ((st.st_mode & S_IXOTH) == S_IXOTH) ||
5145 #endif
5146 #if defined (S_IXGRP)
5147 ((st.st_mode & S_IXGRP) == S_IXGRP) ||
5148 #endif
5149 ((st.st_mode & S_IXUSR) == S_IXUSR))
5151 return 1;
5152 else
5153 return 0;
5156 /* Searches for the full path of the wrapper. Returns
5157 newly allocated full path name if found, NULL otherwise */
5158 char *
5159 find_executable (const char* wrapper)
5161 int has_slash = 0;
5162 const char* p;
5163 const char* p_next;
5164 /* static buffer for getcwd */
5165 char tmp[LT_PATHMAX + 1];
5166 int tmp_len;
5167 char* concat_name;
5169 DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
5171 if ((wrapper == NULL) || (*wrapper == '\0'))
5172 return NULL;
5174 /* Absolute path? */
5175 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5176 if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
5178 concat_name = xstrdup (wrapper);
5179 if (check_executable(concat_name))
5180 return concat_name;
5181 XFREE(concat_name);
5183 else
5185 #endif
5186 if (IS_DIR_SEPARATOR (wrapper[0]))
5188 concat_name = xstrdup (wrapper);
5189 if (check_executable(concat_name))
5190 return concat_name;
5191 XFREE(concat_name);
5193 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5195 #endif
5197 for (p = wrapper; *p; p++)
5198 if (*p == '/')
5200 has_slash = 1;
5201 break;
5203 if (!has_slash)
5205 /* no slashes; search PATH */
5206 const char* path = getenv ("PATH");
5207 if (path != NULL)
5209 for (p = path; *p; p = p_next)
5211 const char* q;
5212 size_t p_len;
5213 for (q = p; *q; q++)
5214 if (IS_PATH_SEPARATOR(*q))
5215 break;
5216 p_len = q - p;
5217 p_next = (*q == '\0' ? q : q + 1);
5218 if (p_len == 0)
5220 /* empty path: current directory */
5221 if (getcwd (tmp, LT_PATHMAX) == NULL)
5222 lt_fatal ("getcwd failed");
5223 tmp_len = strlen(tmp);
5224 concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5225 memcpy (concat_name, tmp, tmp_len);
5226 concat_name[tmp_len] = '/';
5227 strcpy (concat_name + tmp_len + 1, wrapper);
5229 else
5231 concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
5232 memcpy (concat_name, p, p_len);
5233 concat_name[p_len] = '/';
5234 strcpy (concat_name + p_len + 1, wrapper);
5236 if (check_executable(concat_name))
5237 return concat_name;
5238 XFREE(concat_name);
5241 /* not found in PATH; assume curdir */
5243 /* Relative path | not found in path: prepend cwd */
5244 if (getcwd (tmp, LT_PATHMAX) == NULL)
5245 lt_fatal ("getcwd failed");
5246 tmp_len = strlen(tmp);
5247 concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5248 memcpy (concat_name, tmp, tmp_len);
5249 concat_name[tmp_len] = '/';
5250 strcpy (concat_name + tmp_len + 1, wrapper);
5252 if (check_executable(concat_name))
5253 return concat_name;
5254 XFREE(concat_name);
5255 return NULL;
5258 char *
5259 strendzap(char *str, const char *pat)
5261 size_t len, patlen;
5263 assert(str != NULL);
5264 assert(pat != NULL);
5266 len = strlen(str);
5267 patlen = strlen(pat);
5269 if (patlen <= len)
5271 str += len - patlen;
5272 if (strcmp(str, pat) == 0)
5273 *str = '\0';
5275 return str;
5278 static void
5279 lt_error_core (int exit_status, const char * mode,
5280 const char * message, va_list ap)
5282 fprintf (stderr, "%s: %s: ", program_name, mode);
5283 vfprintf (stderr, message, ap);
5284 fprintf (stderr, ".\n");
5286 if (exit_status >= 0)
5287 exit (exit_status);
5290 void
5291 lt_fatal (const char *message, ...)
5293 va_list ap;
5294 va_start (ap, message);
5295 lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
5296 va_end (ap);
5299 # we should really use a build-platform specific compiler
5300 # here, but OTOH, the wrappers (shell script and this C one)
5301 # are only useful if you want to execute the "real" binary.
5302 # Since the "real" binary is built for $host, then this
5303 # wrapper might as well be built for $host, too.
5304 $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
5306 esac
5307 $rm $output
5308 trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
5310 $echo > $output "\
5311 #! $SHELL
5313 # $output - temporary wrapper script for $objdir/$outputname
5314 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5316 # The $output program cannot be directly executed until all the libtool
5317 # libraries that it depends on are installed.
5319 # This wrapper script should never be moved out of the build directory.
5320 # If it is, it will not operate correctly.
5322 # Sed substitution that helps us do robust quoting. It backslashifies
5323 # metacharacters that are still active within double-quoted strings.
5324 Xsed='${SED} -e 1s/^X//'
5325 sed_quote_subst='$sed_quote_subst'
5327 # The HP-UX ksh and POSIX shell print the target directory to stdout
5328 # if CDPATH is set.
5329 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5331 relink_command=\"$relink_command\"
5333 # This environment variable determines our operation mode.
5334 if test \"\$libtool_install_magic\" = \"$magic\"; then
5335 # install mode needs the following variable:
5336 notinst_deplibs='$notinst_deplibs'
5337 else
5338 # When we are sourced in execute mode, \$file and \$echo are already set.
5339 if test \"\$libtool_execute_magic\" != \"$magic\"; then
5340 echo=\"$qecho\"
5341 file=\"\$0\"
5342 # Make sure echo works.
5343 if test \"X\$1\" = X--no-reexec; then
5344 # Discard the --no-reexec flag, and continue.
5345 shift
5346 elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
5347 # Yippee, \$echo works!
5349 else
5350 # Restart under the correct shell, and then maybe \$echo will work.
5351 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
5355 $echo >> $output "\
5357 # Find the directory that this script lives in.
5358 thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
5359 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
5361 # Follow symbolic links until we get to the real thisdir.
5362 file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
5363 while test -n \"\$file\"; do
5364 destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
5366 # If there was a directory component, then change thisdir.
5367 if test \"x\$destdir\" != \"x\$file\"; then
5368 case \"\$destdir\" in
5369 [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5370 *) thisdir=\"\$thisdir/\$destdir\" ;;
5371 esac
5374 file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
5375 file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
5376 done
5378 # Try to get the absolute directory name.
5379 absdir=\`cd \"\$thisdir\" && pwd\`
5380 test -n \"\$absdir\" && thisdir=\"\$absdir\"
5383 if test "$fast_install" = yes; then
5384 $echo >> $output "\
5385 program=lt-'$outputname'$exeext
5386 progdir=\"\$thisdir/$objdir\"
5388 if test ! -f \"\$progdir/\$program\" || \\
5389 { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
5390 test \"X\$file\" != \"X\$progdir/\$program\"; }; then
5392 file=\"\$\$-\$program\"
5394 if test ! -d \"\$progdir\"; then
5395 $mkdir \"\$progdir\"
5396 else
5397 $rm \"\$progdir/\$file\"
5400 $echo >> $output "\
5402 # relink executable if necessary
5403 if test -n \"\$relink_command\"; then
5404 if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5405 else
5406 $echo \"\$relink_command_output\" >&2
5407 $rm \"\$progdir/\$file\"
5408 exit $EXIT_FAILURE
5412 $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5413 { $rm \"\$progdir/\$program\";
5414 $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5415 $rm \"\$progdir/\$file\"
5417 else
5418 $echo >> $output "\
5419 program='$outputname'
5420 progdir=\"\$thisdir/$objdir\"
5424 $echo >> $output "\
5426 if test -f \"\$progdir/\$program\"; then"
5428 # Export our shlibpath_var if we have one.
5429 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5430 $echo >> $output "\
5431 # Add our own library path to $shlibpath_var
5432 $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5434 # Some systems cannot cope with colon-terminated $shlibpath_var
5435 # The second colon is a workaround for a bug in BeOS R4 sed
5436 $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
5438 export $shlibpath_var
5442 # fixup the dll searchpath if we need to.
5443 if test -n "$dllsearchpath"; then
5444 $echo >> $output "\
5445 # Add the dll search path components to the executable PATH
5446 PATH=$dllsearchpath:\$PATH
5450 $echo >> $output "\
5451 if test \"\$libtool_execute_magic\" != \"$magic\"; then
5452 # Run the actual program with our arguments.
5454 case $host in
5455 # Backslashes separate directories on plain windows
5456 *-*-mingw | *-*-os2*)
5457 $echo >> $output "\
5458 exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5463 $echo >> $output "\
5464 exec \"\$progdir/\$program\" \${1+\"\$@\"}
5467 esac
5468 $echo >> $output "\
5469 \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
5470 exit $EXIT_FAILURE
5472 else
5473 # The program doesn't exist.
5474 \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
5475 \$echo \"This script is just a wrapper for \$program.\" 1>&2
5476 $echo \"See the $PACKAGE documentation for more information.\" 1>&2
5477 exit $EXIT_FAILURE
5481 chmod +x $output
5483 exit $EXIT_SUCCESS
5485 esac
5487 # See if we need to build an old-fashioned archive.
5488 for oldlib in $oldlibs; do
5490 if test "$build_libtool_libs" = convenience; then
5491 oldobjs="$libobjs_save"
5492 addlibs="$convenience"
5493 build_libtool_libs=no
5494 else
5495 if test "$build_libtool_libs" = module; then
5496 oldobjs="$libobjs_save"
5497 build_libtool_libs=no
5498 else
5499 oldobjs="$old_deplibs $non_pic_objects"
5501 addlibs="$old_convenience"
5504 if test -n "$addlibs"; then
5505 gentop="$output_objdir/${outputname}x"
5506 generated="$generated $gentop"
5508 func_extract_archives $gentop $addlibs
5509 oldobjs="$oldobjs $func_extract_archives_result"
5512 # Do each command in the archive commands.
5513 if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5514 cmds=$old_archive_from_new_cmds
5515 else
5516 # POSIX demands no paths to be encoded in archives. We have
5517 # to avoid creating archives with duplicate basenames if we
5518 # might have to extract them afterwards, e.g., when creating a
5519 # static archive out of a convenience library, or when linking
5520 # the entirety of a libtool archive into another (currently
5521 # not supported by libtool).
5522 if (for obj in $oldobjs
5524 $echo "X$obj" | $Xsed -e 's%^.*/%%'
5525 done | sort | sort -uc >/dev/null 2>&1); then
5527 else
5528 $echo "copying selected object files to avoid basename conflicts..."
5530 if test -z "$gentop"; then
5531 gentop="$output_objdir/${outputname}x"
5532 generated="$generated $gentop"
5534 $show "${rm}r $gentop"
5535 $run ${rm}r "$gentop"
5536 $show "$mkdir $gentop"
5537 $run $mkdir "$gentop"
5538 exit_status=$?
5539 if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
5540 exit $exit_status
5544 save_oldobjs=$oldobjs
5545 oldobjs=
5546 counter=1
5547 for obj in $save_oldobjs
5549 objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
5550 case " $oldobjs " in
5551 " ") oldobjs=$obj ;;
5552 *[\ /]"$objbase "*)
5553 while :; do
5554 # Make sure we don't pick an alternate name that also
5555 # overlaps.
5556 newobj=lt$counter-$objbase
5557 counter=`expr $counter + 1`
5558 case " $oldobjs " in
5559 *[\ /]"$newobj "*) ;;
5560 *) if test ! -f "$gentop/$newobj"; then break; fi ;;
5561 esac
5562 done
5563 $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
5564 $run ln "$obj" "$gentop/$newobj" ||
5565 $run cp "$obj" "$gentop/$newobj"
5566 oldobjs="$oldobjs $gentop/$newobj"
5568 *) oldobjs="$oldobjs $obj" ;;
5569 esac
5570 done
5573 eval cmds=\"$old_archive_cmds\"
5575 if len=`expr "X$cmds" : ".*"` &&
5576 test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5577 cmds=$old_archive_cmds
5578 else
5579 # the command line is too long to link in one step, link in parts
5580 $echo "using piecewise archive linking..."
5581 save_RANLIB=$RANLIB
5582 RANLIB=:
5583 objlist=
5584 concat_cmds=
5585 save_oldobjs=$oldobjs
5587 # Is there a better way of finding the last object in the list?
5588 for obj in $save_oldobjs
5590 last_oldobj=$obj
5591 done
5592 for obj in $save_oldobjs
5594 oldobjs="$objlist $obj"
5595 objlist="$objlist $obj"
5596 eval test_cmds=\"$old_archive_cmds\"
5597 if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
5598 test "$len" -le "$max_cmd_len"; then
5600 else
5601 # the above command should be used before it gets too long
5602 oldobjs=$objlist
5603 if test "$obj" = "$last_oldobj" ; then
5604 RANLIB=$save_RANLIB
5606 test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5607 eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5608 objlist=
5610 done
5611 RANLIB=$save_RANLIB
5612 oldobjs=$objlist
5613 if test "X$oldobjs" = "X" ; then
5614 eval cmds=\"\$concat_cmds\"
5615 else
5616 eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
5620 save_ifs="$IFS"; IFS='~'
5621 for cmd in $cmds; do
5622 eval cmd=\"$cmd\"
5623 IFS="$save_ifs"
5624 $show "$cmd"
5625 $run eval "$cmd" || exit $?
5626 done
5627 IFS="$save_ifs"
5628 done
5630 if test -n "$generated"; then
5631 $show "${rm}r$generated"
5632 $run ${rm}r$generated
5635 # Now create the libtool archive.
5636 case $output in
5637 *.la)
5638 old_library=
5639 test "$build_old_libs" = yes && old_library="$libname.$libext"
5640 $show "creating $output"
5642 # Preserve any variables that may affect compiler behavior
5643 for var in $variables_saved_for_relink; do
5644 if eval test -z \"\${$var+set}\"; then
5645 relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5646 elif eval var_value=\$$var; test -z "$var_value"; then
5647 relink_command="$var=; export $var; $relink_command"
5648 else
5649 var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5650 relink_command="$var=\"$var_value\"; export $var; $relink_command"
5652 done
5653 # Quote the link command for shipping.
5654 relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5655 relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
5656 if test "$hardcode_automatic" = yes ; then
5657 relink_command=
5661 # Only create the output if not a dry run.
5662 if test -z "$run"; then
5663 for installed in no yes; do
5664 if test "$installed" = yes; then
5665 if test -z "$install_libdir"; then
5666 break
5668 output="$output_objdir/$outputname"i
5669 # Replace all uninstalled libtool libraries with the installed ones
5670 newdependency_libs=
5671 for deplib in $dependency_libs; do
5672 case $deplib in
5673 *.la)
5674 name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5675 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5676 if test -z "$libdir"; then
5677 $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5678 exit $EXIT_FAILURE
5680 newdependency_libs="$newdependency_libs $libdir/$name"
5682 *) newdependency_libs="$newdependency_libs $deplib" ;;
5683 esac
5684 done
5685 dependency_libs="$newdependency_libs"
5686 newdlfiles=
5687 for lib in $dlfiles; do
5688 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5689 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5690 if test -z "$libdir"; then
5691 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5692 exit $EXIT_FAILURE
5694 newdlfiles="$newdlfiles $libdir/$name"
5695 done
5696 dlfiles="$newdlfiles"
5697 newdlprefiles=
5698 for lib in $dlprefiles; do
5699 name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5700 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5701 if test -z "$libdir"; then
5702 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5703 exit $EXIT_FAILURE
5705 newdlprefiles="$newdlprefiles $libdir/$name"
5706 done
5707 dlprefiles="$newdlprefiles"
5708 else
5709 newdlfiles=
5710 for lib in $dlfiles; do
5711 case $lib in
5712 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5713 *) abs=`pwd`"/$lib" ;;
5714 esac
5715 newdlfiles="$newdlfiles $abs"
5716 done
5717 dlfiles="$newdlfiles"
5718 newdlprefiles=
5719 for lib in $dlprefiles; do
5720 case $lib in
5721 [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5722 *) abs=`pwd`"/$lib" ;;
5723 esac
5724 newdlprefiles="$newdlprefiles $abs"
5725 done
5726 dlprefiles="$newdlprefiles"
5728 $rm $output
5729 # place dlname in correct position for cygwin
5730 tdlname=$dlname
5731 case $host,$output,$installed,$module,$dlname in
5732 *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5733 esac
5734 $echo > $output "\
5735 # $outputname - a libtool library file
5736 # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5738 # Please DO NOT delete this file!
5739 # It is necessary for linking the library.
5741 # The name that we can dlopen(3).
5742 dlname='$tdlname'
5744 # Names of this library.
5745 library_names='$library_names'
5747 # The name of the static archive.
5748 old_library='$old_library'
5750 # Libraries that this one depends upon.
5751 dependency_libs='$dependency_libs'
5753 # Version information for $libname.
5754 current=$current
5755 age=$age
5756 revision=$revision
5758 # Is this an already installed library?
5759 installed=$installed
5761 # Should we warn about portability when linking against -modules?
5762 shouldnotlink=$module
5764 # Files to dlopen/dlpreopen
5765 dlopen='$dlfiles'
5766 dlpreopen='$dlprefiles'
5768 # Directory that this library needs to be installed in:
5769 libdir='$install_libdir'"
5770 if test "$installed" = no && test "$need_relink" = yes; then
5771 $echo >> $output "\
5772 relink_command=\"$relink_command\""
5774 done
5777 # Do a symbolic link so that the libtool archive can be found in
5778 # LD_LIBRARY_PATH before the program is installed.
5779 $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5780 $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
5782 esac
5783 exit $EXIT_SUCCESS
5786 # libtool install mode
5787 install)
5788 modename="$modename: install"
5790 # There may be an optional sh(1) argument at the beginning of
5791 # install_prog (especially on Windows NT).
5792 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5793 # Allow the use of GNU shtool's install command.
5794 $echo "X$nonopt" | grep shtool > /dev/null; then
5795 # Aesthetically quote it.
5796 arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5797 case $arg in
5798 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5799 arg="\"$arg\""
5801 esac
5802 install_prog="$arg "
5803 arg="$1"
5804 shift
5805 else
5806 install_prog=
5807 arg=$nonopt
5810 # The real first argument should be the name of the installation program.
5811 # Aesthetically quote it.
5812 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5813 case $arg in
5814 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5815 arg="\"$arg\""
5817 esac
5818 install_prog="$install_prog$arg"
5820 # We need to accept at least all the BSD install flags.
5821 dest=
5822 files=
5823 opts=
5824 prev=
5825 install_type=
5826 isdir=no
5827 stripme=
5828 for arg
5830 if test -n "$dest"; then
5831 files="$files $dest"
5832 dest=$arg
5833 continue
5836 case $arg in
5837 -d) isdir=yes ;;
5838 -f)
5839 case " $install_prog " in
5840 *[\\\ /]cp\ *) ;;
5841 *) prev=$arg ;;
5842 esac
5844 -g | -m | -o) prev=$arg ;;
5846 stripme=" -s"
5847 continue
5852 # If the previous option needed an argument, then skip it.
5853 if test -n "$prev"; then
5854 prev=
5855 else
5856 dest=$arg
5857 continue
5860 esac
5862 # Aesthetically quote the argument.
5863 arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5864 case $arg in
5865 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5866 arg="\"$arg\""
5868 esac
5869 install_prog="$install_prog $arg"
5870 done
5872 if test -z "$install_prog"; then
5873 $echo "$modename: you must specify an install program" 1>&2
5874 $echo "$help" 1>&2
5875 exit $EXIT_FAILURE
5878 if test -n "$prev"; then
5879 $echo "$modename: the \`$prev' option requires an argument" 1>&2
5880 $echo "$help" 1>&2
5881 exit $EXIT_FAILURE
5884 if test -z "$files"; then
5885 if test -z "$dest"; then
5886 $echo "$modename: no file or destination specified" 1>&2
5887 else
5888 $echo "$modename: you must specify a destination" 1>&2
5890 $echo "$help" 1>&2
5891 exit $EXIT_FAILURE
5894 # Strip any trailing slash from the destination.
5895 dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5897 # Check to see that the destination is a directory.
5898 test -d "$dest" && isdir=yes
5899 if test "$isdir" = yes; then
5900 destdir="$dest"
5901 destname=
5902 else
5903 destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5904 test "X$destdir" = "X$dest" && destdir=.
5905 destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5907 # Not a directory, so check to see that there is only one file specified.
5908 set dummy $files
5909 if test "$#" -gt 2; then
5910 $echo "$modename: \`$dest' is not a directory" 1>&2
5911 $echo "$help" 1>&2
5912 exit $EXIT_FAILURE
5915 case $destdir in
5916 [\\/]* | [A-Za-z]:[\\/]*) ;;
5918 for file in $files; do
5919 case $file in
5920 *.lo) ;;
5922 $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5923 $echo "$help" 1>&2
5924 exit $EXIT_FAILURE
5926 esac
5927 done
5929 esac
5931 # This variable tells wrapper scripts just to set variables rather
5932 # than running their programs.
5933 libtool_install_magic="$magic"
5935 staticlibs=
5936 future_libdirs=
5937 current_libdirs=
5938 for file in $files; do
5940 # Do each installation.
5941 case $file in
5942 *.$libext)
5943 # Do the static libraries later.
5944 staticlibs="$staticlibs $file"
5947 *.la)
5948 # Check to see that this really is a libtool archive.
5949 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5950 else
5951 $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5952 $echo "$help" 1>&2
5953 exit $EXIT_FAILURE
5956 library_names=
5957 old_library=
5958 relink_command=
5959 # If there is no directory component, then add one.
5960 case $file in
5961 */* | *\\*) . $file ;;
5962 *) . ./$file ;;
5963 esac
5965 # Add the libdir to current_libdirs if it is the destination.
5966 if test "X$destdir" = "X$libdir"; then
5967 case "$current_libdirs " in
5968 *" $libdir "*) ;;
5969 *) current_libdirs="$current_libdirs $libdir" ;;
5970 esac
5971 else
5972 # Note the libdir as a future libdir.
5973 case "$future_libdirs " in
5974 *" $libdir "*) ;;
5975 *) future_libdirs="$future_libdirs $libdir" ;;
5976 esac
5979 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
5980 test "X$dir" = "X$file/" && dir=
5981 dir="$dir$objdir"
5983 if test -n "$relink_command"; then
5984 # Determine the prefix the user has applied to our future dir.
5985 inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
5987 # Don't allow the user to place us outside of our expected
5988 # location b/c this prevents finding dependent libraries that
5989 # are installed to the same prefix.
5990 # At present, this check doesn't affect windows .dll's that
5991 # are installed into $libdir/../bin (currently, that works fine)
5992 # but it's something to keep an eye on.
5993 if test "$inst_prefix_dir" = "$destdir"; then
5994 $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
5995 exit $EXIT_FAILURE
5998 if test -n "$inst_prefix_dir"; then
5999 # Stick the inst_prefix_dir data into the link command.
6000 relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
6001 else
6002 relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
6005 $echo "$modename: warning: relinking \`$file'" 1>&2
6006 $show "$relink_command"
6007 if $run eval "$relink_command"; then :
6008 else
6009 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6010 exit $EXIT_FAILURE
6014 # See the names of the shared library.
6015 set dummy $library_names
6016 if test -n "$2"; then
6017 realname="$2"
6018 shift
6019 shift
6021 srcname="$realname"
6022 test -n "$relink_command" && srcname="$realname"T
6024 # Install the shared library and build the symlinks.
6025 $show "$install_prog $dir/$srcname $destdir/$realname"
6026 $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
6027 if test -n "$stripme" && test -n "$striplib"; then
6028 $show "$striplib $destdir/$realname"
6029 $run eval "$striplib $destdir/$realname" || exit $?
6032 if test "$#" -gt 0; then
6033 # Delete the old symlinks, and create new ones.
6034 # Try `ln -sf' first, because the `ln' binary might depend on
6035 # the symlink we replace! Solaris /bin/ln does not understand -f,
6036 # so we also need to try rm && ln -s.
6037 for linkname
6039 if test "$linkname" != "$realname"; then
6040 $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6041 $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6043 done
6046 # Do each command in the postinstall commands.
6047 lib="$destdir/$realname"
6048 cmds=$postinstall_cmds
6049 save_ifs="$IFS"; IFS='~'
6050 for cmd in $cmds; do
6051 IFS="$save_ifs"
6052 eval cmd=\"$cmd\"
6053 $show "$cmd"
6054 $run eval "$cmd" || {
6055 lt_exit=$?
6057 # Restore the uninstalled library and exit
6058 if test "$mode" = relink; then
6059 $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
6062 exit $lt_exit
6064 done
6065 IFS="$save_ifs"
6068 # Install the pseudo-library for information purposes.
6069 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6070 instname="$dir/$name"i
6071 $show "$install_prog $instname $destdir/$name"
6072 $run eval "$install_prog $instname $destdir/$name" || exit $?
6074 # Maybe install the static library, too.
6075 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
6078 *.lo)
6079 # Install (i.e. copy) a libtool object.
6081 # Figure out destination file name, if it wasn't already specified.
6082 if test -n "$destname"; then
6083 destfile="$destdir/$destname"
6084 else
6085 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6086 destfile="$destdir/$destfile"
6089 # Deduce the name of the destination old-style object file.
6090 case $destfile in
6091 *.lo)
6092 staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
6094 *.$objext)
6095 staticdest="$destfile"
6096 destfile=
6099 $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
6100 $echo "$help" 1>&2
6101 exit $EXIT_FAILURE
6103 esac
6105 # Install the libtool object if requested.
6106 if test -n "$destfile"; then
6107 $show "$install_prog $file $destfile"
6108 $run eval "$install_prog $file $destfile" || exit $?
6111 # Install the old object if enabled.
6112 if test "$build_old_libs" = yes; then
6113 # Deduce the name of the old-style object file.
6114 staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
6116 $show "$install_prog $staticobj $staticdest"
6117 $run eval "$install_prog \$staticobj \$staticdest" || exit $?
6119 exit $EXIT_SUCCESS
6123 # Figure out destination file name, if it wasn't already specified.
6124 if test -n "$destname"; then
6125 destfile="$destdir/$destname"
6126 else
6127 destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6128 destfile="$destdir/$destfile"
6131 # If the file is missing, and there is a .exe on the end, strip it
6132 # because it is most likely a libtool script we actually want to
6133 # install
6134 stripped_ext=""
6135 case $file in
6136 *.exe)
6137 if test ! -f "$file"; then
6138 file=`$echo $file|${SED} 's,.exe$,,'`
6139 stripped_ext=".exe"
6142 esac
6144 # Do a test to see if this is really a libtool program.
6145 case $host in
6146 *cygwin*|*mingw*)
6147 wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
6150 wrapper=$file
6152 esac
6153 if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
6154 notinst_deplibs=
6155 relink_command=
6157 # Note that it is not necessary on cygwin/mingw to append a dot to
6158 # foo even if both foo and FILE.exe exist: automatic-append-.exe
6159 # behavior happens only for exec(3), not for open(2)! Also, sourcing
6160 # `FILE.' does not work on cygwin managed mounts.
6162 # If there is no directory component, then add one.
6163 case $wrapper in
6164 */* | *\\*) . ${wrapper} ;;
6165 *) . ./${wrapper} ;;
6166 esac
6168 # Check the variables that should have been set.
6169 if test -z "$notinst_deplibs"; then
6170 $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
6171 exit $EXIT_FAILURE
6174 finalize=yes
6175 for lib in $notinst_deplibs; do
6176 # Check to see that each library is installed.
6177 libdir=
6178 if test -f "$lib"; then
6179 # If there is no directory component, then add one.
6180 case $lib in
6181 */* | *\\*) . $lib ;;
6182 *) . ./$lib ;;
6183 esac
6185 libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
6186 if test -n "$libdir" && test ! -f "$libfile"; then
6187 $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
6188 finalize=no
6190 done
6192 relink_command=
6193 # Note that it is not necessary on cygwin/mingw to append a dot to
6194 # foo even if both foo and FILE.exe exist: automatic-append-.exe
6195 # behavior happens only for exec(3), not for open(2)! Also, sourcing
6196 # `FILE.' does not work on cygwin managed mounts.
6198 # If there is no directory component, then add one.
6199 case $wrapper in
6200 */* | *\\*) . ${wrapper} ;;
6201 *) . ./${wrapper} ;;
6202 esac
6204 outputname=
6205 if test "$fast_install" = no && test -n "$relink_command"; then
6206 if test "$finalize" = yes && test -z "$run"; then
6207 tmpdir=`func_mktempdir`
6208 file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
6209 outputname="$tmpdir/$file"
6210 # Replace the output file specification.
6211 relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
6213 $show "$relink_command"
6214 if $run eval "$relink_command"; then :
6215 else
6216 $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6217 ${rm}r "$tmpdir"
6218 continue
6220 file="$outputname"
6221 else
6222 $echo "$modename: warning: cannot relink \`$file'" 1>&2
6224 else
6225 # Install the binary that we compiled earlier.
6226 file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
6230 # remove .exe since cygwin /usr/bin/install will append another
6231 # one anyway
6232 case $install_prog,$host in
6233 */usr/bin/install*,*cygwin*)
6234 case $file:$destfile in
6235 *.exe:*.exe)
6236 # this is ok
6238 *.exe:*)
6239 destfile=$destfile.exe
6241 *:*.exe)
6242 destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
6244 esac
6246 esac
6247 $show "$install_prog$stripme $file $destfile"
6248 $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
6249 test -n "$outputname" && ${rm}r "$tmpdir"
6251 esac
6252 done
6254 for file in $staticlibs; do
6255 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6257 # Set up the ranlib parameters.
6258 oldlib="$destdir/$name"
6260 $show "$install_prog $file $oldlib"
6261 $run eval "$install_prog \$file \$oldlib" || exit $?
6263 if test -n "$stripme" && test -n "$old_striplib"; then
6264 $show "$old_striplib $oldlib"
6265 $run eval "$old_striplib $oldlib" || exit $?
6268 # Do each command in the postinstall commands.
6269 cmds=$old_postinstall_cmds
6270 save_ifs="$IFS"; IFS='~'
6271 for cmd in $cmds; do
6272 IFS="$save_ifs"
6273 eval cmd=\"$cmd\"
6274 $show "$cmd"
6275 $run eval "$cmd" || exit $?
6276 done
6277 IFS="$save_ifs"
6278 done
6280 if test -n "$future_libdirs"; then
6281 $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6284 if test -n "$current_libdirs"; then
6285 # Maybe just do a dry run.
6286 test -n "$run" && current_libdirs=" -n$current_libdirs"
6287 exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
6288 else
6289 exit $EXIT_SUCCESS
6293 # libtool finish mode
6294 finish)
6295 modename="$modename: finish"
6296 libdirs="$nonopt"
6297 admincmds=
6299 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
6300 for dir
6302 libdirs="$libdirs $dir"
6303 done
6305 for libdir in $libdirs; do
6306 if test -n "$finish_cmds"; then
6307 # Do each command in the finish commands.
6308 cmds=$finish_cmds
6309 save_ifs="$IFS"; IFS='~'
6310 for cmd in $cmds; do
6311 IFS="$save_ifs"
6312 eval cmd=\"$cmd\"
6313 $show "$cmd"
6314 $run eval "$cmd" || admincmds="$admincmds
6315 $cmd"
6316 done
6317 IFS="$save_ifs"
6319 if test -n "$finish_eval"; then
6320 # Do the single finish_eval.
6321 eval cmds=\"$finish_eval\"
6322 $run eval "$cmds" || admincmds="$admincmds
6323 $cmds"
6325 done
6328 # Exit here if they wanted silent mode.
6329 test "$show" = : && exit $EXIT_SUCCESS
6331 $echo "X----------------------------------------------------------------------" | $Xsed
6332 $echo "Libraries have been installed in:"
6333 for libdir in $libdirs; do
6334 $echo " $libdir"
6335 done
6336 $echo
6337 $echo "If you ever happen to want to link against installed libraries"
6338 $echo "in a given directory, LIBDIR, you must either use libtool, and"
6339 $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
6340 $echo "flag during linking and do at least one of the following:"
6341 if test -n "$shlibpath_var"; then
6342 $echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
6343 $echo " during execution"
6345 if test -n "$runpath_var"; then
6346 $echo " - add LIBDIR to the \`$runpath_var' environment variable"
6347 $echo " during linking"
6349 if test -n "$hardcode_libdir_flag_spec"; then
6350 libdir=LIBDIR
6351 eval flag=\"$hardcode_libdir_flag_spec\"
6353 $echo " - use the \`$flag' linker flag"
6355 if test -n "$admincmds"; then
6356 $echo " - have your system administrator run these commands:$admincmds"
6358 if test -f /etc/ld.so.conf; then
6359 $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
6361 $echo
6362 $echo "See any operating system documentation about shared libraries for"
6363 $echo "more information, such as the ld(1) and ld.so(8) manual pages."
6364 $echo "X----------------------------------------------------------------------" | $Xsed
6365 exit $EXIT_SUCCESS
6368 # libtool execute mode
6369 execute)
6370 modename="$modename: execute"
6372 # The first argument is the command name.
6373 cmd="$nonopt"
6374 if test -z "$cmd"; then
6375 $echo "$modename: you must specify a COMMAND" 1>&2
6376 $echo "$help"
6377 exit $EXIT_FAILURE
6380 # Handle -dlopen flags immediately.
6381 for file in $execute_dlfiles; do
6382 if test ! -f "$file"; then
6383 $echo "$modename: \`$file' is not a file" 1>&2
6384 $echo "$help" 1>&2
6385 exit $EXIT_FAILURE
6388 dir=
6389 case $file in
6390 *.la)
6391 # Check to see that this really is a libtool archive.
6392 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
6393 else
6394 $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
6395 $echo "$help" 1>&2
6396 exit $EXIT_FAILURE
6399 # Read the libtool library.
6400 dlname=
6401 library_names=
6403 # If there is no directory component, then add one.
6404 case $file in
6405 */* | *\\*) . $file ;;
6406 *) . ./$file ;;
6407 esac
6409 # Skip this library if it cannot be dlopened.
6410 if test -z "$dlname"; then
6411 # Warn if it was a shared library.
6412 test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
6413 continue
6416 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6417 test "X$dir" = "X$file" && dir=.
6419 if test -f "$dir/$objdir/$dlname"; then
6420 dir="$dir/$objdir"
6421 else
6422 $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
6423 exit $EXIT_FAILURE
6427 *.lo)
6428 # Just add the directory containing the .lo file.
6429 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6430 test "X$dir" = "X$file" && dir=.
6434 $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
6435 continue
6437 esac
6439 # Get the absolute pathname.
6440 absdir=`cd "$dir" && pwd`
6441 test -n "$absdir" && dir="$absdir"
6443 # Now add the directory to shlibpath_var.
6444 if eval "test -z \"\$$shlibpath_var\""; then
6445 eval "$shlibpath_var=\"\$dir\""
6446 else
6447 eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6449 done
6451 # This variable tells wrapper scripts just to set shlibpath_var
6452 # rather than running their programs.
6453 libtool_execute_magic="$magic"
6455 # Check if any of the arguments is a wrapper script.
6456 args=
6457 for file
6459 case $file in
6460 -*) ;;
6462 # Do a test to see if this is really a libtool program.
6463 if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6464 # If there is no directory component, then add one.
6465 case $file in
6466 */* | *\\*) . $file ;;
6467 *) . ./$file ;;
6468 esac
6470 # Transform arg to wrapped name.
6471 file="$progdir/$program"
6474 esac
6475 # Quote arguments (to preserve shell metacharacters).
6476 file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6477 args="$args \"$file\""
6478 done
6480 if test -z "$run"; then
6481 if test -n "$shlibpath_var"; then
6482 # Export the shlibpath_var.
6483 eval "export $shlibpath_var"
6486 # Restore saved environment variables
6487 if test "${save_LC_ALL+set}" = set; then
6488 LC_ALL="$save_LC_ALL"; export LC_ALL
6490 if test "${save_LANG+set}" = set; then
6491 LANG="$save_LANG"; export LANG
6494 # Now prepare to actually exec the command.
6495 exec_cmd="\$cmd$args"
6496 else
6497 # Display what would be done.
6498 if test -n "$shlibpath_var"; then
6499 eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6500 $echo "export $shlibpath_var"
6502 $echo "$cmd$args"
6503 exit $EXIT_SUCCESS
6507 # libtool clean and uninstall mode
6508 clean | uninstall)
6509 modename="$modename: $mode"
6510 rm="$nonopt"
6511 files=
6512 rmforce=
6513 exit_status=0
6515 # This variable tells wrapper scripts just to set variables rather
6516 # than running their programs.
6517 libtool_install_magic="$magic"
6519 for arg
6521 case $arg in
6522 -f) rm="$rm $arg"; rmforce=yes ;;
6523 -*) rm="$rm $arg" ;;
6524 *) files="$files $arg" ;;
6525 esac
6526 done
6528 if test -z "$rm"; then
6529 $echo "$modename: you must specify an RM program" 1>&2
6530 $echo "$help" 1>&2
6531 exit $EXIT_FAILURE
6534 rmdirs=
6536 origobjdir="$objdir"
6537 for file in $files; do
6538 dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6539 if test "X$dir" = "X$file"; then
6540 dir=.
6541 objdir="$origobjdir"
6542 else
6543 objdir="$dir/$origobjdir"
6545 name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6546 test "$mode" = uninstall && objdir="$dir"
6548 # Remember objdir for removal later, being careful to avoid duplicates
6549 if test "$mode" = clean; then
6550 case " $rmdirs " in
6551 *" $objdir "*) ;;
6552 *) rmdirs="$rmdirs $objdir" ;;
6553 esac
6556 # Don't error if the file doesn't exist and rm -f was used.
6557 if (test -L "$file") >/dev/null 2>&1 \
6558 || (test -h "$file") >/dev/null 2>&1 \
6559 || test -f "$file"; then
6561 elif test -d "$file"; then
6562 exit_status=1
6563 continue
6564 elif test "$rmforce" = yes; then
6565 continue
6568 rmfiles="$file"
6570 case $name in
6571 *.la)
6572 # Possibly a libtool archive, so verify it.
6573 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6574 . $dir/$name
6576 # Delete the libtool libraries and symlinks.
6577 for n in $library_names; do
6578 rmfiles="$rmfiles $objdir/$n"
6579 done
6580 test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
6582 case "$mode" in
6583 clean)
6584 case " $library_names " in
6585 # " " in the beginning catches empty $dlname
6586 *" $dlname "*) ;;
6587 *) rmfiles="$rmfiles $objdir/$dlname" ;;
6588 esac
6589 test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
6591 uninstall)
6592 if test -n "$library_names"; then
6593 # Do each command in the postuninstall commands.
6594 cmds=$postuninstall_cmds
6595 save_ifs="$IFS"; IFS='~'
6596 for cmd in $cmds; do
6597 IFS="$save_ifs"
6598 eval cmd=\"$cmd\"
6599 $show "$cmd"
6600 $run eval "$cmd"
6601 if test "$?" -ne 0 && test "$rmforce" != yes; then
6602 exit_status=1
6604 done
6605 IFS="$save_ifs"
6608 if test -n "$old_library"; then
6609 # Do each command in the old_postuninstall commands.
6610 cmds=$old_postuninstall_cmds
6611 save_ifs="$IFS"; IFS='~'
6612 for cmd in $cmds; do
6613 IFS="$save_ifs"
6614 eval cmd=\"$cmd\"
6615 $show "$cmd"
6616 $run eval "$cmd"
6617 if test "$?" -ne 0 && test "$rmforce" != yes; then
6618 exit_status=1
6620 done
6621 IFS="$save_ifs"
6623 # FIXME: should reinstall the best remaining shared library.
6625 esac
6629 *.lo)
6630 # Possibly a libtool object, so verify it.
6631 if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6633 # Read the .lo file
6634 . $dir/$name
6636 # Add PIC object to the list of files to remove.
6637 if test -n "$pic_object" \
6638 && test "$pic_object" != none; then
6639 rmfiles="$rmfiles $dir/$pic_object"
6642 # Add non-PIC object to the list of files to remove.
6643 if test -n "$non_pic_object" \
6644 && test "$non_pic_object" != none; then
6645 rmfiles="$rmfiles $dir/$non_pic_object"
6651 if test "$mode" = clean ; then
6652 noexename=$name
6653 case $file in
6654 *.exe)
6655 file=`$echo $file|${SED} 's,.exe$,,'`
6656 noexename=`$echo $name|${SED} 's,.exe$,,'`
6657 # $file with .exe has already been added to rmfiles,
6658 # add $file without .exe
6659 rmfiles="$rmfiles $file"
6661 esac
6662 # Do a test to see if this is a libtool program.
6663 if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6664 relink_command=
6665 . $dir/$noexename
6667 # note $name still contains .exe if it was in $file originally
6668 # as does the version of $file that was added into $rmfiles
6669 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
6670 if test "$fast_install" = yes && test -n "$relink_command"; then
6671 rmfiles="$rmfiles $objdir/lt-$name"
6673 if test "X$noexename" != "X$name" ; then
6674 rmfiles="$rmfiles $objdir/lt-${noexename}.c"
6679 esac
6680 $show "$rm $rmfiles"
6681 $run $rm $rmfiles || exit_status=1
6682 done
6683 objdir="$origobjdir"
6685 # Try to remove the ${objdir}s in the directories where we deleted files
6686 for dir in $rmdirs; do
6687 if test -d "$dir"; then
6688 $show "rmdir $dir"
6689 $run rmdir $dir >/dev/null 2>&1
6691 done
6693 exit $exit_status
6697 $echo "$modename: you must specify a MODE" 1>&2
6698 $echo "$generic_help" 1>&2
6699 exit $EXIT_FAILURE
6701 esac
6703 if test -z "$exec_cmd"; then
6704 $echo "$modename: invalid operation mode \`$mode'" 1>&2
6705 $echo "$generic_help" 1>&2
6706 exit $EXIT_FAILURE
6708 fi # test -z "$show_help"
6710 if test -n "$exec_cmd"; then
6711 eval exec $exec_cmd
6712 exit $EXIT_FAILURE
6715 # We need to display help for each of the modes.
6716 case $mode in
6717 "") $echo \
6718 "Usage: $modename [OPTION]... [MODE-ARG]...
6720 Provide generalized library-building support services.
6722 --config show all configuration variables
6723 --debug enable verbose shell tracing
6724 -n, --dry-run display commands without modifying any files
6725 --features display basic configuration information and exit
6726 --finish same as \`--mode=finish'
6727 --help display this help message and exit
6728 --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
6729 --quiet same as \`--silent'
6730 --silent don't print informational messages
6731 --tag=TAG use configuration variables from tag TAG
6732 --version print version information
6734 MODE must be one of the following:
6736 clean remove files from the build directory
6737 compile compile a source file into a libtool object
6738 execute automatically set library path, then run a program
6739 finish complete the installation of libtool libraries
6740 install install libraries or executables
6741 link create a library or an executable
6742 uninstall remove libraries from an installed directory
6744 MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
6745 a more detailed description of MODE.
6747 Report bugs to <bug-libtool@gnu.org>."
6748 exit $EXIT_SUCCESS
6751 clean)
6752 $echo \
6753 "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6755 Remove files from the build directory.
6757 RM is the name of the program to use to delete files associated with each FILE
6758 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6759 to RM.
6761 If FILE is a libtool library, object or program, all the files associated
6762 with it are deleted. Otherwise, only FILE itself is deleted using RM."
6765 compile)
6766 $echo \
6767 "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6769 Compile a source file into a libtool library object.
6771 This mode accepts the following additional options:
6773 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
6774 -prefer-pic try to building PIC objects only
6775 -prefer-non-pic try to building non-PIC objects only
6776 -static always build a \`.o' file suitable for static linking
6778 COMPILE-COMMAND is a command to be used in creating a \`standard' object file
6779 from the given SOURCEFILE.
6781 The output file name is determined by removing the directory component from
6782 SOURCEFILE, then substituting the C source code suffix \`.c' with the
6783 library object suffix, \`.lo'."
6786 execute)
6787 $echo \
6788 "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6790 Automatically set library path, then run a program.
6792 This mode accepts the following additional options:
6794 -dlopen FILE add the directory containing FILE to the library path
6796 This mode sets the library path environment variable according to \`-dlopen'
6797 flags.
6799 If any of the ARGS are libtool executable wrappers, then they are translated
6800 into their corresponding uninstalled binary, and any of their required library
6801 directories are added to the library path.
6803 Then, COMMAND is executed, with ARGS as arguments."
6806 finish)
6807 $echo \
6808 "Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6810 Complete the installation of libtool libraries.
6812 Each LIBDIR is a directory that contains libtool libraries.
6814 The commands that this mode executes may require superuser privileges. Use
6815 the \`--dry-run' option if you just want to see what would be executed."
6818 install)
6819 $echo \
6820 "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6822 Install executables or libraries.
6824 INSTALL-COMMAND is the installation command. The first component should be
6825 either the \`install' or \`cp' program.
6827 The rest of the components are interpreted as arguments to that command (only
6828 BSD-compatible install options are recognized)."
6831 link)
6832 $echo \
6833 "Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6835 Link object files or libraries together to form another library, or to
6836 create an executable program.
6838 LINK-COMMAND is a command using the C compiler that you would use to create
6839 a program from several object files.
6841 The following components of LINK-COMMAND are treated specially:
6843 -all-static do not do any dynamic linking at all
6844 -avoid-version do not add a version suffix if possible
6845 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
6846 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
6847 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6848 -export-symbols SYMFILE
6849 try to export only the symbols listed in SYMFILE
6850 -export-symbols-regex REGEX
6851 try to export only the symbols matching REGEX
6852 -LLIBDIR search LIBDIR for required installed libraries
6853 -lNAME OUTPUT-FILE requires the installed library libNAME
6854 -module build a library that can dlopened
6855 -no-fast-install disable the fast-install mode
6856 -no-install link a not-installable executable
6857 -no-undefined declare that a library does not refer to external symbols
6858 -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
6859 -objectlist FILE Use a list of object files found in FILE to specify objects
6860 -precious-files-regex REGEX
6861 don't remove output files matching REGEX
6862 -release RELEASE specify package release information
6863 -rpath LIBDIR the created library will eventually be installed in LIBDIR
6864 -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
6865 -static do not do any dynamic linking of libtool libraries
6866 -version-info CURRENT[:REVISION[:AGE]]
6867 specify library version info [each variable defaults to 0]
6869 All other options (arguments beginning with \`-') are ignored.
6871 Every other argument is treated as a filename. Files ending in \`.la' are
6872 treated as uninstalled libtool libraries, other files are standard or library
6873 object files.
6875 If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6876 only library objects (\`.lo' files) may be specified, and \`-rpath' is
6877 required, except when creating a convenience library.
6879 If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6880 using \`ar' and \`ranlib', or on Windows using \`lib'.
6882 If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6883 is created, otherwise an executable program is created."
6886 uninstall)
6887 $echo \
6888 "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6890 Remove libraries from an installation directory.
6892 RM is the name of the program to use to delete files associated with each FILE
6893 (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6894 to RM.
6896 If FILE is a libtool library, all the files associated with it are deleted.
6897 Otherwise, only FILE itself is deleted using RM."
6901 $echo "$modename: invalid operation mode \`$mode'" 1>&2
6902 $echo "$help" 1>&2
6903 exit $EXIT_FAILURE
6905 esac
6907 $echo
6908 $echo "Try \`$modename --help' for more information about other modes."
6910 exit $?
6912 # The TAGs below are defined such that we never get into a situation
6913 # in which we disable both kinds of libraries. Given conflicting
6914 # choices, we go for a static library, that is the most portable,
6915 # since we can't tell whether shared libraries were disabled because
6916 # the user asked for that or because the platform doesn't support
6917 # them. This is particularly important on AIX, because we don't
6918 # support having both static and shared libraries enabled at the same
6919 # time on that platform, so we default to a shared-only configuration.
6920 # If a disable-shared tag is given, we'll fallback to a static-only
6921 # configuration. But we'll never go from static-only to shared-only.
6923 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
6924 disable_libs=shared
6925 # ### END LIBTOOL TAG CONFIG: disable-shared
6927 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
6928 disable_libs=static
6929 # ### END LIBTOOL TAG CONFIG: disable-static
6931 # Local Variables:
6932 # mode:shell-script
6933 # sh-indentation:2
6934 # End: