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