1
# ltmain.sh - Provide generalized library-building support services.
2
# NOTE: Changing this file will not affect anything until you rerun configure.
4
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
5
# Free Software Foundation, Inc.
6
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
8
# This program is free software; you can redistribute it and/or modify
9
# it under the terms of the GNU General Public License as published by
10
# the Free Software Foundation; either version 2 of the License, or
11
# (at your option) any later version.
13
# This program is distributed in the hope that it will be useful, but
14
# WITHOUT ANY WARRANTY; without even the implied warranty of
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
# General Public License for more details.
18
# You should have received a copy of the GNU General Public License
19
# along with this program; if not, write to the Free Software
20
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22
# As a special exception to the GNU General Public License, if you
23
# distribute this file as part of a program that contains a
24
# configuration script generated by Autoconf, you may include it under
25
# the same distribution terms that you use for the rest of that program.
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
36
# define SED for historic ltconfig's generated by Libtool 1.3
37
test -z "$SED" && SED=sed
39
# The name of this program:
40
progname=`echo "$progpath" | $SED $basename`
50
TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
52
# See if we are running on zsh, and set the options which allow our
53
# commands through without removal of \ escapes.
54
if test -n "${ZSH_VERSION+set}" ; then
57
# Same for EGREP, and just to be sure, do LTCC as well
58
if test "X$EGREP" = X ; then
61
if test "X$LTCC" = X ; then
65
# Check that we have a working $echo.
66
if test "X$1" = X--no-reexec; then
67
# Discard the --no-reexec flag, and continue.
69
elif test "X$1" = X--fallback-echo; then
70
# Avoid inline document here, it may be left over
72
elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
73
# Yippee, $echo works!
76
# Restart under the correct shell, and then maybe $echo will work.
77
exec $SHELL "$progpath" --no-reexec ${1+"$@"}
80
if test "X$1" = X--fallback-echo; then
81
# used as fallback echo
90
help="Try \`$progname --help' for more information."
91
magic="%%%MAGIC variable%%%"
96
# Sed substitution that helps us do robust quoting. It backslashifies
97
# metacharacters that are still active within double-quoted strings.
98
Xsed="${SED}"' -e 1s/^X//'
99
sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
100
# test EBCDIC or ASCII
101
case `echo X|tr X '\101'` in
102
A) # ASCII based system
103
# \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
105
NL2SP='tr \015\012 \040\040'
107
*) # EBCDIC based system
109
NL2SP='tr \r\n \100\100'
114
# Only set LANG and LC_ALL to C if already set.
115
# These must not be set unconditionally because not all systems understand
116
# e.g. LANG=C (notably SCO).
117
# We save the old values to restore during execute mode.
118
if test "${LC_ALL+set}" = set; then
119
save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
121
if test "${LANG+set}" = set; then
122
save_LANG="$LANG"; LANG=C; export LANG
125
# Make sure IFS has a sensible default
130
if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
131
$echo "$modename: not configured to build any kind of library" 1>&2
132
$echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
147
lo2o="s/\\.lo\$/.${objext}/"
148
o2lo="s/\\.${objext}\$/.lo/"
150
if test -z "$max_cmd_len"; then
155
# If test is not a shell built-in, we'll probably end up computing a
156
# maximum length that is only half of the actual maximum length, but
158
while (test "X"`$SHELL $0 --fallback-echo "X$testring" 2>/dev/null` \
159
= "XX$testring") >/dev/null 2>&1 &&
160
new_result=`expr "X$testring" : ".*" 2>&1` &&
161
max_cmd_len="$new_result" &&
162
test "$i" != 17 # 1/2 MB should be enough
165
testring="$testring$testring"
168
# Add a significant safety factor because C++ compilers can tack on massive
169
# amounts of additional arguments before passing them to the linker.
170
# It appears as though 1/2 is a usable value.
171
max_cmd_len=`expr $max_cmd_len \/ 2`
174
#####################################
175
# Shell function definitions:
176
# This seems to be the best place for them
178
# func_mktempdir [string]
179
# Make a temporary directory that won't clash with other running
180
# libtool processes, and avoids race conditions if possible. If
181
# given, STRING is the basename for that directory.
184
my_template="${TMPDIR-/tmp}/${1-$progname}"
186
if test "$run" = ":"; then
187
# Return a directory name, but don't create it in dry-run mode
188
my_tmpdir="${my_template}-$$"
191
# If mktemp works, use that first and foremost
192
my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
194
if test ! -d "$my_tmpdir"; then
195
# Failing that, at least try and use $RANDOM to avoid a race
196
my_tmpdir="${my_template}-${RANDOM-0}$$"
198
save_mktempdir_umask=`umask`
201
umask $save_mktempdir_umask
204
# If we're not in dry-run mode, bomb out on failure
205
test -d "$my_tmpdir" || {
206
$echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
211
$echo "X$my_tmpdir" | $Xsed
215
# func_win32_libid arg
216
# return the library type of file 'arg'
218
# Need a lot of goo to handle *both* DLLs and import libs
219
# Has to be a shell function in order to 'eat' the argument
220
# that is supplied when $file_magic_command is called.
223
win32_libid_type="unknown"
224
win32_fileres=`file -L $1 2>/dev/null`
225
case $win32_fileres in
226
*ar\ archive\ import\ library*) # definitely import
227
win32_libid_type="x86 archive import"
229
*ar\ archive*) # could be an import, or static
230
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
231
$EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
232
win32_nmres=`eval $NM -f posix -A $1 | \
233
$SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
235
import*) win32_libid_type="x86 archive import";;
236
*) win32_libid_type="x86 archive static";;
241
win32_libid_type="x86 DLL"
243
*executable*) # but shell scripts are "executable" too...
244
case $win32_fileres in
245
*MS\ Windows\ PE\ Intel*)
246
win32_libid_type="x86 DLL"
251
$echo $win32_libid_type
256
# Infer tagged configuration to use if any are available and
257
# if one wasn't chosen via the "--tag" command line option.
258
# Only attempt this if the compiler in the base compile
259
# command doesn't match the default compiler.
260
# arg is usually of the form 'gcc ...'
263
if test -n "$available_tags" && test -z "$tagname"; then
267
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
271
CC_quoted="$CC_quoted $arg"
274
# Blanks in the command may have been stripped by the calling shell,
275
# but not from the CC environment variable when configure was run.
276
" $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
277
# Blanks at the start of $base_compile will cause this to fail
278
# if we don't check for them as well.
280
for z in $available_tags; do
281
if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
282
# Evaluate the configuration.
283
eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
286
# Double-quote args containing other shell metacharacters.
288
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
292
CC_quoted="$CC_quoted $arg"
294
# user sometimes does CC=<HOST>-gcc so we need to match that to 'gcc'
295
trimedcc=`echo ${CC} | $SED -e "s/${host}-//g"`
296
# and sometimes libtool has CC=<HOST>-gcc but user does CC=gcc
297
extendcc=${host}-${CC}
298
# and sometimes libtool has CC=<OLDHOST>-gcc but user has CC=<NEWHOST>-gcc
299
# (Gentoo-specific hack because we always export $CHOST)
300
mungedcc=${CHOST-${host}}-${trimedcc}
302
"cc "* | " cc "* | "${host}-cc "* | " ${host}-cc "*|\
303
"gcc "* | " gcc "* | "${host}-gcc "* | " ${host}-gcc "*)
306
"$trimedcc "* | " $trimedcc "* | "`$echo $trimedcc` "* | " `$echo $trimedcc` "*|\
307
"$extendcc "* | " $extendcc "* | "`$echo $extendcc` "* | " `$echo $extendcc` "*|\
308
"$mungedcc "* | " $mungedcc "* | "`$echo $mungedcc` "* | " `$echo $mungedcc` "*|\
309
" $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
310
# The compiler in the base compile command matches
311
# the one in the tagged configuration.
312
# Assume this is the tagged configuration we want.
319
# If $tagname still isn't set, then no tagged configuration
320
# was found and let the user know that the "--tag" command
321
# line option must be used.
322
if test -z "$tagname"; then
323
$echo "$modename: unable to infer tagged configuration"
324
$echo "$modename: specify a tag with \`--tag'" 1>&2
327
# $echo "$modename: using $tagname tagged configuration"
335
# func_extract_an_archive dir oldlib
336
func_extract_an_archive ()
338
f_ex_an_ar_dir="$1"; shift
339
f_ex_an_ar_oldlib="$1"
341
$show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
342
$run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
343
if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
346
$echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
351
# func_extract_archives gentop oldlib ...
352
func_extract_archives ()
354
my_gentop="$1"; shift
362
$show "${rm}r $my_gentop"
363
$run ${rm}r "$my_gentop"
364
$show "$mkdir $my_gentop"
365
$run $mkdir "$my_gentop"
367
if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
371
for my_xlib in $my_oldlibs; do
372
# Extract the objects.
374
[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
375
*) my_xabs=`pwd`"/$my_xlib" ;;
377
my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
378
my_xdir="$my_gentop/$my_xlib"
380
$show "${rm}r $my_xdir"
381
$run ${rm}r "$my_xdir"
382
$show "$mkdir $my_xdir"
383
$run $mkdir "$my_xdir"
385
if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
390
$show "Extracting $my_xabs"
391
# Do not bother doing anything if just a dry run
392
if test -z "$run"; then
393
darwin_orig_dir=`pwd`
394
cd $my_xdir || exit $?
395
darwin_archive=$my_xabs
397
darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
398
darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
399
if test -n "$darwin_arches"; then
400
darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
402
$show "$darwin_base_archive has multiple architectures $darwin_arches"
403
for darwin_arch in $darwin_arches ; do
404
mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
405
lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
406
cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
407
func_extract_an_archive "`pwd`" "${darwin_base_archive}"
409
$rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
410
done # $darwin_arches
411
## Okay now we have a bunch of thin objects, gotta fatten them up :)
412
darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
415
for darwin_file in $darwin_filelist; do
416
darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
417
lipo -create -output "$darwin_file" $darwin_files
418
done # $darwin_filelist
420
cd "$darwin_orig_dir"
422
cd "$darwin_orig_dir"
423
func_extract_an_archive "$my_xdir" "$my_xabs"
428
func_extract_an_archive "$my_xdir" "$my_xabs"
431
my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
433
func_extract_archives_result="$my_oldobjs"
435
# End of Shell function definitions
436
#####################################
439
eval std_shrext=\"$shrext_cmds\"
443
# Parse our command line options once, thoroughly.
444
while test "$#" -gt 0
450
-*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
454
# If the previous option needs an argument, assign it.
455
if test -n "$prev"; then
458
execute_dlfiles="$execute_dlfiles $arg"
462
preserve_args="${preserve_args}=$arg"
464
# Check whether tagname contains only valid characters
467
$echo "$progname: invalid tag name: $tagname" 1>&2
474
# Don't test for the "default" C tag, as we know, it's there, but
475
# not specially marked.
478
if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
479
taglist="$taglist $tagname"
480
# Evaluate the configuration.
481
eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
483
$echo "$progname: ignoring unknown tag $tagname" 1>&2
498
# Have we seen a non-optional argument yet?
505
$echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
507
$echo "Copyright (C) 2005 Free Software Foundation, Inc."
508
$echo "This is free software; see the source for copying conditions. There is NO"
509
$echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
514
${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
515
# Now print the configurations for the tags.
516
for tagname in $taglist; do
517
${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
523
$echo "$progname: enabling shell trace mode"
525
preserve_args="$preserve_args $arg"
534
if test "$build_libtool_libs" = yes; then
535
$echo "enable shared libraries"
537
$echo "disable shared libraries"
539
if test "$build_old_libs" = yes; then
540
$echo "enable static libraries"
542
$echo "disable static libraries"
547
--finish) mode="finish" ;;
549
--mode) prevopt="--mode" prev=mode ;;
550
--mode=*) mode="$optarg" ;;
552
--preserve-dup-deps) duplicate_deps="yes" ;;
556
preserve_args="$preserve_args $arg"
562
preserve_args="$preserve_args --tag"
565
set tag "$optarg" ${1+"$@"}
568
preserve_args="$preserve_args --tag"
577
$echo "$modename: unrecognized option \`$arg'" 1>&2
589
if test -n "$prevopt"; then
590
$echo "$modename: option \`$prevopt' requires an argument" 1>&2
595
case $disable_libs in
599
build_libtool_libs=no
603
build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
607
# If this variable is set in any of the actions, the command in it
608
# will be execed at the end. This prevents here-documents from being
609
# left over by shells.
612
if test -z "$show_help"; then
614
# Infer the operation mode.
615
if test -z "$mode"; then
616
$echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
617
$echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
619
*cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
631
*db | *dbx | *strace | *truss)
641
# If we have no mode, but dlfiles were specified, then do execute mode.
642
test -n "$execute_dlfiles" && mode=execute
644
# Just use the default operation mode.
645
if test -z "$mode"; then
646
if test -n "$nonopt"; then
647
$echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
649
$echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
656
# Only execute mode is allowed to have -dlopen flags.
657
if test -n "$execute_dlfiles" && test "$mode" != execute; then
658
$echo "$modename: unrecognized option \`-dlopen'" 1>&2
663
# Change the help message to a mode-specific one.
665
help="Try \`$modename --help --mode=$mode' for more information."
667
# These modes are in order of execution frequency so that they run quickly.
669
# libtool compile mode
671
modename="$modename: compile"
672
# Get the compilation command and the source file.
674
srcfile="$nonopt" # always keep a non-empty value in "srcfile"
685
# do not "continue". Instead, add this to base_compile
697
# Accept any command-line options.
700
if test -n "$libobj" ; then
701
$echo "$modename: you cannot specify \`-o' more than once" 1>&2
708
-static | -prefer-pic | -prefer-non-pic)
719
arg_mode=arg # the next one goes into the "base_compile" arg list
720
continue # The current "srcfile" will either be retained or
721
;; # replaced later. I would guess that would be a bug.
724
args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
726
save_ifs="$IFS"; IFS=','
730
# Double-quote args containing other shell metacharacters.
731
# Many Bourne shells cannot handle close brackets correctly
732
# in scan sets, so we specify it separately.
734
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
738
lastarg="$lastarg $arg"
741
lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
743
# Add the arguments to base_compile.
744
base_compile="$base_compile $lastarg"
749
# Accept the current argument as the source file.
750
# The previous "srcfile" becomes the current argument.
757
esac # case $arg_mode
759
# Aesthetically quote the previous argument.
760
lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
763
# Double-quote args containing other shell metacharacters.
764
# Many Bourne shells cannot handle close brackets correctly
765
# in scan sets, and some SunOS ksh mistreat backslash-escaping
766
# in scan sets (worked around with variable expansion),
767
# and furthermore cannot handle '|' '&' '(' ')' in scan sets
768
# at all, so we specify them separately.
769
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
770
lastarg="\"$lastarg\""
774
base_compile="$base_compile $lastarg"
779
$echo "$modename: you must specify an argument for -Xcompile"
783
$echo "$modename: you must specify a target with \`-o'" 1>&2
787
# Get the name of the library object.
788
[ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
792
# Recognize several different file suffixes.
793
# If the user specifies -o file.o, it is replaced with file.lo
803
*.class) xform=class ;;
808
*.java) xform=java ;;
811
libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
814
*.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
816
$echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
821
func_infer_tag $base_compile
823
for arg in $later; do
842
qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
844
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
845
qlibobj="\"$qlibobj\"" ;;
847
test "X$libobj" != "X$qlibobj" \
848
&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
849
&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
850
objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
851
xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
852
if test "X$xdir" = "X$obj"; then
857
lobj=${xdir}$objdir/$objname
859
if test -z "$base_compile"; then
860
$echo "$modename: you must specify a compilation command" 1>&2
865
# Delete any leftover library objects.
866
if test "$build_old_libs" = yes; then
867
removelist="$obj $lobj $libobj ${libobj}T"
869
removelist="$lobj $libobj ${libobj}T"
873
trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
875
# On Cygwin there's no "real" PIC flag so we must build both object types
877
cygwin* | mingw* | pw32* | os2*)
881
if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
882
# non-PIC code in shared libraries is not supported
886
# Calculate the filename of the output object if compiler does
887
# not support -o with -c
888
if test "$compiler_c_o" = no; then
889
output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
890
lockfile="$output_obj.lock"
891
removelist="$removelist $output_obj $lockfile"
892
trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
899
# Lock this critical section if it is needed
900
# We use this script file to make the link, it avoids creating a new file
901
if test "$need_locks" = yes; then
902
until $run ln "$srcfile" "$lockfile" 2>/dev/null; do
903
$show "Waiting for $lockfile to be removed"
906
elif test "$need_locks" = warn; then
907
if test -f "$lockfile"; then
909
*** ERROR, $lockfile exists and contains:
910
`cat $lockfile 2>/dev/null`
912
This indicates that another process is trying to use the same
913
temporary object file, and libtool could not work around it because
914
your compiler does not support \`-c' and \`-o' together. If you
915
repeat this compilation, it may succeed, by chance, but you had better
916
avoid parallel builds (make -j) in this platform, or get a better
922
$echo "$srcfile" > "$lockfile"
925
if test -n "$fix_srcfile_path"; then
926
eval srcfile=\"$fix_srcfile_path\"
928
qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
930
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
931
qsrcfile="\"$qsrcfile\"" ;;
934
$run $rm "$libobj" "${libobj}T"
936
# Create a libtool object file (analogous to a ".la" file),
937
# but don't create it if we're doing a dry run.
938
test -z "$run" && cat > ${libobj}T <<EOF
939
# $libobj - a libtool object file
940
# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
942
# Please DO NOT delete this file!
943
# It is necessary for linking the library.
945
# Name of the PIC object.
948
# Only build a PIC object if we are building libtool libraries.
949
if test "$build_libtool_libs" = yes; then
950
# Without this assignment, base_compile gets emptied.
951
fbsd_hideous_sh_bug=$base_compile
953
if test "$pic_mode" != no; then
954
command="$base_compile $qsrcfile $pic_flag"
956
# Don't build PIC code
957
command="$base_compile $qsrcfile"
960
if test ! -d "${xdir}$objdir"; then
961
$show "$mkdir ${xdir}$objdir"
962
$run $mkdir ${xdir}$objdir
964
if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
969
if test -z "$output_obj"; then
970
# Place PIC objects in $objdir
971
command="$command -o $lobj"
974
$run $rm "$lobj" "$output_obj"
977
if $run eval "$command"; then :
979
test -n "$output_obj" && $run $rm $removelist
983
if test "$need_locks" = warn &&
984
test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
986
*** ERROR, $lockfile contains:
987
`cat $lockfile 2>/dev/null`
989
but it should contain:
992
This indicates that another process is trying to use the same
993
temporary object file, and libtool could not work around it because
994
your compiler does not support \`-c' and \`-o' together. If you
995
repeat this compilation, it may succeed, by chance, but you had better
996
avoid parallel builds (make -j) in this platform, or get a better
1003
# Just move the object if needed, then go on to compile the next one
1004
if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
1005
$show "$mv $output_obj $lobj"
1006
if $run $mv $output_obj $lobj; then :
1009
$run $rm $removelist
1014
# Append the name of the PIC object to the libtool object file.
1015
test -z "$run" && cat >> ${libobj}T <<EOF
1016
pic_object='$objdir/$objname'
1020
# Allow error messages only from the first compilation.
1021
if test "$suppress_opt" = yes; then
1022
suppress_output=' >/dev/null 2>&1'
1025
# No PIC object so indicate it doesn't exist in the libtool
1027
test -z "$run" && cat >> ${libobj}T <<EOF
1033
# Only build a position-dependent object if we build old libraries.
1034
if test "$build_old_libs" = yes; then
1035
if test "$pic_mode" != yes; then
1036
# Don't build PIC code
1037
command="$base_compile $qsrcfile"
1039
command="$base_compile $qsrcfile $pic_flag"
1041
if test "$compiler_c_o" = yes; then
1042
command="$command -o $obj"
1045
# Suppress compiler output if we already did a PIC compilation.
1046
command="$command$suppress_output"
1047
$run $rm "$obj" "$output_obj"
1049
if $run eval "$command"; then :
1051
$run $rm $removelist
1055
if test "$need_locks" = warn &&
1056
test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
1058
*** ERROR, $lockfile contains:
1059
`cat $lockfile 2>/dev/null`
1061
but it should contain:
1064
This indicates that another process is trying to use the same
1065
temporary object file, and libtool could not work around it because
1066
your compiler does not support \`-c' and \`-o' together. If you
1067
repeat this compilation, it may succeed, by chance, but you had better
1068
avoid parallel builds (make -j) in this platform, or get a better
1071
$run $rm $removelist
1075
# Just move the object if needed
1076
if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
1077
$show "$mv $output_obj $obj"
1078
if $run $mv $output_obj $obj; then :
1081
$run $rm $removelist
1086
# Append the name of the non-PIC object the libtool object file.
1087
# Only append if the libtool object file exists.
1088
test -z "$run" && cat >> ${libobj}T <<EOF
1089
# Name of the non-PIC object.
1090
non_pic_object='$objname'
1094
# Append the name of the non-PIC object the libtool object file.
1095
# Only append if the libtool object file exists.
1096
test -z "$run" && cat >> ${libobj}T <<EOF
1097
# Name of the non-PIC object.
1103
$run $mv "${libobj}T" "${libobj}"
1105
# Unlock the critical section if it was locked
1106
if test "$need_locks" != no; then
1107
$run $rm "$lockfile"
1115
modename="$modename: link"
1117
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1118
# It is impossible to link a dll without this setting, and
1119
# we shouldn't force the makefile maintainer to figure out
1120
# which system we are compiling for in order to pass an extra
1121
# flag for every libtool invocation.
1122
# allow_undefined=no
1124
# FIXME: Unfortunately, there are problems with the above when trying
1125
# to make a dll which has undefined symbols, in which case not
1126
# even a static library is built. For now, we need to specify
1127
# -no-undefined on the libtool link line when we can be certain
1128
# that all symbols are satisfied, otherwise we get a static library.
1135
libtool_args="$nonopt"
1136
base_compile="$nonopt $@"
1137
compile_command="$nonopt"
1138
finalize_command="$nonopt"
1151
lib_search_path=`pwd`
1160
export_symbols_regex=
1168
notinst_path= # paths that contain not-installed libtool libraries
1169
precious_files_regex=
1170
prefer_static_libs=no
1183
func_infer_tag $base_compile
1185
# We need to know -static, to get the right output filenames.
1189
-all-static | -static)
1190
if test "X$arg" = "X-all-static"; then
1191
if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
1192
$echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
1194
if test -n "$link_static_flag"; then
1195
dlopen_self=$dlopen_self_static
1197
prefer_static_libs=yes
1199
if test -z "$pic_flag" && test -n "$link_static_flag"; then
1200
dlopen_self=$dlopen_self_static
1202
prefer_static_libs=built
1204
build_libtool_libs=no
1211
# See if our shared archives depend on static archives.
1212
test -n "$old_archive_from_new_cmds" && build_old_libs=yes
1214
# Go through the arguments, transforming them on the way.
1215
while test "$#" -gt 0; do
1219
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1220
qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
1224
libtool_args="$libtool_args $qarg"
1226
# If the previous option needs an argument, assign it.
1227
if test -n "$prev"; then
1230
compile_command="$compile_command @OUTPUT@"
1231
finalize_command="$finalize_command @OUTPUT@"
1237
if test "$preload" = no; then
1238
# Add the symbol object into the linking commands.
1239
compile_command="$compile_command @SYMFILE@"
1240
finalize_command="$finalize_command @SYMFILE@"
1244
*.la | *.lo) ;; # We handle these cases below.
1246
if test "$dlself" = no; then
1254
if test "$prev" = dlprefiles; then
1256
elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
1266
if test "$prev" = dlfiles; then
1267
dlfiles="$dlfiles $arg"
1269
dlprefiles="$dlprefiles $arg"
1277
export_symbols="$arg"
1278
if test ! -f "$arg"; then
1279
$echo "$modename: symbol file \`$arg' does not exist"
1286
export_symbols_regex="$arg"
1291
inst_prefix_dir="$arg"
1296
precious_files_regex="$arg"
1306
if test -f "$arg"; then
1309
for fil in `cat $save_arg`
1311
# moreargs="$moreargs $fil"
1313
# A libtool-controlled object.
1315
# Check to see that this really is a libtool object.
1316
if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1321
# If there is no directory component, then add one.
1323
*/* | *\\*) . $arg ;;
1327
if test -z "$pic_object" || \
1328
test -z "$non_pic_object" ||
1329
test "$pic_object" = none && \
1330
test "$non_pic_object" = none; then
1331
$echo "$modename: cannot find name of object for \`$arg'" 1>&2
1335
# Extract subdirectory from the argument.
1336
xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1337
if test "X$xdir" = "X$arg"; then
1343
if test "$pic_object" != none; then
1344
# Prepend the subdirectory the object is found in.
1345
pic_object="$xdir$pic_object"
1347
if test "$prev" = dlfiles; then
1348
if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1349
dlfiles="$dlfiles $pic_object"
1353
# If libtool objects are unsupported, then we need to preload.
1358
# CHECK ME: I think I busted this. -Ossama
1359
if test "$prev" = dlprefiles; then
1360
# Preload the old-style object.
1361
dlprefiles="$dlprefiles $pic_object"
1366
libobjs="$libobjs $pic_object"
1371
if test "$non_pic_object" != none; then
1372
# Prepend the subdirectory the object is found in.
1373
non_pic_object="$xdir$non_pic_object"
1375
# A standard non-PIC object
1376
non_pic_objects="$non_pic_objects $non_pic_object"
1377
if test -z "$pic_object" || test "$pic_object" = none ; then
1378
arg="$non_pic_object"
1381
# If the PIC object exists, use it instead.
1382
# $xdir was prepended to $pic_object above.
1383
non_pic_object="$pic_object"
1384
non_pic_objects="$non_pic_objects $non_pic_object"
1387
# Only an error if not doing a dry-run.
1388
if test -z "$run"; then
1389
$echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1394
# Extract subdirectory from the argument.
1395
xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1396
if test "X$xdir" = "X$arg"; then
1402
pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1403
non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1404
libobjs="$libobjs $pic_object"
1405
non_pic_objects="$non_pic_objects $non_pic_object"
1410
$echo "$modename: link input file \`$save_arg' does not exist"
1418
# We need an absolute path.
1420
[\\/]* | [A-Za-z]:[\\/]*) ;;
1422
$echo "$modename: only absolute run-paths are allowed" 1>&2
1426
if test "$prev" = rpath; then
1429
*) rpath="$rpath $arg" ;;
1434
*) xrpath="$xrpath $arg" ;;
1441
compiler_flags="$compiler_flags $qarg"
1443
compile_command="$compile_command $qarg"
1444
finalize_command="$finalize_command $qarg"
1448
linker_flags="$linker_flags $qarg"
1449
compiler_flags="$compiler_flags $wl$qarg"
1451
compile_command="$compile_command $wl$qarg"
1452
finalize_command="$finalize_command $wl$qarg"
1456
linker_flags="$linker_flags $qarg"
1457
compiler_flags="$compiler_flags $qarg"
1459
compile_command="$compile_command $qarg"
1460
finalize_command="$finalize_command $qarg"
1468
darwin_framework|darwin_framework_skip)
1469
test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
1470
compile_command="$compile_command $arg"
1471
finalize_command="$finalize_command $arg"
1476
eval "$prev=\"\$arg\""
1481
fi # test -n "$prev"
1487
if test -n "$link_static_flag"; then
1488
compile_command="$compile_command $link_static_flag"
1489
finalize_command="$finalize_command $link_static_flag"
1495
# FIXME: remove this flag sometime in the future.
1496
$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
1520
-export-symbols | -export-symbols-regex)
1521
if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
1522
$echo "$modename: more than one -exported-symbols argument is not allowed"
1525
if test "X$arg" = "X-export-symbols"; then
1533
-framework|-arch|-isysroot)
1535
*" ${arg} ${1} "* | *" ${arg} ${1} "*)
1536
prev=darwin_framework_skip ;;
1537
*) compiler_flags="$compiler_flags $arg"
1538
prev=darwin_framework ;;
1540
compile_command="$compile_command $arg"
1541
finalize_command="$finalize_command $arg"
1550
# The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
1551
# so, if we see these flags be careful not to treat them like -L
1553
case $with_gcc/$host in
1554
no/*-*-irix* | /*-*-irix*)
1555
compile_command="$compile_command $arg"
1556
finalize_command="$finalize_command $arg"
1563
dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
1564
# We need an absolute path.
1566
[\\/]* | [A-Za-z]:[\\/]*) ;;
1568
absdir=`cd "$dir" && pwd`
1569
if test -z "$absdir"; then
1570
$echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
1572
notinst_path="$notinst_path $dir"
1580
deplibs="$deplibs -L$dir"
1581
lib_search_path="$lib_search_path $dir"
1585
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1586
testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
1587
case :$dllsearchpath: in
1589
*) dllsearchpath="$dllsearchpath:$dir";;
1591
case :$dllsearchpath: in
1592
*":$testbindir:"*) ;;
1593
*) dllsearchpath="$dllsearchpath:$testbindir";;
1601
if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
1603
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
1604
# These systems don't actually have a C or math library (as such)
1608
# These systems don't actually have a C library (as such)
1609
test "X$arg" = "X-lc" && continue
1611
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1612
# Do not include libc due to us having libc/libc_r.
1613
test "X$arg" = "X-lc" && continue
1615
*-*-rhapsody* | *-*-darwin1.[012])
1616
# Rhapsody C and math libraries are in the System framework
1617
deplibs="$deplibs -framework System"
1620
*-*-sco3.2v5* | *-*-sco5v6*)
1621
# Causes problems with __ctype
1622
test "X$arg" = "X-lc" && continue
1624
*-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
1625
# Compiler inserts libc in the correct place for threads to work
1626
test "X$arg" = "X-lc" && continue
1629
elif test "X$arg" = "X-lc_r"; then
1631
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
1632
# Do not include libc_r directly, use -pthread flag.
1637
deplibs="$deplibs $arg"
1641
# Tru64 UNIX uses -model [arg] to determine the layout of C++
1642
# classes, name mangling, and exception handling.
1644
compile_command="$compile_command $arg"
1645
compiler_flags="$compiler_flags $arg"
1646
finalize_command="$finalize_command $arg"
1651
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
1652
compiler_flags="$compiler_flags $arg"
1653
compile_command="$compile_command $arg"
1654
finalize_command="$finalize_command $arg"
1663
# -64, -mips[0-9] enable 64-bit mode on the SGI compiler
1664
# -r[0-9][0-9]* specifies the processor on the SGI compiler
1665
# -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
1666
# +DA*, +DD* enable 64-bit mode on the HP compiler
1667
# -q* pass through compiler args for the IBM compiler
1668
# -m* pass through architecture-specific compiler args for GCC
1669
# -m*, -t[45]*, -txscale* pass through architecture-specific
1670
# compiler args for GCC
1671
# -pg pass through profiling flag for GCC
1672
# @file GCC response files
1673
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
1674
-t[45]*|-txscale*|@*)
1676
# Unknown arguments in both finalize_command and compile_command need
1677
# to be aesthetically quoted because they are evaled later.
1678
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1680
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1684
compile_command="$compile_command $arg"
1685
finalize_command="$finalize_command $arg"
1686
compiler_flags="$compiler_flags $arg"
1702
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
1703
# The PATH hackery in wrapper scripts is required on Windows
1704
# in order for the loader to find any dlls it needs.
1705
$echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
1706
$echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
1709
*) no_install=yes ;;
1726
-precious-files-regex)
1747
dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
1748
# We need an absolute path.
1750
[\\/]* | [A-Za-z]:[\\/]*) ;;
1752
$echo "$modename: only absolute run-paths are allowed" 1>&2
1758
*) xrpath="$xrpath $dir" ;;
1764
# The effects of -static are defined in a previous loop.
1765
# We used to do the same as -all-static on platforms that
1766
# didn't have a PIC flag, but the assumption that the effects
1767
# would be equivalent was wrong. It would break on at least
1768
# Digital Unix and AIX.
1788
args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
1790
save_ifs="$IFS"; IFS=','
1791
for flag in $args; do
1794
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1799
compiler_flags="$compiler_flags $flag"
1802
arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1806
args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
1808
save_ifs="$IFS"; IFS=','
1809
for flag in $args; do
1812
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1817
compiler_flags="$compiler_flags $wl$flag"
1818
linker_flags="$linker_flags $flag"
1821
arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
1839
# Some other compiler flag.
1841
# Unknown arguments in both finalize_command and compile_command need
1842
# to be aesthetically quoted because they are evaled later.
1843
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1845
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1852
# A standard object.
1857
# A libtool-controlled object.
1859
# Check to see that this really is a libtool object.
1860
if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
1865
# If there is no directory component, then add one.
1867
*/* | *\\*) . $arg ;;
1871
if test -z "$pic_object" || \
1872
test -z "$non_pic_object" ||
1873
test "$pic_object" = none && \
1874
test "$non_pic_object" = none; then
1875
$echo "$modename: cannot find name of object for \`$arg'" 1>&2
1879
# Extract subdirectory from the argument.
1880
xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1881
if test "X$xdir" = "X$arg"; then
1887
if test "$pic_object" != none; then
1888
# Prepend the subdirectory the object is found in.
1889
pic_object="$xdir$pic_object"
1891
if test "$prev" = dlfiles; then
1892
if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
1893
dlfiles="$dlfiles $pic_object"
1897
# If libtool objects are unsupported, then we need to preload.
1902
# CHECK ME: I think I busted this. -Ossama
1903
if test "$prev" = dlprefiles; then
1904
# Preload the old-style object.
1905
dlprefiles="$dlprefiles $pic_object"
1910
libobjs="$libobjs $pic_object"
1915
if test "$non_pic_object" != none; then
1916
# Prepend the subdirectory the object is found in.
1917
non_pic_object="$xdir$non_pic_object"
1919
# A standard non-PIC object
1920
non_pic_objects="$non_pic_objects $non_pic_object"
1921
if test -z "$pic_object" || test "$pic_object" = none ; then
1922
arg="$non_pic_object"
1925
# If the PIC object exists, use it instead.
1926
# $xdir was prepended to $pic_object above.
1927
non_pic_object="$pic_object"
1928
non_pic_objects="$non_pic_objects $non_pic_object"
1931
# Only an error if not doing a dry-run.
1932
if test -z "$run"; then
1933
$echo "$modename: \`$arg' is not a valid libtool object" 1>&2
1938
# Extract subdirectory from the argument.
1939
xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
1940
if test "X$xdir" = "X$arg"; then
1946
pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
1947
non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
1948
libobjs="$libobjs $pic_object"
1949
non_pic_objects="$non_pic_objects $non_pic_object"
1956
deplibs="$deplibs $arg"
1957
old_deplibs="$old_deplibs $arg"
1962
# A libtool-controlled library.
1964
if test "$prev" = dlfiles; then
1965
# This library was specified with -dlopen.
1966
dlfiles="$dlfiles $arg"
1968
elif test "$prev" = dlprefiles; then
1969
# The library was specified with -dlpreopen.
1970
dlprefiles="$dlprefiles $arg"
1973
deplibs="$deplibs $arg"
1978
# Some other compiler argument.
1980
# Unknown arguments in both finalize_command and compile_command need
1981
# to be aesthetically quoted because they are evaled later.
1982
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
1984
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1991
# Now actually substitute the argument into the commands.
1992
if test -n "$arg"; then
1993
compile_command="$compile_command $arg"
1994
finalize_command="$finalize_command $arg"
1996
done # argument parsing loop
1998
if test -n "$prev"; then
1999
$echo "$modename: the \`$prevarg' option requires an argument" 1>&2
2004
if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
2005
eval arg=\"$export_dynamic_flag_spec\"
2006
compile_command="$compile_command $arg"
2007
finalize_command="$finalize_command $arg"
2011
# calculate the name of the file, without its directory
2012
outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
2013
libobjs_save="$libobjs"
2015
if test -n "$shlibpath_var"; then
2016
# get the directories listed in $shlibpath_var
2017
eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
2021
eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
2022
eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
2024
output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
2025
if test "X$output_objdir" = "X$output"; then
2026
output_objdir="$objdir"
2028
output_objdir="$output_objdir/$objdir"
2030
# Create the object directory.
2031
if test ! -d "$output_objdir"; then
2032
$show "$mkdir $output_objdir"
2033
$run $mkdir $output_objdir
2035
if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
2040
# Determine the type of output
2043
$echo "$modename: you must specify an output file" 1>&2
2047
*.$libext) linkmode=oldlib ;;
2048
*.lo | *.$objext) linkmode=obj ;;
2049
*.la) linkmode=lib ;;
2050
*) linkmode=prog ;; # Anything else should be a program.
2054
*cygwin* | *mingw* | *pw32*)
2055
# don't eliminate duplications in $postdeps and $predeps
2056
duplicate_compiler_generated_deps=yes
2059
duplicate_compiler_generated_deps=$duplicate_deps
2065
# Find all interdependent deplibs by searching for libraries
2066
# that are linked more than once (e.g. -la -lb -la)
2067
for deplib in $deplibs; do
2068
if test "X$duplicate_deps" = "Xyes" ; then
2070
*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2073
libs="$libs $deplib"
2076
if test "$linkmode" = lib; then
2077
libs="$predeps $libs $compiler_lib_search_path $postdeps"
2079
# Compute libraries that are listed more than once in $predeps
2080
# $postdeps and mark them as special (i.e., whose duplicates are
2081
# not to be eliminated).
2083
if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
2084
for pre_post_dep in $predeps $postdeps; do
2085
case "$pre_post_deps " in
2086
*" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
2088
pre_post_deps="$pre_post_deps $pre_post_dep"
2097
need_relink=no # whether we're linking any uninstalled libtool libraries
2098
notinst_deplibs= # not-installed libtool libraries
2102
for file in $dlfiles $dlprefiles; do
2106
$echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
2118
passes="conv scan dlopen dlpreopen link"
2123
for pass in $passes; do
2124
if test "$linkmode,$pass" = "lib,link" ||
2125
test "$linkmode,$pass" = "prog,scan"; then
2129
if test "$linkmode" = prog; then
2131
dlopen) libs="$dlfiles" ;;
2132
dlpreopen) libs="$dlprefiles" ;;
2133
link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
2136
if test "$pass" = dlopen; then
2137
# Collect dlpreopened libraries
2138
save_deplibs="$deplibs"
2141
for deplib in $libs; do
2145
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
2146
if test "$linkmode,$pass" = "prog,link"; then
2147
compile_deplibs="$deplib $compile_deplibs"
2148
finalize_deplibs="$deplib $finalize_deplibs"
2150
compiler_flags="$compiler_flags $deplib"
2155
if test "$linkmode" != lib && test "$linkmode" != prog; then
2156
$echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
2159
name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
2160
for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
2161
for search_ext in .la $std_shrext .so .a; do
2162
# Search the libtool library
2163
lib="$searchdir/lib${name}${search_ext}"
2164
if test -f "$lib"; then
2165
if test "$search_ext" = ".la"; then
2174
if test "$found" != yes; then
2175
# deplib doesn't seem to be a libtool library
2176
if test "$linkmode,$pass" = "prog,link"; then
2177
compile_deplibs="$deplib $compile_deplibs"
2178
finalize_deplibs="$deplib $finalize_deplibs"
2180
deplibs="$deplib $deplibs"
2181
test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2184
else # deplib is a libtool library
2185
# If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
2186
# We need to do some special things here, and not later.
2187
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
2188
case " $predeps $postdeps " in
2190
if (${SED} -e '2q' $lib |
2191
grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
2195
*/* | *\\*) . $lib ;;
2198
for l in $old_library $library_names; do
2201
if test "X$ll" = "X$old_library" ; then # only static version available
2203
ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2204
test "X$ladir" = "X$lib" && ladir="."
2205
lib=$ladir/$old_library
2206
if test "$linkmode,$pass" = "prog,link"; then
2207
compile_deplibs="$deplib $compile_deplibs"
2208
finalize_deplibs="$deplib $finalize_deplibs"
2210
deplibs="$deplib $deplibs"
2211
test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
2225
deplibs="$deplib $deplibs"
2226
test "$pass" = conv && continue
2227
newdependency_libs="$deplib $newdependency_libs"
2228
newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2231
if test "$pass" = conv; then
2232
deplibs="$deplib $deplibs"
2235
if test "$pass" = scan; then
2236
deplibs="$deplib $deplibs"
2238
compile_deplibs="$deplib $compile_deplibs"
2239
finalize_deplibs="$deplib $finalize_deplibs"
2241
newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
2244
$echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
2250
if test "$pass" = link; then
2251
dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
2252
# Make sure the xrpath contains only unique directories.
2255
*) xrpath="$xrpath $dir" ;;
2258
deplibs="$deplib $deplibs"
2261
*.la) lib="$deplib" ;;
2263
if test "$pass" = conv; then
2264
deplibs="$deplib $deplibs"
2270
case $deplibs_check_method in
2272
set dummy $deplibs_check_method
2273
match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
2274
if eval $echo \"$deplib\" 2>/dev/null \
2276
| $EGREP "$match_pattern_regex" > /dev/null; then
2284
if test "$valid_a_lib" != yes; then
2286
$echo "*** Warning: Trying to link with static lib archive $deplib."
2287
$echo "*** I have the capability to make that library automatically link in when"
2288
$echo "*** you link to this library. But I can only do this if you have a"
2289
$echo "*** shared version of the library, which you do not appear to have"
2290
$echo "*** because the file extensions .$libext of this argument makes me believe"
2291
$echo "*** that it is just a static archive that I should not used here."
2294
$echo "*** Warning: Linking the shared library $output against the"
2295
$echo "*** static library $deplib is not portable!"
2296
deplibs="$deplib $deplibs"
2301
if test "$pass" != link; then
2302
deplibs="$deplib $deplibs"
2304
compile_deplibs="$deplib $compile_deplibs"
2305
finalize_deplibs="$deplib $finalize_deplibs"
2312
if test "$pass" = conv; then
2313
deplibs="$deplib $deplibs"
2314
elif test "$linkmode" = prog; then
2315
if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
2316
# If there is no dlopen support or we're linking statically,
2317
# we need to preload.
2318
newdlprefiles="$newdlprefiles $deplib"
2319
compile_deplibs="$deplib $compile_deplibs"
2320
finalize_deplibs="$deplib $finalize_deplibs"
2322
newdlfiles="$newdlfiles $deplib"
2332
if test "$found" = yes || test -f "$lib"; then :
2334
$echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
2338
# Check to see that this really is a libtool archive.
2339
if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
2341
$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
2345
ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
2346
test "X$ladir" = "X$lib" && ladir="."
2354
# If the library was installed with an old release of libtool,
2355
# it will not redefine variables installed, or shouldnotlink
2363
*/* | *\\*) . $lib ;;
2367
if test "$linkmode,$pass" = "lib,link" ||
2368
test "$linkmode,$pass" = "prog,scan" ||
2369
{ test "$linkmode" != prog && test "$linkmode" != lib; }; then
2370
test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
2371
test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
2374
if test "$pass" = conv; then
2375
# Only check for convenience libraries
2376
deplibs="$lib $deplibs"
2377
if test -z "$libdir"; then
2378
if test -z "$old_library"; then
2379
$echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2382
# It is a libtool convenience library, so add in its objects.
2383
convenience="$convenience $ladir/$objdir/$old_library"
2384
old_convenience="$old_convenience $ladir/$objdir/$old_library"
2386
for deplib in $dependency_libs; do
2387
deplibs="$deplib $deplibs"
2388
if test "X$duplicate_deps" = "Xyes" ; then
2389
case "$tmp_libs " in
2390
*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2393
tmp_libs="$tmp_libs $deplib"
2395
elif test "$linkmode" != prog && test "$linkmode" != lib; then
2396
$echo "$modename: \`$lib' is not a convenience library" 1>&2
2403
# Get the name of the library we link against.
2405
for l in $old_library $library_names; do
2408
if test -z "$linklib"; then
2409
$echo "$modename: cannot find name of link library for \`$lib'" 1>&2
2413
# This library was specified with -dlopen.
2414
if test "$pass" = dlopen; then
2415
if test -z "$libdir"; then
2416
$echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
2419
if test -z "$dlname" ||
2420
test "$dlopen_support" != yes ||
2421
test "$build_libtool_libs" = no; then
2422
# If there is no dlname, no dlopen support or we're linking
2423
# statically, we need to preload. We also need to preload any
2424
# dependent libraries so libltdl's deplib preloader doesn't
2425
# bomb out in the load deplibs phase.
2426
dlprefiles="$dlprefiles $lib $dependency_libs"
2428
newdlfiles="$newdlfiles $lib"
2433
# We need an absolute path.
2435
[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
2437
abs_ladir=`cd "$ladir" && pwd`
2438
if test -z "$abs_ladir"; then
2439
$echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
2440
$echo "$modename: passing it literally to the linker, although it might fail" 1>&2
2445
laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
2447
# Find the relevant object directory and library name.
2448
if test "X$installed" = Xyes; then
2449
if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2450
$echo "$modename: warning: library \`$lib' was moved." 1>&2
2458
test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
2460
if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
2463
# Remove this search path later
2464
notinst_path="$notinst_path $abs_ladir"
2466
dir="$ladir/$objdir"
2467
absdir="$abs_ladir/$objdir"
2468
# Remove this search path later
2469
notinst_path="$notinst_path $abs_ladir"
2471
fi # $installed = yes
2472
name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
2474
# This library was specified with -dlpreopen.
2475
if test "$pass" = dlpreopen; then
2476
if test -z "$libdir"; then
2477
$echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
2480
# Prefer using a static library (so that no silly _DYNAMIC symbols
2481
# are required to link).
2482
if test -n "$old_library"; then
2483
newdlprefiles="$newdlprefiles $dir/$old_library"
2484
# Otherwise, use the dlname, so that lt_dlopen finds it.
2485
elif test -n "$dlname"; then
2486
newdlprefiles="$newdlprefiles $dir/$dlname"
2488
newdlprefiles="$newdlprefiles $dir/$linklib"
2490
fi # $pass = dlpreopen
2492
if test -z "$libdir"; then
2493
# Link the convenience library
2494
if test "$linkmode" = lib; then
2495
deplibs="$dir/$old_library $deplibs"
2496
elif test "$linkmode,$pass" = "prog,link"; then
2497
compile_deplibs="$dir/$old_library $compile_deplibs"
2498
finalize_deplibs="$dir/$old_library $finalize_deplibs"
2500
deplibs="$lib $deplibs" # used for prog,scan pass
2506
if test "$linkmode" = prog && test "$pass" != link; then
2507
newlib_search_path="$newlib_search_path $ladir"
2508
deplibs="$lib $deplibs"
2511
if test "$link_all_deplibs" != no || test -z "$library_names" ||
2512
test "$build_libtool_libs" = no; then
2517
for deplib in $dependency_libs; do
2519
-L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
2521
# Need to link against all dependency_libs?
2522
if test "$linkalldeplibs" = yes; then
2523
deplibs="$deplib $deplibs"
2525
# Need to hardcode shared library paths
2526
# or/and link against static libraries
2527
newdependency_libs="$deplib $newdependency_libs"
2529
if test "X$duplicate_deps" = "Xyes" ; then
2530
case "$tmp_libs " in
2531
*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2534
tmp_libs="$tmp_libs $deplib"
2537
fi # $linkmode = prog...
2539
if test "$linkmode,$pass" = "prog,link"; then
2540
if test -n "$library_names" &&
2541
{ test "$prefer_static_libs" = no || test -z "$old_library"; }; then
2542
# We need to hardcode the library path
2543
if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
2544
# Make sure the rpath contains only unique directories.
2545
case "$temp_rpath " in
2548
*) temp_rpath="$temp_rpath $absdir" ;;
2552
# Hardcode the library path.
2553
# Skip directories that are in the system default run-time
2555
case " $sys_lib_dlsearch_path " in
2558
case "$compile_rpath " in
2560
*) compile_rpath="$compile_rpath $absdir"
2564
case " $sys_lib_dlsearch_path " in
2567
case "$finalize_rpath " in
2569
*) finalize_rpath="$finalize_rpath $libdir"
2573
fi # $linkmode,$pass = prog,link...
2575
if test "$alldeplibs" = yes &&
2576
{ test "$deplibs_check_method" = pass_all ||
2577
{ test "$build_libtool_libs" = yes &&
2578
test -n "$library_names"; }; }; then
2579
# We only need to search for static libraries
2584
link_static=no # Whether the deplib will be linked statically
2585
use_static_libs=$prefer_static_libs
2586
if test "$use_static_libs" = built && test "$installed" = yes ; then
2589
if test -n "$library_names" &&
2590
{ test "$use_static_libs" = no || test -z "$old_library"; }; then
2591
if test "$installed" = no; then
2592
notinst_deplibs="$notinst_deplibs $lib"
2595
# This is a shared library
2597
# Warn about portability, can't link against -module's on
2598
# some systems (darwin)
2599
if test "$shouldnotlink" = yes && test "$pass" = link ; then
2601
if test "$linkmode" = prog; then
2602
$echo "*** Warning: Linking the executable $output against the loadable module"
2604
$echo "*** Warning: Linking the shared library $output against the loadable module"
2606
$echo "*** $linklib is not portable!"
2608
if test "$linkmode" = lib &&
2609
test "$hardcode_into_libs" = yes; then
2610
# Hardcode the library path.
2611
# Skip directories that are in the system default run-time
2613
case " $sys_lib_dlsearch_path " in
2616
case "$compile_rpath " in
2618
*) compile_rpath="$compile_rpath $absdir"
2622
case " $sys_lib_dlsearch_path " in
2625
case "$finalize_rpath " in
2627
*) finalize_rpath="$finalize_rpath $libdir"
2633
if test -n "$old_archive_from_expsyms_cmds"; then
2634
# figure out the soname
2635
set dummy $library_names
2638
libname=`eval \\$echo \"$libname_spec\"`
2639
# use dlname if we got it. it's perfectly good, no?
2640
if test -n "$dlname"; then
2642
elif test -n "$soname_spec"; then
2646
major=`expr $current - $age`
2650
eval soname=\"$soname_spec\"
2655
# Make a new name for the extract_expsyms_cmds to use
2657
soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
2658
newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
2660
# If the library has no export list, then create one now
2661
if test -f "$output_objdir/$soname-def"; then :
2663
$show "extracting exported symbol list from \`$soname'"
2664
save_ifs="$IFS"; IFS='~'
2665
cmds=$extract_expsyms_cmds
2666
for cmd in $cmds; do
2670
$run eval "$cmd" || exit $?
2676
if test -f "$output_objdir/$newlib"; then :; else
2677
$show "generating import library for \`$soname'"
2678
save_ifs="$IFS"; IFS='~'
2679
cmds=$old_archive_from_expsyms_cmds
2680
for cmd in $cmds; do
2684
$run eval "$cmd" || exit $?
2688
# make sure the library variables are pointing to the new library
2691
fi # test -n "$old_archive_from_expsyms_cmds"
2693
if test "$linkmode" = prog || test "$mode" != relink; then
2698
case $hardcode_action in
2699
immediate | unsupported)
2700
if test "$hardcode_direct" = no; then
2703
*-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
2704
*-*-sysv4*uw2*) add_dir="-L$dir" ;;
2705
*-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
2706
*-*-unixware7*) add_dir="-L$dir" ;;
2708
# if the lib is a module then we can not link against
2709
# it, someone is ignoring the new warnings I added
2710
if /usr/bin/file -L $add 2> /dev/null |
2711
$EGREP ": [^:]* bundle" >/dev/null ; then
2712
$echo "** Warning, lib $linklib is a module, not a shared library"
2713
if test -z "$old_library" ; then
2715
$echo "** And there doesn't seem to be a static archive available"
2716
$echo "** The link will probably fail, sorry"
2718
add="$dir/$old_library"
2722
elif test "$hardcode_minus_L" = no; then
2724
*-*-sunos*) add_shlibpath="$dir" ;;
2728
elif test "$hardcode_shlibpath_var" = no; then
2729
add_shlibpath="$dir"
2736
if test "$hardcode_direct" = yes; then
2738
elif test "$hardcode_minus_L" = yes; then
2740
# Try looking first in the location we're being installed to.
2741
if test -n "$inst_prefix_dir"; then
2744
add_dir="$add_dir -L$inst_prefix_dir$libdir"
2749
elif test "$hardcode_shlibpath_var" = yes; then
2750
add_shlibpath="$dir"
2759
if test "$lib_linked" != yes; then
2760
$echo "$modename: configuration error: unsupported hardcode properties"
2764
if test -n "$add_shlibpath"; then
2765
case :$compile_shlibpath: in
2766
*":$add_shlibpath:"*) ;;
2767
*) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
2770
if test "$linkmode" = prog; then
2771
test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
2772
test -n "$add" && compile_deplibs="$add $compile_deplibs"
2774
test -n "$add_dir" && deplibs="$add_dir $deplibs"
2775
test -n "$add" && deplibs="$add $deplibs"
2776
if test "$hardcode_direct" != yes && \
2777
test "$hardcode_minus_L" != yes && \
2778
test "$hardcode_shlibpath_var" = yes; then
2779
case :$finalize_shlibpath: in
2781
*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2787
if test "$linkmode" = prog || test "$mode" = relink; then
2791
# Finalize command for both is simple: just hardcode it.
2792
if test "$hardcode_direct" = yes; then
2793
add="$libdir/$linklib"
2794
elif test "$hardcode_minus_L" = yes; then
2797
elif test "$hardcode_shlibpath_var" = yes; then
2798
case :$finalize_shlibpath: in
2800
*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
2803
elif test "$hardcode_automatic" = yes; then
2804
if test -n "$inst_prefix_dir" &&
2805
test -f "$inst_prefix_dir$libdir/$linklib" ; then
2806
add="$inst_prefix_dir$libdir/$linklib"
2808
add="$libdir/$linklib"
2811
# We cannot seem to hardcode it, guess we'll fake it.
2813
# Try looking first in the location we're being installed to.
2814
if test -n "$inst_prefix_dir"; then
2817
add_dir="$add_dir -L$inst_prefix_dir$libdir"
2824
if test "$linkmode" = prog; then
2825
test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
2826
test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
2828
test -n "$add_dir" && deplibs="$add_dir $deplibs"
2829
test -n "$add" && deplibs="$add $deplibs"
2832
elif test "$linkmode" = prog; then
2833
# Here we assume that one of hardcode_direct or hardcode_minus_L
2834
# is not unsupported. This is valid on all known static and
2836
if test "$hardcode_direct" != unsupported; then
2837
test -n "$old_library" && linklib="$old_library"
2838
compile_deplibs="$dir/$linklib $compile_deplibs"
2839
finalize_deplibs="$dir/$linklib $finalize_deplibs"
2841
compile_deplibs="-l$name -L$dir $compile_deplibs"
2842
finalize_deplibs="-l$name -L$dir $finalize_deplibs"
2844
elif test "$build_libtool_libs" = yes; then
2845
# Not a shared library
2846
if test "$deplibs_check_method" != pass_all; then
2847
# We're trying link a shared library against a static one
2848
# but the system doesn't support it.
2850
# Just print a warning and add the library to dependency_libs so
2851
# that the program can be linked against the static library.
2853
$echo "*** Warning: This system can not link to static lib archive $lib."
2854
$echo "*** I have the capability to make that library automatically link in when"
2855
$echo "*** you link to this library. But I can only do this if you have a"
2856
$echo "*** shared version of the library, which you do not appear to have."
2857
if test "$module" = yes; then
2858
$echo "*** But as you try to build a module library, libtool will still create "
2859
$echo "*** a static module, that should work as long as the dlopening application"
2860
$echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
2861
if test -z "$global_symbol_pipe"; then
2863
$echo "*** However, this would only work if libtool was able to extract symbol"
2864
$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
2865
$echo "*** not find such a program. So, this module is probably useless."
2866
$echo "*** \`nm' from GNU binutils and a full rebuild may help."
2868
if test "$build_old_libs" = no; then
2869
build_libtool_libs=module
2872
build_libtool_libs=no
2876
deplibs="$dir/$old_library $deplibs"
2879
fi # link shared/static library?
2881
if test "$linkmode" = lib; then
2882
if test -n "$dependency_libs" &&
2883
{ test "$hardcode_into_libs" != yes ||
2884
test "$build_old_libs" = yes ||
2885
test "$link_static" = yes; }; then
2886
# Extract -R from dependency_libs
2888
for libdir in $dependency_libs; do
2890
-R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
2892
*" $temp_xrpath "*) ;;
2893
*) xrpath="$xrpath $temp_xrpath";;
2895
*) temp_deplibs="$temp_deplibs $libdir";;
2898
dependency_libs="$temp_deplibs"
2901
newlib_search_path="$newlib_search_path $absdir"
2902
# Link against this library
2903
test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
2904
# ... and its dependency_libs
2906
for deplib in $dependency_libs; do
2907
newdependency_libs="$deplib $newdependency_libs"
2908
if test "X$duplicate_deps" = "Xyes" ; then
2909
case "$tmp_libs " in
2910
*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
2913
tmp_libs="$tmp_libs $deplib"
2916
if test "$link_all_deplibs" != no; then
2917
# Add the search paths of all dependency libraries
2918
for deplib in $dependency_libs; do
2920
-L*) path="$deplib" ;;
2922
dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
2923
test "X$dir" = "X$deplib" && dir="."
2924
# We need an absolute path.
2926
[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
2928
absdir=`cd "$dir" && pwd`
2929
if test -z "$absdir"; then
2930
$echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
2935
if grep "^installed=no" $deplib > /dev/null; then
2936
path="$absdir/$objdir"
2938
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
2939
if test -z "$libdir"; then
2940
$echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
2943
if test "$absdir" != "$libdir"; then
2944
$echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
2951
# we do not want to link against static libs,
2952
# but need to link against shared
2953
eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
2954
if test -n "$deplibrary_names" ; then
2955
for tmp in $deplibrary_names ; do
2958
if test -f "$path/$depdepl" ; then
2959
depdepl="$path/$depdepl"
2961
# do not add paths which are already there
2962
case " $newlib_search_path " in
2964
*) newlib_search_path="$newlib_search_path $path";;
2977
# Again, we only want to link against shared libraries
2978
eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
2979
for tmp in $newlib_search_path ; do
2980
if test -f "$tmp/lib$tmp_libs.dylib" ; then
2981
eval depdepl="$tmp/lib$tmp_libs.dylib"
2992
case " $deplibs " in
2994
*) deplibs="$path $deplibs" ;;
2996
case " $deplibs " in
2998
*) deplibs="$depdepl $deplibs" ;;
3001
fi # link_all_deplibs != no
3003
done # for deplib in $libs
3004
dependency_libs="$newdependency_libs"
3005
if test "$pass" = dlpreopen; then
3006
# Link the dlpreopened libraries before other libraries
3007
for deplib in $save_deplibs; do
3008
deplibs="$deplib $deplibs"
3011
if test "$pass" != dlopen; then
3012
if test "$pass" != conv; then
3013
# Make sure lib_search_path contains only unique directories.
3015
for dir in $newlib_search_path; do
3016
case "$lib_search_path " in
3018
*) lib_search_path="$lib_search_path $dir" ;;
3024
if test "$linkmode,$pass" != "prog,link"; then
3027
vars="compile_deplibs finalize_deplibs"
3029
for var in $vars dependency_libs; do
3030
# Add libraries to $var in reverse order
3031
eval tmp_libs=\"\$$var\"
3033
for deplib in $tmp_libs; do
3034
# FIXME: Pedantically, this is the right thing to do, so
3035
# that some nasty dependency loop isn't accidentally
3037
#new_libs="$deplib $new_libs"
3038
# Pragmatically, this seems to cause very few problems in
3041
-L*) new_libs="$deplib $new_libs" ;;
3044
# And here is the reason: when a library appears more
3045
# than once as an explicit dependence of a library, or
3046
# is implicitly linked in more than once by the
3047
# compiler, it is considered special, and multiple
3048
# occurrences thereof are not removed. Compare this
3049
# with having the same library being listed as a
3050
# dependency of multiple other libraries: in this case,
3051
# we know (pedantically, we assume) the library does not
3052
# need to be listed more than once, so we keep only the
3053
# last copy. This is not always right, but it is rare
3054
# enough that we require users that really mean to play
3055
# such unportable linking tricks to link the library
3056
# using -Wl,-lname, so that libtool does not consider it
3057
# for duplicate removal.
3058
case " $specialdeplibs " in
3059
*" $deplib "*) new_libs="$deplib $new_libs" ;;
3061
case " $new_libs " in
3063
*) new_libs="$deplib $new_libs" ;;
3071
for deplib in $new_libs; do
3074
case " $tmp_libs " in
3076
*) tmp_libs="$tmp_libs $deplib" ;;
3079
*) tmp_libs="$tmp_libs $deplib" ;;
3082
eval $var=\"$tmp_libs\"
3085
# Last step: remove runtime libs from dependency_libs
3086
# (they stay in deplibs)
3088
for i in $dependency_libs ; do
3089
case " $predeps $postdeps $compiler_lib_search_path " in
3094
if test -n "$i" ; then
3095
tmp_libs="$tmp_libs $i"
3098
dependency_libs=$tmp_libs
3100
if test "$linkmode" = prog; then
3101
dlfiles="$newdlfiles"
3102
dlprefiles="$newdlprefiles"
3107
if test -n "$deplibs"; then
3108
$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
3111
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3112
$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
3115
if test -n "$rpath"; then
3116
$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
3119
if test -n "$xrpath"; then
3120
$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
3123
if test -n "$vinfo"; then
3124
$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
3127
if test -n "$release"; then
3128
$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
3131
if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
3132
$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
3135
# Now set the variables for building old libraries.
3136
build_libtool_libs=no
3138
objs="$objs$old_deplibs"
3142
# Make sure we only generate libraries of the form `libNAME.la'.
3145
name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
3146
eval shared_ext=\"$shrext_cmds\"
3147
eval libname=\"$libname_spec\"
3150
if test "$module" = no; then
3151
$echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
3155
if test "$need_lib_prefix" != no; then
3156
# Add the "lib" prefix for modules if required
3157
name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3158
eval shared_ext=\"$shrext_cmds\"
3159
eval libname=\"$libname_spec\"
3161
libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
3166
if test -n "$objs"; then
3167
if test "$deplibs_check_method" != pass_all; then
3168
$echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
3172
$echo "*** Warning: Linking the shared library $output against the non-libtool"
3173
$echo "*** objects $objs is not portable!"
3174
libobjs="$libobjs $objs"
3178
if test "$dlself" != no; then
3179
$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
3183
if test "$#" -gt 2; then
3184
$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
3189
if test -z "$rpath"; then
3190
if test "$build_libtool_libs" = yes; then
3191
# Building a libtool convenience library.
3192
# Some compilers have problems with a `.al' extension so
3193
# convenience libraries should have the same extension an
3194
# archive normally would.
3195
oldlibs="$output_objdir/$libname.$libext $oldlibs"
3196
build_libtool_libs=convenience
3200
if test -n "$vinfo"; then
3201
$echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
3204
if test -n "$release"; then
3205
$echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
3209
# Parse the version information argument.
3210
save_ifs="$IFS"; IFS=':'
3211
set dummy $vinfo 0 0 0
3214
if test -n "$8"; then
3215
$echo "$modename: too many parameters to \`-version-info'" 1>&2
3220
# convert absolute version numbers to libtool ages
3221
# this retains compatibility with .la files and attempts
3222
# to make the code below a bit more comprehensible
3224
case $vinfo_number in
3228
number_revision="$4"
3230
# There are really only two kinds -- those that
3231
# use the current revision as the major version
3232
# and those that subtract age and use age as
3233
# a minor version. But, then there is irix
3234
# which has an extra 1 added just for fun
3236
case $version_type in
3237
darwin|linux|osf|windows)
3238
current=`expr $number_major + $number_minor`
3240
revision="$number_revision"
3242
freebsd-aout|freebsd-elf|sunos)
3243
current="$number_major"
3244
revision="$number_minor"
3248
current=`expr $number_major + $number_minor - 1`
3250
revision="$number_minor"
3261
# Check that each of the things are valid numbers.
3263
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3265
$echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
3266
$echo "$modename: \`$vinfo' is not valid version information" 1>&2
3272
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3274
$echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
3275
$echo "$modename: \`$vinfo' is not valid version information" 1>&2
3281
0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
3283
$echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
3284
$echo "$modename: \`$vinfo' is not valid version information" 1>&2
3289
if test "$age" -gt "$current"; then
3290
$echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
3291
$echo "$modename: \`$vinfo' is not valid version information" 1>&2
3295
# Calculate the version variables.
3299
case $version_type in
3303
# Like Linux, but with the current version available in
3304
# verstring for coding it into the library header
3305
major=.`expr $current - $age`
3306
versuffix="$major.$age.$revision"
3307
# Darwin ld doesn't like 0 for these options...
3308
minor_current=`expr $current + 1`
3309
verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
3314
versuffix=".$current.$revision";
3319
versuffix=".$current";
3323
major=`expr $current - $age + 1`
3325
case $version_type in
3326
nonstopux) verstring_prefix=nonstopux ;;
3327
*) verstring_prefix=sgi ;;
3329
verstring="$verstring_prefix$major.$revision"
3331
# Add in all the interfaces that we are compatible with.
3333
while test "$loop" -ne 0; do
3334
iface=`expr $revision - $loop`
3335
loop=`expr $loop - 1`
3336
verstring="$verstring_prefix$major.$iface:$verstring"
3339
# Before this point, $major must not contain `.'.
3341
versuffix="$major.$revision"
3345
major=.`expr $current - $age`
3346
versuffix="$major.$age.$revision"
3350
major=.`expr $current - $age`
3351
versuffix=".$current.$age.$revision"
3352
verstring="$current.$age.$revision"
3354
# Add in all the interfaces that we are compatible with.
3356
while test "$loop" -ne 0; do
3357
iface=`expr $current - $loop`
3358
loop=`expr $loop - 1`
3359
verstring="$verstring:${iface}.0"
3362
# Make executables depend on our current version.
3363
verstring="$verstring:${current}.0"
3368
versuffix=".$current.$revision"
3372
# Use '-' rather than '.', since we only want one
3373
# extension on DOS 8.3 filesystems.
3374
major=`expr $current - $age`
3379
$echo "$modename: unknown library version type \`$version_type'" 1>&2
3380
$echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
3385
# Clear the version info if we defaulted, and they specified a release.
3386
if test -z "$vinfo" && test -n "$release"; then
3388
case $version_type in
3390
# we can't check for "0.0" in archive_cmds due to quoting
3391
# problems, so we reset it completely
3398
if test "$need_version" = no; then
3405
# Remove version info from name if versioning should be avoided
3406
if test "$avoid_version" = yes && test "$need_version" = no; then
3412
# Check to see if the archive will have undefined symbols.
3413
if test "$allow_undefined" = yes; then
3414
if test "$allow_undefined_flag" = unsupported; then
3415
$echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
3416
build_libtool_libs=no
3420
# Don't allow undefined symbols.
3421
allow_undefined_flag="$no_undefined_flag"
3425
if test "$mode" != relink; then
3426
# Remove our outputs, but don't remove object files since they
3427
# may have been created when compiling PIC objects.
3429
tempremovelist=`$echo "$output_objdir/*"`
3430
for p in $tempremovelist; do
3434
$output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
3435
if test "X$precious_files_regex" != "X"; then
3436
if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
3441
removelist="$removelist $p"
3446
if test -n "$removelist"; then
3447
$show "${rm}r $removelist"
3448
$run ${rm}r $removelist
3452
# Now set the variables for building old libraries.
3453
if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
3454
oldlibs="$oldlibs $output_objdir/$libname.$libext"
3456
# Transform .lo files to .o files.
3457
oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
3460
# Eliminate all temporary directories.
3461
for path in $notinst_path; do
3462
lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
3463
deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
3464
dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
3467
if test -n "$xrpath"; then
3468
# If the user specified any rpath flags, then add them.
3470
for libdir in $xrpath; do
3471
temp_xrpath="$temp_xrpath -R$libdir"
3472
case "$finalize_rpath " in
3474
*) finalize_rpath="$finalize_rpath $libdir" ;;
3477
if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
3478
dependency_libs="$temp_xrpath $dependency_libs"
3482
# Make sure dlfiles contains only unique files that won't be dlpreopened
3483
old_dlfiles="$dlfiles"
3485
for lib in $old_dlfiles; do
3486
case " $dlprefiles $dlfiles " in
3488
*) dlfiles="$dlfiles $lib" ;;
3492
# Make sure dlprefiles contains only unique files
3493
old_dlprefiles="$dlprefiles"
3495
for lib in $old_dlprefiles; do
3496
case "$dlprefiles " in
3498
*) dlprefiles="$dlprefiles $lib" ;;
3502
if test "$build_libtool_libs" = yes; then
3503
if test -n "$rpath"; then
3505
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
3506
# these systems don't actually have a c library (as such)!
3508
*-*-rhapsody* | *-*-darwin1.[012])
3509
# Rhapsody C library is in the System framework
3510
deplibs="$deplibs -framework System"
3513
# Don't link with libc until the a.out ld.so is fixed.
3515
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
3516
# Do not include libc due to us having libc/libc_r.
3518
*-*-sco3.2v5* | *-*-sco5v6*)
3519
# Causes problems with __ctype
3521
*-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
3522
# Compiler inserts libc in the correct place for threads to work
3525
# Add libc to deplibs on all other systems if necessary.
3526
if test "$build_libtool_need_lc" = "yes"; then
3527
deplibs="$deplibs -lc"
3533
# Transform deplibs into only deplibs that can be linked in shared.
3535
libname_save=$libname
3536
release_save=$release
3537
versuffix_save=$versuffix
3539
# I'm not sure if I'm treating the release correctly. I think
3540
# release should show up in the -l (ie -lgmp5) so we don't want to
3541
# add it in twice. Is that correct?
3547
case $deplibs_check_method in
3549
# Don't check for shared/static. Everything works.
3550
# This might be a little naive. We might want to check
3551
# whether the library exists or not. But this is on
3552
# osf3 & osf4 and I'm not really sure... Just
3553
# implementing what was already the behavior.
3557
# This code stresses the "libraries are programs" paradigm to its
3558
# limits. Maybe even breaks it. We compile a program, linking it
3559
# against the deplibs as a proxy for the library. Then we can check
3560
# whether they linked in statically or dynamically with ldd.
3562
cat > conftest.c <<EOF
3563
int main() { return 0; }
3566
$LTCC $LTCFLAGS -o conftest conftest.c $deplibs
3567
if test "$?" -eq 0 ; then
3568
ldd_output=`ldd conftest`
3569
for i in $deplibs; do
3570
name=`expr $i : '-l\(.*\)'`
3571
# If $name is empty we are operating on a -L argument.
3572
if test "$name" != "" && test "$name" -ne "0"; then
3573
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3574
case " $predeps $postdeps " in
3576
newdeplibs="$newdeplibs $i"
3581
if test -n "$i" ; then
3582
libname=`eval \\$echo \"$libname_spec\"`
3583
deplib_matches=`eval \\$echo \"$library_names_spec\"`
3584
set dummy $deplib_matches
3586
if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3587
newdeplibs="$newdeplibs $i"
3591
$echo "*** Warning: dynamic linker does not accept needed library $i."
3592
$echo "*** I have the capability to make that library automatically link in when"
3593
$echo "*** you link to this library. But I can only do this if you have a"
3594
$echo "*** shared version of the library, which I believe you do not have"
3595
$echo "*** because a test_compile did reveal that the linker did not use it for"
3596
$echo "*** its dynamic dependency list that programs get resolved with at runtime."
3600
newdeplibs="$newdeplibs $i"
3604
# Error occurred in the first compile. Let's try to salvage
3605
# the situation: Compile a separate program for each library.
3606
for i in $deplibs; do
3607
name=`expr $i : '-l\(.*\)'`
3608
# If $name is empty we are operating on a -L argument.
3609
if test "$name" != "" && test "$name" != "0"; then
3611
$LTCC $LTCFLAGS -o conftest conftest.c $i
3613
if test "$?" -eq 0 ; then
3614
ldd_output=`ldd conftest`
3615
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3616
case " $predeps $postdeps " in
3618
newdeplibs="$newdeplibs $i"
3623
if test -n "$i" ; then
3624
libname=`eval \\$echo \"$libname_spec\"`
3625
deplib_matches=`eval \\$echo \"$library_names_spec\"`
3626
set dummy $deplib_matches
3628
if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
3629
newdeplibs="$newdeplibs $i"
3633
$echo "*** Warning: dynamic linker does not accept needed library $i."
3634
$echo "*** I have the capability to make that library automatically link in when"
3635
$echo "*** you link to this library. But I can only do this if you have a"
3636
$echo "*** shared version of the library, which you do not appear to have"
3637
$echo "*** because a test_compile did reveal that the linker did not use this one"
3638
$echo "*** as a dynamic dependency that programs can get resolved with at runtime."
3644
$echo "*** Warning! Library $i is needed by this library but I was not able to"
3645
$echo "*** make it link in! You will probably need to install it or some"
3646
$echo "*** library that it depends on before this library will be fully"
3647
$echo "*** functional. Installing it before continuing would be even better."
3650
newdeplibs="$newdeplibs $i"
3656
set dummy $deplibs_check_method
3657
file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3658
for a_deplib in $deplibs; do
3659
name=`expr $a_deplib : '-l\(.*\)'`
3660
# If $name is empty we are operating on a -L argument.
3661
if test "$name" != "" && test "$name" != "0"; then
3662
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3663
case " $predeps $postdeps " in
3665
newdeplibs="$newdeplibs $a_deplib"
3670
if test -n "$a_deplib" ; then
3671
libname=`eval \\$echo \"$libname_spec\"`
3672
for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3673
potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3674
for potent_lib in $potential_libs; do
3675
# Follow soft links.
3676
if ls -lLd "$potent_lib" 2>/dev/null \
3677
| grep " -> " >/dev/null; then
3680
# The statement above tries to avoid entering an
3681
# endless loop below, in case of cyclic links.
3682
# We might still enter an endless loop, since a link
3683
# loop can be closed while we follow links,
3685
potlib="$potent_lib"
3686
while test -h "$potlib" 2>/dev/null; do
3687
potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
3689
[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
3690
*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
3693
# It is ok to link against an archive when
3694
# building a shared library.
3695
if $AR -t $potlib > /dev/null 2>&1; then
3696
newdeplibs="$newdeplibs $a_deplib"
3700
if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
3702
| $EGREP "$file_magic_regex" > /dev/null; then
3703
newdeplibs="$newdeplibs $a_deplib"
3710
if test -n "$a_deplib" ; then
3713
$echo "*** Warning: linker path does not have real file for library $a_deplib."
3714
$echo "*** I have the capability to make that library automatically link in when"
3715
$echo "*** you link to this library. But I can only do this if you have a"
3716
$echo "*** shared version of the library, which you do not appear to have"
3717
$echo "*** because I did check the linker path looking for a file starting"
3718
if test -z "$potlib" ; then
3719
$echo "*** with $libname but no candidates were found. (...for file magic test)"
3721
$echo "*** with $libname and none of the candidates passed a file format test"
3722
$echo "*** using a file magic. Last file checked: $potlib"
3726
# Add a -L argument.
3727
newdeplibs="$newdeplibs $a_deplib"
3729
done # Gone through all deplibs.
3732
set dummy $deplibs_check_method
3733
match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
3734
for a_deplib in $deplibs; do
3735
name=`expr $a_deplib : '-l\(.*\)'`
3736
# If $name is empty we are operating on a -L argument.
3737
if test -n "$name" && test "$name" != "0"; then
3738
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3739
case " $predeps $postdeps " in
3741
newdeplibs="$newdeplibs $a_deplib"
3746
if test -n "$a_deplib" ; then
3747
libname=`eval \\$echo \"$libname_spec\"`
3748
for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
3749
potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
3750
for potent_lib in $potential_libs; do
3751
potlib="$potent_lib" # see symlink-check above in file_magic test
3752
if eval $echo \"$potent_lib\" 2>/dev/null \
3754
| $EGREP "$match_pattern_regex" > /dev/null; then
3755
newdeplibs="$newdeplibs $a_deplib"
3762
if test -n "$a_deplib" ; then
3765
$echo "*** Warning: linker path does not have real file for library $a_deplib."
3766
$echo "*** I have the capability to make that library automatically link in when"
3767
$echo "*** you link to this library. But I can only do this if you have a"
3768
$echo "*** shared version of the library, which you do not appear to have"
3769
$echo "*** because I did check the linker path looking for a file starting"
3770
if test -z "$potlib" ; then
3771
$echo "*** with $libname but no candidates were found. (...for regex pattern test)"
3773
$echo "*** with $libname and none of the candidates passed a file format test"
3774
$echo "*** using a regex pattern. Last file checked: $potlib"
3778
# Add a -L argument.
3779
newdeplibs="$newdeplibs $a_deplib"
3781
done # Gone through all deplibs.
3785
tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
3786
-e 's/ -[LR][^ ]*//g'`
3787
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
3788
for i in $predeps $postdeps ; do
3789
# can't use Xsed below, because $i might contain '/'
3790
tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
3793
if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
3794
| grep . >/dev/null; then
3796
if test "X$deplibs_check_method" = "Xnone"; then
3797
$echo "*** Warning: inter-library dependencies are not supported in this platform."
3799
$echo "*** Warning: inter-library dependencies are not known to be supported."
3801
$echo "*** All declared inter-library dependencies are being dropped."
3806
versuffix=$versuffix_save
3808
release=$release_save
3809
libname=$libname_save
3813
*-*-rhapsody* | *-*-darwin1.[012])
3814
# On Rhapsody replace the C library is the System framework
3815
newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
3819
if test "$droppeddeps" = yes; then
3820
if test "$module" = yes; then
3822
$echo "*** Warning: libtool could not satisfy all declared inter-library"
3823
$echo "*** dependencies of module $libname. Therefore, libtool will create"
3824
$echo "*** a static module, that should work as long as the dlopening"
3825
$echo "*** application is linked with the -dlopen flag."
3826
if test -z "$global_symbol_pipe"; then
3828
$echo "*** However, this would only work if libtool was able to extract symbol"
3829
$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
3830
$echo "*** not find such a program. So, this module is probably useless."
3831
$echo "*** \`nm' from GNU binutils and a full rebuild may help."
3833
if test "$build_old_libs" = no; then
3834
oldlibs="$output_objdir/$libname.$libext"
3835
build_libtool_libs=module
3838
build_libtool_libs=no
3841
$echo "*** The inter-library dependencies that have been dropped here will be"
3842
$echo "*** automatically added whenever a program is linked with this library"
3843
$echo "*** or is declared to -dlopen it."
3845
if test "$allow_undefined" = no; then
3847
$echo "*** Since this library must not contain undefined symbols,"
3848
$echo "*** because either the platform does not support them or"
3849
$echo "*** it was explicitly requested with -no-undefined,"
3850
$echo "*** libtool will only create a static version of it."
3851
if test "$build_old_libs" = no; then
3852
oldlibs="$output_objdir/$libname.$libext"
3853
build_libtool_libs=module
3856
build_libtool_libs=no
3861
# Done checking deplibs!
3866
# move library search paths that coincide with paths to not yet
3867
# installed libraries to the beginning of the library search list
3869
for path in $notinst_path; do
3870
case " $new_libs " in
3871
*" -L$path/$objdir "*) ;;
3873
case " $deplibs " in
3874
*" -L$path/$objdir "*)
3875
new_libs="$new_libs -L$path/$objdir" ;;
3880
for deplib in $deplibs; do
3883
case " $new_libs " in
3885
*) new_libs="$new_libs $deplib" ;;
3888
*) new_libs="$new_libs $deplib" ;;
3894
# All the library-specific variables (install_libdir is set above).
3899
# Test again, we may have decided not to build it any more
3900
if test "$build_libtool_libs" = yes; then
3901
if test "$hardcode_into_libs" = yes; then
3902
# Hardcode the library paths
3905
rpath="$finalize_rpath"
3906
test "$mode" != relink && rpath="$compile_rpath$rpath"
3907
for libdir in $rpath; do
3908
if test -n "$hardcode_libdir_flag_spec"; then
3909
if test -n "$hardcode_libdir_separator"; then
3910
if test -z "$hardcode_libdirs"; then
3911
hardcode_libdirs="$libdir"
3913
# Just accumulate the unique libdirs.
3914
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
3915
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
3918
hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
3923
eval flag=\"$hardcode_libdir_flag_spec\"
3924
dep_rpath="$dep_rpath $flag"
3926
elif test -n "$runpath_var"; then
3927
case "$perm_rpath " in
3929
*) perm_rpath="$perm_rpath $libdir" ;;
3933
# Substitute the hardcoded libdirs into the rpath.
3934
if test -n "$hardcode_libdir_separator" &&
3935
test -n "$hardcode_libdirs"; then
3936
libdir="$hardcode_libdirs"
3937
if test -n "$hardcode_libdir_flag_spec_ld"; then
3938
eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
3940
eval dep_rpath=\"$hardcode_libdir_flag_spec\"
3943
if test -n "$runpath_var" && test -n "$perm_rpath"; then
3944
# We should set the runpath_var.
3946
for dir in $perm_rpath; do
3949
eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
3951
test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
3954
shlibpath="$finalize_shlibpath"
3955
test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
3956
if test -n "$shlibpath"; then
3957
eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
3960
# Get the real and link names of the library.
3961
eval shared_ext=\"$shrext_cmds\"
3962
eval library_names=\"$library_names_spec\"
3963
set dummy $library_names
3967
if test -n "$soname_spec"; then
3968
eval soname=\"$soname_spec\"
3972
if test -z "$dlname"; then
3976
lib="$output_objdir/$realname"
3980
linknames="$linknames $link"
3983
# Use standard objects if they are pic
3984
test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3986
# Prepare the list of exported symbols
3987
if test -z "$export_symbols"; then
3988
if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
3989
$show "generating symbol list for \`$libname.la'"
3990
export_symbols="$output_objdir/$libname.exp"
3991
$run $rm $export_symbols
3992
cmds=$export_symbols_cmds
3993
save_ifs="$IFS"; IFS='~'
3994
for cmd in $cmds; do
3997
if len=`expr "X$cmd" : ".*"` &&
3998
test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4000
$run eval "$cmd" || exit $?
4001
skipped_export=false
4003
# The command line is too long to execute in one step.
4004
$show "using reloadable object file for export list..."
4006
# Break out early, otherwise skipped_export may be
4007
# set to false by a later but shorter cmd.
4012
if test -n "$export_symbols_regex"; then
4013
$show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
4014
$run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
4015
$show "$mv \"${export_symbols}T\" \"$export_symbols\""
4016
$run eval '$mv "${export_symbols}T" "$export_symbols"'
4021
if test -n "$export_symbols" && test -n "$include_expsyms"; then
4022
$run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
4026
for test_deplib in $deplibs; do
4027
case " $convenience " in
4028
*" $test_deplib "*) ;;
4030
tmp_deplibs="$tmp_deplibs $test_deplib"
4034
deplibs="$tmp_deplibs"
4036
if test -n "$convenience"; then
4037
if test -n "$whole_archive_flag_spec"; then
4038
save_libobjs=$libobjs
4039
eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4041
gentop="$output_objdir/${outputname}x"
4042
generated="$generated $gentop"
4044
func_extract_archives $gentop $convenience
4045
libobjs="$libobjs $func_extract_archives_result"
4049
if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
4050
eval flag=\"$thread_safe_flag_spec\"
4051
linker_flags="$linker_flags $flag"
4054
# Make a backup of the uninstalled library when relinking
4055
if test "$mode" = relink; then
4056
$run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
4059
# Do each of the archive commands.
4060
if test "$module" = yes && test -n "$module_cmds" ; then
4061
if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4062
eval test_cmds=\"$module_expsym_cmds\"
4063
cmds=$module_expsym_cmds
4065
eval test_cmds=\"$module_cmds\"
4069
if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4070
eval test_cmds=\"$archive_expsym_cmds\"
4071
cmds=$archive_expsym_cmds
4073
eval test_cmds=\"$archive_cmds\"
4078
if test "X$skipped_export" != "X:" &&
4079
len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4080
test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
4083
# The command line is too long to link in one step, link piecewise.
4084
$echo "creating reloadable object files..."
4086
# Save the value of $output and $libobjs because we want to
4087
# use them later. If we have whole_archive_flag_spec, we
4088
# want to use save_libobjs as it was before
4089
# whole_archive_flag_spec was expanded, because we can't
4090
# assume the linker understands whole_archive_flag_spec.
4091
# This may have to be revisited, in case too many
4092
# convenience libraries get linked in and end up exceeding
4094
if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
4095
save_libobjs=$libobjs
4098
output_la=`$echo "X$output" | $Xsed -e "$basename"`
4100
# Clear the reloadable object creation command queue and
4101
# initialize k to one.
4108
output=$output_objdir/$output_la-${k}.$objext
4109
# Loop over the list of objects to be linked.
4110
for obj in $save_libobjs
4112
eval test_cmds=\"$reload_cmds $objlist $last_robj\"
4113
if test "X$objlist" = X ||
4114
{ len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
4115
test "$len" -le "$max_cmd_len"; }; then
4116
objlist="$objlist $obj"
4118
# The command $test_cmds is almost too long, add a
4119
# command to the queue.
4120
if test "$k" -eq 1 ; then
4121
# The first file doesn't have a previous command to add.
4122
eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
4124
# All subsequent reloadable object files will link in
4125
# the last one created.
4126
eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
4128
last_robj=$output_objdir/$output_la-${k}.$objext
4130
output=$output_objdir/$output_la-${k}.$objext
4135
# Handle the remaining objects by creating one last
4136
# reloadable object file. All subsequent reloadable object
4137
# files will link in the last one created.
4138
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
4139
eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
4141
if ${skipped_export-false}; then
4142
$show "generating symbol list for \`$libname.la'"
4143
export_symbols="$output_objdir/$libname.exp"
4144
$run $rm $export_symbols
4146
# Append the command to create the export file.
4147
eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
4150
# Set up a command to remove the reloadable object files
4151
# after they are used.
4153
while test "$i" -lt "$k"
4156
delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
4159
$echo "creating a temporary reloadable object file: $output"
4161
# Loop through the commands generated above and execute them.
4162
save_ifs="$IFS"; IFS='~'
4163
for cmd in $concat_cmds; do
4166
$run eval "$cmd" || exit $?
4171
# Restore the value of output.
4174
if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
4175
eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
4177
# Expand the library linking commands again to reset the
4178
# value of $libobjs for piecewise linking.
4180
# Do each of the archive commands.
4181
if test "$module" = yes && test -n "$module_cmds" ; then
4182
if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
4183
cmds=$module_expsym_cmds
4188
if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
4189
cmds=$archive_expsym_cmds
4195
# Append the command to remove the reloadable object files
4196
# to the just-reset $cmds.
4197
eval cmds=\"\$cmds~\$rm $delfiles\"
4199
save_ifs="$IFS"; IFS='~'
4200
for cmd in $cmds; do
4204
$run eval "$cmd" || {
4207
# Restore the uninstalled library and exit
4208
if test "$mode" = relink; then
4209
$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
4217
# Restore the uninstalled library and exit
4218
if test "$mode" = relink; then
4219
$run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
4221
if test -n "$convenience"; then
4222
if test -z "$whole_archive_flag_spec"; then
4223
$show "${rm}r $gentop"
4224
$run ${rm}r "$gentop"
4231
# Create links to the real library.
4232
for linkname in $linknames; do
4233
if test "$realname" != "$linkname"; then
4234
$show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
4235
$run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
4239
# If -module or -export-dynamic was specified, set the dlname.
4240
if test "$module" = yes || test "$export_dynamic" = yes; then
4241
# On all known operating systems, these are identical.
4248
if test -n "$deplibs"; then
4249
$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
4252
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4253
$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
4256
if test -n "$rpath"; then
4257
$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
4260
if test -n "$xrpath"; then
4261
$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
4264
if test -n "$vinfo"; then
4265
$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
4268
if test -n "$release"; then
4269
$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
4274
if test -n "$objs$old_deplibs"; then
4275
$echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
4279
obj=`$echo "X$output" | $Xsed -e "$lo2o"`
4287
# Delete the old objects.
4288
$run $rm $obj $libobj
4290
# Objects from convenience libraries. This assumes
4291
# single-version convenience libraries. Whenever we create
4292
# different ones for PIC/non-PIC, this we'll have to duplicate
4296
# reload_cmds runs $LD directly, so let us get rid of
4297
# -Wl from whole_archive_flag_spec
4300
if test -n "$convenience"; then
4301
if test -n "$whole_archive_flag_spec"; then
4302
eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
4304
gentop="$output_objdir/${obj}x"
4305
generated="$generated $gentop"
4307
func_extract_archives $gentop $convenience
4308
reload_conv_objs="$reload_objs $func_extract_archives_result"
4312
# Create the old-style object.
4313
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
4317
save_ifs="$IFS"; IFS='~'
4318
for cmd in $cmds; do
4322
$run eval "$cmd" || exit $?
4326
# Exit if we aren't doing a library object file.
4327
if test -z "$libobj"; then
4328
if test -n "$gentop"; then
4329
$show "${rm}r $gentop"
4336
if test "$build_libtool_libs" != yes; then
4337
if test -n "$gentop"; then
4338
$show "${rm}r $gentop"
4342
# Create an invalid libtool object if no PIC, so that we don't
4343
# accidentally link it into a program.
4344
# $show "echo timestamp > $libobj"
4345
# $run eval "echo timestamp > $libobj" || exit $?
4349
if test -n "$pic_flag" || test "$pic_mode" != default; then
4350
# Only do commands if we really have different PIC objects.
4351
reload_objs="$libobjs $reload_conv_objs"
4354
save_ifs="$IFS"; IFS='~'
4355
for cmd in $cmds; do
4359
$run eval "$cmd" || exit $?
4364
if test -n "$gentop"; then
4365
$show "${rm}r $gentop"
4374
*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
4376
if test -n "$vinfo"; then
4377
$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
4380
if test -n "$release"; then
4381
$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
4384
if test "$preload" = yes; then
4385
if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
4386
test "$dlopen_self_static" = unknown; then
4387
$echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
4392
*-*-rhapsody* | *-*-darwin1.[012])
4393
# On Rhapsody replace the C library is the System framework
4394
compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4395
finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
4401
# Don't allow lazy linking, it breaks C++ global constructors
4402
if test "$tagname" = CXX ; then
4403
compile_command="$compile_command ${wl}-bind_at_load"
4404
finalize_command="$finalize_command ${wl}-bind_at_load"
4410
# move library search paths that coincide with paths to not yet
4411
# installed libraries to the beginning of the library search list
4413
for path in $notinst_path; do
4414
case " $new_libs " in
4415
*" -L$path/$objdir "*) ;;
4417
case " $compile_deplibs " in
4418
*" -L$path/$objdir "*)
4419
new_libs="$new_libs -L$path/$objdir" ;;
4424
for deplib in $compile_deplibs; do
4427
case " $new_libs " in
4429
*) new_libs="$new_libs $deplib" ;;
4432
*) new_libs="$new_libs $deplib" ;;
4435
compile_deplibs="$new_libs"
4438
compile_command="$compile_command $compile_deplibs"
4439
finalize_command="$finalize_command $finalize_deplibs"
4441
if test -n "$rpath$xrpath"; then
4442
# If the user specified any rpath flags, then add them.
4443
for libdir in $rpath $xrpath; do
4444
# This is the magic to use -rpath.
4445
case "$finalize_rpath " in
4447
*) finalize_rpath="$finalize_rpath $libdir" ;;
4452
# Now hardcode the library paths
4455
for libdir in $compile_rpath $finalize_rpath; do
4456
if test -n "$hardcode_libdir_flag_spec"; then
4457
if test -n "$hardcode_libdir_separator"; then
4458
if test -z "$hardcode_libdirs"; then
4459
hardcode_libdirs="$libdir"
4461
# Just accumulate the unique libdirs.
4462
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4463
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4466
hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4471
eval flag=\"$hardcode_libdir_flag_spec\"
4472
rpath="$rpath $flag"
4474
elif test -n "$runpath_var"; then
4475
case "$perm_rpath " in
4477
*) perm_rpath="$perm_rpath $libdir" ;;
4481
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
4482
testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
4483
case :$dllsearchpath: in
4485
*) dllsearchpath="$dllsearchpath:$libdir";;
4487
case :$dllsearchpath: in
4488
*":$testbindir:"*) ;;
4489
*) dllsearchpath="$dllsearchpath:$testbindir";;
4494
# Substitute the hardcoded libdirs into the rpath.
4495
if test -n "$hardcode_libdir_separator" &&
4496
test -n "$hardcode_libdirs"; then
4497
libdir="$hardcode_libdirs"
4498
eval rpath=\" $hardcode_libdir_flag_spec\"
4500
compile_rpath="$rpath"
4504
for libdir in $finalize_rpath; do
4505
if test -n "$hardcode_libdir_flag_spec"; then
4506
if test -n "$hardcode_libdir_separator"; then
4507
if test -z "$hardcode_libdirs"; then
4508
hardcode_libdirs="$libdir"
4510
# Just accumulate the unique libdirs.
4511
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
4512
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
4515
hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
4520
eval flag=\"$hardcode_libdir_flag_spec\"
4521
rpath="$rpath $flag"
4523
elif test -n "$runpath_var"; then
4524
case "$finalize_perm_rpath " in
4526
*) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
4530
# Substitute the hardcoded libdirs into the rpath.
4531
if test -n "$hardcode_libdir_separator" &&
4532
test -n "$hardcode_libdirs"; then
4533
libdir="$hardcode_libdirs"
4534
eval rpath=\" $hardcode_libdir_flag_spec\"
4536
finalize_rpath="$rpath"
4538
if test -n "$libobjs" && test "$build_old_libs" = yes; then
4539
# Transform all the library objects into standard objects.
4540
compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4541
finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4545
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
4546
if test -n "$NM" && test -n "$global_symbol_pipe"; then
4547
dlsyms="${outputname}S.c"
4549
$echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
4553
if test -n "$dlsyms"; then
4557
# Discover the nlist of each of the dlfiles.
4558
nlist="$output_objdir/${outputname}.nm"
4560
$show "$rm $nlist ${nlist}S ${nlist}T"
4561
$run $rm "$nlist" "${nlist}S" "${nlist}T"
4563
# Parse the name list into a source file.
4564
$show "creating $output_objdir/$dlsyms"
4566
test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
4567
/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
4568
/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
4574
/* Prevent the only kind of declaration conflicts we can make. */
4575
#define lt_preloaded_symbols some_other_symbol
4577
/* External symbol declarations for the compiler. */\
4580
if test "$dlself" = yes; then
4581
$show "generating symbol list for \`$output'"
4583
test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
4585
# Add our own program objects to the symbol list.
4586
progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
4587
for arg in $progfiles; do
4588
$show "extracting global C symbols from \`$arg'"
4589
$run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4592
if test -n "$exclude_expsyms"; then
4593
$run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
4594
$run eval '$mv "$nlist"T "$nlist"'
4597
if test -n "$export_symbols_regex"; then
4598
$run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
4599
$run eval '$mv "$nlist"T "$nlist"'
4602
# Prepare the list of exported symbols
4603
if test -z "$export_symbols"; then
4604
export_symbols="$output_objdir/$outputname.exp"
4605
$run $rm $export_symbols
4606
$run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
4608
*cygwin* | *mingw* )
4609
$run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4610
$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
4614
$run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
4615
$run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
4616
$run eval 'mv "$nlist"T "$nlist"'
4618
*cygwin* | *mingw* )
4619
$run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
4620
$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
4626
for arg in $dlprefiles; do
4627
$show "extracting global C symbols from \`$arg'"
4628
name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
4629
$run eval '$echo ": $name " >> "$nlist"'
4630
$run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
4633
if test -z "$run"; then
4634
# Make sure we have at least an empty file.
4635
test -f "$nlist" || : > "$nlist"
4637
if test -n "$exclude_expsyms"; then
4638
$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
4639
$mv "$nlist"T "$nlist"
4642
# Try sorting and uniquifying the output.
4643
if grep -v "^: " < "$nlist" |
4644
if sort -k 3 </dev/null >/dev/null 2>&1; then
4649
uniq > "$nlist"S; then
4652
grep -v "^: " < "$nlist" > "$nlist"S
4655
if test -f "$nlist"S; then
4656
eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
4658
$echo '/* NONE */' >> "$output_objdir/$dlsyms"
4661
$echo >> "$output_objdir/$dlsyms" "\
4663
#undef lt_preloaded_symbols
4665
#if defined (__STDC__) && __STDC__
4666
# define lt_ptr void *
4668
# define lt_ptr char *
4672
/* The mapping between symbol names and symbols. */
4676
*cygwin* | *mingw* )
4677
$echo >> "$output_objdir/$dlsyms" "\
4678
/* DATA imports from DLLs on WIN32 can't be const, because
4679
runtime relocations are performed -- see ld's documentation
4685
$echo >> "$output_objdir/$dlsyms" "\
4692
$echo >> "$output_objdir/$dlsyms" "\
4696
lt_preloaded_symbols[] =
4700
eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
4702
$echo >> "$output_objdir/$dlsyms" "\
4706
/* This works around a problem in FreeBSD linker */
4707
#ifdef FREEBSD_WORKAROUND
4708
static const void *lt_preloaded_setup() {
4709
return lt_preloaded_symbols;
4719
pic_flag_for_symtable=
4721
# compiling the symbol table file with pic_flag works around
4722
# a FreeBSD bug that causes programs to crash when -lm is
4723
# linked before any other PIC object. But we must not use
4724
# pic_flag when linking with -static. The problem exists in
4725
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
4726
*-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
4727
case "$compile_command " in
4729
*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
4732
case "$compile_command " in
4734
*) pic_flag_for_symtable=" $pic_flag";;
4738
# Now compile the dynamic symbol file.
4739
$show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
4740
$run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
4742
# Clean up the generated files.
4743
$show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
4744
$run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
4746
# Transform the symbol file into the correct name.
4748
*cygwin* | *mingw* )
4749
if test -f "$output_objdir/${outputname}.def" ; then
4750
compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
4751
finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
4753
compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4754
finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4758
compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4759
finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
4764
$echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
4769
# We keep going just in case the user didn't refer to
4770
# lt_preloaded_symbols. The linker will fail if global_symbol_pipe
4771
# really was required.
4773
# Nullify the symbol file.
4774
compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
4775
finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
4778
if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
4779
# Replace the output file specification.
4780
compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4781
link_command="$compile_command$compile_rpath"
4783
# We have no uninstalled library dependencies, so finalize right now.
4784
$show "$link_command"
4785
$run eval "$link_command"
4788
# Delete the generated files.
4789
if test -n "$dlsyms"; then
4790
$show "$rm $output_objdir/${outputname}S.${objext}"
4791
$run $rm "$output_objdir/${outputname}S.${objext}"
4797
if test -n "$shlibpath_var"; then
4798
# We should set the shlibpath_var
4800
for dir in $temp_rpath; do
4802
[\\/]* | [A-Za-z]:[\\/]*)
4807
# Relative path: add a thisdir entry.
4808
rpath="$rpath\$thisdir/$dir:"
4815
if test -n "$compile_shlibpath$finalize_shlibpath"; then
4816
compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
4818
if test -n "$finalize_shlibpath"; then
4819
finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
4824
if test -n "$runpath_var"; then
4825
if test -n "$perm_rpath"; then
4826
# We should set the runpath_var.
4828
for dir in $perm_rpath; do
4831
compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
4833
if test -n "$finalize_perm_rpath"; then
4834
# We should set the runpath_var.
4836
for dir in $finalize_perm_rpath; do
4839
finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
4843
if test "$no_install" = yes; then
4844
# We don't need to create a wrapper script.
4845
link_command="$compile_var$compile_command$compile_rpath"
4846
# Replace the output file specification.
4847
link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
4848
# Delete the old output file.
4850
# Link the executable and exit
4851
$show "$link_command"
4852
$run eval "$link_command" || exit $?
4856
if test "$hardcode_action" = relink; then
4857
# Fast installation is not supported
4858
link_command="$compile_var$compile_command$compile_rpath"
4859
relink_command="$finalize_var$finalize_command$finalize_rpath"
4861
$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
4862
$echo "$modename: \`$output' will be relinked during installation" 1>&2
4864
if test "$fast_install" != no; then
4865
link_command="$finalize_var$compile_command$finalize_rpath"
4866
if test "$fast_install" = yes; then
4867
relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
4869
# fast_install is set to needless
4873
link_command="$compile_var$compile_command$compile_rpath"
4874
relink_command="$finalize_var$finalize_command$finalize_rpath"
4878
# Replace the output file specification.
4879
link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
4881
# Delete the old output files.
4882
$run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
4884
$show "$link_command"
4885
$run eval "$link_command" || exit $?
4887
# Now create the wrapper script.
4888
$show "creating $output"
4890
# Quote the relink command for shipping.
4891
if test -n "$relink_command"; then
4892
# Preserve any variables that may affect compiler behavior
4893
for var in $variables_saved_for_relink; do
4894
if eval test -z \"\${$var+set}\"; then
4895
relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
4896
elif eval var_value=\$$var; test -z "$var_value"; then
4897
relink_command="$var=; export $var; $relink_command"
4899
var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4900
relink_command="$var=\"$var_value\"; export $var; $relink_command"
4903
relink_command="(cd `pwd`; $relink_command)"
4904
relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
4907
# Quote $echo for shipping.
4908
if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
4910
[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
4911
*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
4913
qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4915
qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
4918
# Only actually do things if our run command is non-null.
4919
if test -z "$run"; then
4920
# win32 will think the script is a binary if it has
4921
# a .exe suffix, so we strip it off here.
4923
*.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
4925
# test for cygwin because mv fails w/o .exe extensions
4929
outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
4933
*cygwin* | *mingw* )
4934
output_name=`basename $output`
4935
output_path=`dirname $output`
4936
cwrappersource="$output_path/$objdir/lt-$output_name.c"
4937
cwrapper="$output_path/$output_name.exe"
4938
$rm $cwrappersource $cwrapper
4939
trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
4941
cat > $cwrappersource <<EOF
4943
/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4944
Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4946
The $output program cannot be directly executed until all the libtool
4947
libraries that it depends on are installed.
4949
This wrapper executable should never be moved out of the build directory.
4950
If it is, it will not operate correctly.
4952
Currently, it simply execs the wrapper *script* "/bin/sh $output",
4953
but could eventually absorb all of the scripts functionality and
4954
exec $objdir/$outputname directly.
4957
cat >> $cwrappersource<<"EOF"
4966
#include <sys/stat.h>
4968
#if defined(PATH_MAX)
4969
# define LT_PATHMAX PATH_MAX
4970
#elif defined(MAXPATHLEN)
4971
# define LT_PATHMAX MAXPATHLEN
4973
# define LT_PATHMAX 1024
4976
#ifndef DIR_SEPARATOR
4977
# define DIR_SEPARATOR '/'
4978
# define PATH_SEPARATOR ':'
4981
#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4983
# define HAVE_DOS_BASED_FILE_SYSTEM
4984
# ifndef DIR_SEPARATOR_2
4985
# define DIR_SEPARATOR_2 '\\'
4987
# ifndef PATH_SEPARATOR_2
4988
# define PATH_SEPARATOR_2 ';'
4992
#ifndef DIR_SEPARATOR_2
4993
# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4994
#else /* DIR_SEPARATOR_2 */
4995
# define IS_DIR_SEPARATOR(ch) \
4996
(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4997
#endif /* DIR_SEPARATOR_2 */
4999
#ifndef PATH_SEPARATOR_2
5000
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5001
#else /* PATH_SEPARATOR_2 */
5002
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5003
#endif /* PATH_SEPARATOR_2 */
5005
#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
5006
#define XFREE(stale) do { \
5007
if (stale) { free ((void *) stale); stale = 0; } \
5010
/* -DDEBUG is fairly common in CFLAGS. */
5012
#if defined DEBUGWRAPPER
5013
# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
5015
# define DEBUG(format, ...)
5018
const char *program_name = NULL;
5020
void * xmalloc (size_t num);
5021
char * xstrdup (const char *string);
5022
const char * base_name (const char *name);
5023
char * find_executable(const char *wrapper);
5024
int check_executable(const char *path);
5025
char * strendzap(char *str, const char *pat);
5026
void lt_fatal (const char *message, ...);
5029
main (int argc, char *argv[])
5034
program_name = (char *) xstrdup (base_name (argv[0]));
5035
DEBUG("(main) argv[0] : %s\n",argv[0]);
5036
DEBUG("(main) program_name : %s\n",program_name);
5037
newargz = XMALLOC(char *, argc+2);
5040
cat >> $cwrappersource <<EOF
5041
newargz[0] = (char *) xstrdup("$SHELL");
5044
cat >> $cwrappersource <<"EOF"
5045
newargz[1] = find_executable(argv[0]);
5046
if (newargz[1] == NULL)
5047
lt_fatal("Couldn't find %s", argv[0]);
5048
DEBUG("(main) found exe at : %s\n",newargz[1]);
5049
/* we know the script has the same name, without the .exe */
5050
/* so make sure newargz[1] doesn't end in .exe */
5051
strendzap(newargz[1],".exe");
5052
for (i = 1; i < argc; i++)
5053
newargz[i+1] = xstrdup(argv[i]);
5054
newargz[argc+1] = NULL;
5056
for (i=0; i<argc+1; i++)
5058
DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
5066
cat >> $cwrappersource <<EOF
5067
execv("$SHELL",(char const **)newargz);
5071
cat >> $cwrappersource <<EOF
5072
execv("$SHELL",newargz);
5077
cat >> $cwrappersource <<"EOF"
5082
xmalloc (size_t num)
5084
void * p = (void *) malloc (num);
5086
lt_fatal ("Memory exhausted");
5092
xstrdup (const char *string)
5094
return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
5099
base_name (const char *name)
5103
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5104
/* Skip over the disk name in MSDOS pathnames. */
5105
if (isalpha ((unsigned char)name[0]) && name[1] == ':')
5109
for (base = name; *name; name++)
5110
if (IS_DIR_SEPARATOR (*name))
5116
check_executable(const char * path)
5120
DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
5121
if ((!path) || (!*path))
5124
if ((stat (path, &st) >= 0) &&
5126
/* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
5127
#if defined (S_IXOTH)
5128
((st.st_mode & S_IXOTH) == S_IXOTH) ||
5130
#if defined (S_IXGRP)
5131
((st.st_mode & S_IXGRP) == S_IXGRP) ||
5133
((st.st_mode & S_IXUSR) == S_IXUSR))
5140
/* Searches for the full path of the wrapper. Returns
5141
newly allocated full path name if found, NULL otherwise */
5143
find_executable (const char* wrapper)
5148
/* static buffer for getcwd */
5149
char tmp[LT_PATHMAX + 1];
5153
DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
5155
if ((wrapper == NULL) || (*wrapper == '\0'))
5158
/* Absolute path? */
5159
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5160
if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
5162
concat_name = xstrdup (wrapper);
5163
if (check_executable(concat_name))
5170
if (IS_DIR_SEPARATOR (wrapper[0]))
5172
concat_name = xstrdup (wrapper);
5173
if (check_executable(concat_name))
5177
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5181
for (p = wrapper; *p; p++)
5189
/* no slashes; search PATH */
5190
const char* path = getenv ("PATH");
5193
for (p = path; *p; p = p_next)
5197
for (q = p; *q; q++)
5198
if (IS_PATH_SEPARATOR(*q))
5201
p_next = (*q == '\0' ? q : q + 1);
5204
/* empty path: current directory */
5205
if (getcwd (tmp, LT_PATHMAX) == NULL)
5206
lt_fatal ("getcwd failed");
5207
tmp_len = strlen(tmp);
5208
concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5209
memcpy (concat_name, tmp, tmp_len);
5210
concat_name[tmp_len] = '/';
5211
strcpy (concat_name + tmp_len + 1, wrapper);
5215
concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
5216
memcpy (concat_name, p, p_len);
5217
concat_name[p_len] = '/';
5218
strcpy (concat_name + p_len + 1, wrapper);
5220
if (check_executable(concat_name))
5225
/* not found in PATH; assume curdir */
5227
/* Relative path | not found in path: prepend cwd */
5228
if (getcwd (tmp, LT_PATHMAX) == NULL)
5229
lt_fatal ("getcwd failed");
5230
tmp_len = strlen(tmp);
5231
concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5232
memcpy (concat_name, tmp, tmp_len);
5233
concat_name[tmp_len] = '/';
5234
strcpy (concat_name + tmp_len + 1, wrapper);
5236
if (check_executable(concat_name))
5243
strendzap(char *str, const char *pat)
5247
assert(str != NULL);
5248
assert(pat != NULL);
5251
patlen = strlen(pat);
5255
str += len - patlen;
5256
if (strcmp(str, pat) == 0)
5263
lt_error_core (int exit_status, const char * mode,
5264
const char * message, va_list ap)
5266
fprintf (stderr, "%s: %s: ", program_name, mode);
5267
vfprintf (stderr, message, ap);
5268
fprintf (stderr, ".\n");
5270
if (exit_status >= 0)
5275
lt_fatal (const char *message, ...)
5278
va_start (ap, message);
5279
lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
5283
# we should really use a build-platform specific compiler
5284
# here, but OTOH, the wrappers (shell script and this C one)
5285
# are only useful if you want to execute the "real" binary.
5286
# Since the "real" binary is built for $host, then this
5287
# wrapper might as well be built for $host, too.
5288
$run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
5292
trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
5297
# $output - temporary wrapper script for $objdir/$outputname
5298
# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5300
# The $output program cannot be directly executed until all the libtool
5301
# libraries that it depends on are installed.
5303
# This wrapper script should never be moved out of the build directory.
5304
# If it is, it will not operate correctly.
5306
# Sed substitution that helps us do robust quoting. It backslashifies
5307
# metacharacters that are still active within double-quoted strings.
5308
Xsed='${SED} -e 1s/^X//'
5309
sed_quote_subst='$sed_quote_subst'
5311
# The HP-UX ksh and POSIX shell print the target directory to stdout
5313
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5315
relink_command=\"$relink_command\"
5317
# This environment variable determines our operation mode.
5318
if test \"\$libtool_install_magic\" = \"$magic\"; then
5319
# install mode needs the following variable:
5320
notinst_deplibs='$notinst_deplibs'
5322
# When we are sourced in execute mode, \$file and \$echo are already set.
5323
if test \"\$libtool_execute_magic\" != \"$magic\"; then
5326
# Make sure echo works.
5327
if test \"X\$1\" = X--no-reexec; then
5328
# Discard the --no-reexec flag, and continue.
5330
elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
5331
# Yippee, \$echo works!
5334
# Restart under the correct shell, and then maybe \$echo will work.
5335
exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
5341
# Find the directory that this script lives in.
5342
thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
5343
test \"x\$thisdir\" = \"x\$file\" && thisdir=.
5345
# Follow symbolic links until we get to the real thisdir.
5346
file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
5347
while test -n \"\$file\"; do
5348
destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
5350
# If there was a directory component, then change thisdir.
5351
if test \"x\$destdir\" != \"x\$file\"; then
5352
case \"\$destdir\" in
5353
[\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5354
*) thisdir=\"\$thisdir/\$destdir\" ;;
5358
file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
5359
file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
5362
# Try to get the absolute directory name.
5363
absdir=\`cd \"\$thisdir\" && pwd\`
5364
test -n \"\$absdir\" && thisdir=\"\$absdir\"
5367
if test "$fast_install" = yes; then
5369
program=lt-'$outputname'$exeext
5370
progdir=\"\$thisdir/$objdir\"
5372
if test ! -f \"\$progdir/\$program\" || \\
5373
{ file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
5374
test \"X\$file\" != \"X\$progdir/\$program\"; }; then
5376
file=\"\$\$-\$program\"
5378
if test ! -d \"\$progdir\"; then
5379
$mkdir \"\$progdir\"
5381
$rm \"\$progdir/\$file\"
5386
# relink executable if necessary
5387
if test -n \"\$relink_command\"; then
5388
if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5390
$echo \"\$relink_command_output\" >&2
5391
$rm \"\$progdir/\$file\"
5396
$mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5397
{ $rm \"\$progdir/\$program\";
5398
$mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5399
$rm \"\$progdir/\$file\"
5403
program='$outputname'
5404
progdir=\"\$thisdir/$objdir\"
5410
if test -f \"\$progdir/\$program\"; then"
5412
# Export our shlibpath_var if we have one.
5413
if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5415
# Add our own library path to $shlibpath_var
5416
$shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5418
# Some systems cannot cope with colon-terminated $shlibpath_var
5419
# The second colon is a workaround for a bug in BeOS R4 sed
5420
$shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
5422
export $shlibpath_var
5426
# fixup the dll searchpath if we need to.
5427
if test -n "$dllsearchpath"; then
5429
# Add the dll search path components to the executable PATH
5430
PATH=$dllsearchpath:\$PATH
5435
if test \"\$libtool_execute_magic\" != \"$magic\"; then
5436
# Run the actual program with our arguments.
5438
# Make sure env LD_LIBRARY_PATH does not mess us up
5439
if test -n \"\${LD_LIBRARY_PATH+set}\"; then
5440
export LD_LIBRARY_PATH=\$progdir:\$LD_LIBRARY_PATH
5444
# Backslashes separate directories on plain windows
5445
*-*-mingw | *-*-os2*)
5447
exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
5453
exec \"\$progdir/\$program\" \${1+\"\$@\"}
5458
\$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
5462
# The program doesn't exist.
5463
\$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
5464
\$echo \"This script is just a wrapper for \$program.\" 1>&2
5465
$echo \"See the $PACKAGE documentation for more information.\" 1>&2
5476
# See if we need to build an old-fashioned archive.
5477
for oldlib in $oldlibs; do
5479
if test "$build_libtool_libs" = convenience; then
5480
oldobjs="$libobjs_save"
5481
addlibs="$convenience"
5482
build_libtool_libs=no
5484
if test "$build_libtool_libs" = module; then
5485
oldobjs="$libobjs_save"
5486
build_libtool_libs=no
5488
oldobjs="$old_deplibs $non_pic_objects"
5490
addlibs="$old_convenience"
5493
if test -n "$addlibs"; then
5494
gentop="$output_objdir/${outputname}x"
5495
generated="$generated $gentop"
5497
func_extract_archives $gentop $addlibs
5498
oldobjs="$oldobjs $func_extract_archives_result"
5501
# Do each command in the archive commands.
5502
if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
5503
cmds=$old_archive_from_new_cmds
5505
# POSIX demands no paths to be encoded in archives. We have
5506
# to avoid creating archives with duplicate basenames if we
5507
# might have to extract them afterwards, e.g., when creating a
5508
# static archive out of a convenience library, or when linking
5509
# the entirety of a libtool archive into another (currently
5510
# not supported by libtool).
5511
if (for obj in $oldobjs
5513
$echo "X$obj" | $Xsed -e 's%^.*/%%'
5514
done | sort | sort -uc >/dev/null 2>&1); then
5517
$echo "copying selected object files to avoid basename conflicts..."
5519
if test -z "$gentop"; then
5520
gentop="$output_objdir/${outputname}x"
5521
generated="$generated $gentop"
5523
$show "${rm}r $gentop"
5524
$run ${rm}r "$gentop"
5525
$show "$mkdir $gentop"
5526
$run $mkdir "$gentop"
5528
if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
5533
save_oldobjs=$oldobjs
5536
for obj in $save_oldobjs
5538
objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
5539
case " $oldobjs " in
5540
" ") oldobjs=$obj ;;
5543
# Make sure we don't pick an alternate name that also
5545
newobj=lt$counter-$objbase
5546
counter=`expr $counter + 1`
5547
case " $oldobjs " in
5548
*[\ /]"$newobj "*) ;;
5549
*) if test ! -f "$gentop/$newobj"; then break; fi ;;
5552
$show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
5553
$run ln "$obj" "$gentop/$newobj" ||
5554
$run cp "$obj" "$gentop/$newobj"
5555
oldobjs="$oldobjs $gentop/$newobj"
5557
*) oldobjs="$oldobjs $obj" ;;
5562
eval cmds=\"$old_archive_cmds\"
5564
if len=`expr "X$cmds" : ".*"` &&
5565
test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
5566
cmds=$old_archive_cmds
5568
# the command line is too long to link in one step, link in parts
5569
$echo "using piecewise archive linking..."
5574
save_oldobjs=$oldobjs
5576
# Is there a better way of finding the last object in the list?
5577
for obj in $save_oldobjs
5581
for obj in $save_oldobjs
5583
oldobjs="$objlist $obj"
5584
objlist="$objlist $obj"
5585
eval test_cmds=\"$old_archive_cmds\"
5586
if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
5587
test "$len" -le "$max_cmd_len"; then
5590
# the above command should be used before it gets too long
5592
if test "$obj" = "$last_oldobj" ; then
5595
test -z "$concat_cmds" || concat_cmds=$concat_cmds~
5596
eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
5602
if test "X$oldobjs" = "X" ; then
5603
eval cmds=\"\$concat_cmds\"
5605
eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
5609
save_ifs="$IFS"; IFS='~'
5610
for cmd in $cmds; do
5614
$run eval "$cmd" || exit $?
5619
if test -n "$generated"; then
5620
$show "${rm}r$generated"
5621
$run ${rm}r$generated
5624
# Now create the libtool archive.
5628
test "$build_old_libs" = yes && old_library="$libname.$libext"
5629
$show "creating $output"
5631
# Preserve any variables that may affect compiler behavior
5632
for var in $variables_saved_for_relink; do
5633
if eval test -z \"\${$var+set}\"; then
5634
relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
5635
elif eval var_value=\$$var; test -z "$var_value"; then
5636
relink_command="$var=; export $var; $relink_command"
5638
var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
5639
relink_command="$var=\"$var_value\"; export $var; $relink_command"
5642
# Quote the link command for shipping.
5643
relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
5644
relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
5645
if test "$hardcode_automatic" = yes ; then
5650
# Only create the output if not a dry run.
5651
if test -z "$run"; then
5652
for installed in no yes; do
5653
if test "$installed" = yes; then
5654
if test -z "$install_libdir"; then
5657
output="$output_objdir/$outputname"i
5658
# Replace all uninstalled libtool libraries with the installed ones
5660
for deplib in $dependency_libs; do
5663
name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
5664
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
5665
if test -z "$libdir"; then
5666
$echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
5669
if test "X$EGREP" = X ; then
5672
# We do not want portage's install root ($D) present. Check only for
5673
# this if the .la is being installed.
5674
if test "$installed" = yes && test "$D"; then
5675
eval mynewdependency_lib=`echo "$libdir/$name" |sed -e "s:$D:/:g" -e 's:/\+:/:g'`
5677
mynewdependency_lib="$libdir/$name"
5679
# Do not add duplicates
5680
if test "$mynewdependency_lib"; then
5681
my_little_ninja_foo_1=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"`
5682
if test -z "$my_little_ninja_foo_1"; then
5683
newdependency_libs="$newdependency_libs $mynewdependency_lib"
5688
if test "$installed" = yes; then
5689
# Rather use S=WORKDIR if our version of portage supports it.
5690
# This is because some ebuild (gcc) do not use $S as buildroot.
5691
if test "$PWORKDIR"; then
5694
# We do not want portage's build root ($S) present.
5695
my_little_ninja_foo_2=`echo $deplib |$EGREP -e "$S"`
5696
# We do not want portage's install root ($D) present.
5697
my_little_ninja_foo_3=`echo $deplib |$EGREP -e "$D"`
5698
if test -n "$my_little_ninja_foo_2" && test "$S"; then
5699
mynewdependency_lib=""
5700
elif test -n "$my_little_ninja_foo_3" && test "$D"; then
5701
eval mynewdependency_lib=`echo "$deplib" |sed -e "s:$D:/:g" -e 's:/\+:/:g'`
5703
mynewdependency_lib="$deplib"
5706
mynewdependency_lib="$deplib"
5708
# Do not add duplicates
5709
if test "$mynewdependency_lib"; then
5710
my_little_ninja_foo_4=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"`
5711
if test -z "$my_little_ninja_foo_4"; then
5712
newdependency_libs="$newdependency_libs $mynewdependency_lib"
5718
dependency_libs="$newdependency_libs"
5720
for lib in $dlfiles; do
5721
name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5722
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5723
if test -z "$libdir"; then
5724
$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5727
newdlfiles="$newdlfiles $libdir/$name"
5729
dlfiles="$newdlfiles"
5731
for lib in $dlprefiles; do
5732
name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
5733
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
5734
if test -z "$libdir"; then
5735
$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
5738
newdlprefiles="$newdlprefiles $libdir/$name"
5740
dlprefiles="$newdlprefiles"
5743
for lib in $dlfiles; do
5745
[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5746
*) abs=`pwd`"/$lib" ;;
5748
newdlfiles="$newdlfiles $abs"
5750
dlfiles="$newdlfiles"
5752
for lib in $dlprefiles; do
5754
[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
5755
*) abs=`pwd`"/$lib" ;;
5757
newdlprefiles="$newdlprefiles $abs"
5759
dlprefiles="$newdlprefiles"
5762
# place dlname in correct position for cygwin
5764
case $host,$output,$installed,$module,$dlname in
5765
*cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
5767
# Do not add duplicates
5768
if test "$installed" = yes && test "$D"; then
5769
install_libdir=`echo "$install_libdir" |sed -e "s:$D:/:g" -e 's:/\+:/:g'`
5772
# $outputname - a libtool library file
5773
# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5775
# Please DO NOT delete this file!
5776
# It is necessary for linking the library.
5778
# The name that we can dlopen(3).
5781
# Names of this library.
5782
library_names='$library_names'
5784
# The name of the static archive.
5785
old_library='$old_library'
5787
# Libraries that this one depends upon.
5788
dependency_libs='$dependency_libs'
5790
# Version information for $libname.
5795
# Is this an already installed library?
5796
installed=$installed
5798
# Should we warn about portability when linking against -modules?
5799
shouldnotlink=$module
5801
# Files to dlopen/dlpreopen
5803
dlpreopen='$dlprefiles'
5805
# Directory that this library needs to be installed in:
5806
libdir='$install_libdir'"
5807
if test "$installed" = no && test "$need_relink" = yes; then
5809
relink_command=\"$relink_command\""
5814
# Do a symbolic link so that the libtool archive can be found in
5815
# LD_LIBRARY_PATH before the program is installed.
5816
$show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5817
$run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
5823
# libtool install mode
5825
modename="$modename: install"
5827
# There may be an optional sh(1) argument at the beginning of
5828
# install_prog (especially on Windows NT).
5829
if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5830
# Allow the use of GNU shtool's install command.
5831
$echo "X$nonopt" | grep shtool > /dev/null; then
5832
# Aesthetically quote it.
5833
arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5835
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5839
install_prog="$arg "
5847
# The real first argument should be the name of the installation program.
5848
# Aesthetically quote it.
5849
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5851
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5855
install_prog="$install_prog$arg"
5857
# We need to accept at least all the BSD install flags.
5867
if test -n "$dest"; then
5868
files="$files $dest"
5876
case " $install_prog " in
5881
-g | -m | -o) prev=$arg ;;
5889
# If the previous option needed an argument, then skip it.
5890
if test -n "$prev"; then
5899
# Aesthetically quote the argument.
5900
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5902
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5906
install_prog="$install_prog $arg"
5909
if test -z "$install_prog"; then
5910
$echo "$modename: you must specify an install program" 1>&2
5915
if test -n "$prev"; then
5916
$echo "$modename: the \`$prev' option requires an argument" 1>&2
5921
if test -z "$files"; then
5922
if test -z "$dest"; then
5923
$echo "$modename: no file or destination specified" 1>&2
5925
$echo "$modename: you must specify a destination" 1>&2
5931
# Strip any trailing slash from the destination.
5932
dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5934
# Check to see that the destination is a directory.
5935
test -d "$dest" && isdir=yes
5936
if test "$isdir" = yes; then
5940
destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5941
test "X$destdir" = "X$dest" && destdir=.
5942
destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5944
# Not a directory, so check to see that there is only one file specified.
5946
if test "$#" -gt 2; then
5947
$echo "$modename: \`$dest' is not a directory" 1>&2
5953
[\\/]* | [A-Za-z]:[\\/]*) ;;
5955
for file in $files; do
5959
$echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5968
# This variable tells wrapper scripts just to set variables rather
5969
# than running their programs.
5970
libtool_install_magic="$magic"
5975
for file in $files; do
5977
# Do each installation.
5980
# Do the static libraries later.
5981
staticlibs="$staticlibs $file"
5985
# Check to see that this really is a libtool archive.
5986
if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5988
$echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5996
# If there is no directory component, then add one.
5998
*/* | *\\*) . $file ;;
6002
# Add the libdir to current_libdirs if it is the destination.
6003
if test "X$destdir" = "X$libdir"; then
6004
case "$current_libdirs " in
6006
*) current_libdirs="$current_libdirs $libdir" ;;
6009
# Note the libdir as a future libdir.
6010
case "$future_libdirs " in
6012
*) future_libdirs="$future_libdirs $libdir" ;;
6016
dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
6017
test "X$dir" = "X$file/" && dir=
6020
if test -n "$relink_command"; then
6021
# Determine the prefix the user has applied to our future dir.
6022
inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
6024
# Don't allow the user to place us outside of our expected
6025
# location b/c this prevents finding dependent libraries that
6026
# are installed to the same prefix.
6027
# At present, this check doesn't affect windows .dll's that
6028
# are installed into $libdir/../bin (currently, that works fine)
6029
# but it's something to keep an eye on.
6030
if test "$inst_prefix_dir" = "$destdir"; then
6031
$echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
6035
if test -n "$inst_prefix_dir"; then
6036
# Stick the inst_prefix_dir data into the link command.
6037
relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
6039
relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
6042
$echo "$modename: warning: relinking \`$file'" 1>&2
6043
$show "$relink_command"
6044
if $run eval "$relink_command"; then :
6046
$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6051
# See the names of the shared library.
6052
set dummy $library_names
6053
if test -n "$2"; then
6059
test -n "$relink_command" && srcname="$realname"T
6061
# Install the shared library and build the symlinks.
6062
$show "$install_prog $dir/$srcname $destdir/$realname"
6063
$run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
6064
if test -n "$stripme" && test -n "$striplib"; then
6065
$show "$striplib $destdir/$realname"
6066
$run eval "$striplib $destdir/$realname" || exit $?
6069
if test "$#" -gt 0; then
6070
# Delete the old symlinks, and create new ones.
6071
# Try `ln -sf' first, because the `ln' binary might depend on
6072
# the symlink we replace! Solaris /bin/ln does not understand -f,
6073
# so we also need to try rm && ln -s.
6076
if test "$linkname" != "$realname"; then
6077
$show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6078
$run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6083
# Do each command in the postinstall commands.
6084
lib="$destdir/$realname"
6085
cmds=$postinstall_cmds
6086
save_ifs="$IFS"; IFS='~'
6087
for cmd in $cmds; do
6091
$run eval "$cmd" || {
6094
# Restore the uninstalled library and exit
6095
if test "$mode" = relink; then
6096
$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
6105
# Install the pseudo-library for information purposes.
6106
name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6107
instname="$dir/$name"i
6108
$show "$install_prog $instname $destdir/$name"
6109
$run eval "$install_prog $instname $destdir/$name" || exit $?
6111
# Maybe install the static library, too.
6112
test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
6116
# Install (i.e. copy) a libtool object.
6118
# Figure out destination file name, if it wasn't already specified.
6119
if test -n "$destname"; then
6120
destfile="$destdir/$destname"
6122
destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6123
destfile="$destdir/$destfile"
6126
# Deduce the name of the destination old-style object file.
6129
staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
6132
staticdest="$destfile"
6136
$echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
6142
# Install the libtool object if requested.
6143
if test -n "$destfile"; then
6144
$show "$install_prog $file $destfile"
6145
$run eval "$install_prog $file $destfile" || exit $?
6148
# Install the old object if enabled.
6149
if test "$build_old_libs" = yes; then
6150
# Deduce the name of the old-style object file.
6151
staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
6153
$show "$install_prog $staticobj $staticdest"
6154
$run eval "$install_prog \$staticobj \$staticdest" || exit $?
6160
# Figure out destination file name, if it wasn't already specified.
6161
if test -n "$destname"; then
6162
destfile="$destdir/$destname"
6164
destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6165
destfile="$destdir/$destfile"
6168
# If the file is missing, and there is a .exe on the end, strip it
6169
# because it is most likely a libtool script we actually want to
6174
if test ! -f "$file"; then
6175
file=`$echo $file|${SED} 's,.exe$,,'`
6181
# Do a test to see if this is really a libtool program.
6184
wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
6190
if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
6194
# Note that it is not necessary on cygwin/mingw to append a dot to
6195
# foo even if both foo and FILE.exe exist: automatic-append-.exe
6196
# behavior happens only for exec(3), not for open(2)! Also, sourcing
6197
# `FILE.' does not work on cygwin managed mounts.
6199
# If there is no directory component, then add one.
6201
*/* | *\\*) . ${wrapper} ;;
6202
*) . ./${wrapper} ;;
6205
# Check the variables that should have been set.
6206
if test -z "$notinst_deplibs"; then
6207
$echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
6212
for lib in $notinst_deplibs; do
6213
# Check to see that each library is installed.
6215
if test -f "$lib"; then
6216
# If there is no directory component, then add one.
6218
*/* | *\\*) . $lib ;;
6222
libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
6223
if test -n "$libdir" && test ! -f "$libfile"; then
6224
$echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
6230
# Note that it is not necessary on cygwin/mingw to append a dot to
6231
# foo even if both foo and FILE.exe exist: automatic-append-.exe
6232
# behavior happens only for exec(3), not for open(2)! Also, sourcing
6233
# `FILE.' does not work on cygwin managed mounts.
6235
# If there is no directory component, then add one.
6237
*/* | *\\*) . ${wrapper} ;;
6238
*) . ./${wrapper} ;;
6242
if test "$fast_install" = no && test -n "$relink_command"; then
6243
if test "$finalize" = yes && test -z "$run"; then
6244
tmpdir=`func_mktempdir`
6245
file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
6246
outputname="$tmpdir/$file"
6247
# Replace the output file specification.
6248
relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
6250
$show "$relink_command"
6251
if $run eval "$relink_command"; then :
6253
$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6259
$echo "$modename: warning: cannot relink \`$file'" 1>&2
6262
# Install the binary that we compiled earlier.
6263
file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
6267
# remove .exe since cygwin /usr/bin/install will append another
6269
case $install_prog,$host in
6270
*/usr/bin/install*,*cygwin*)
6271
case $file:$destfile in
6276
destfile=$destfile.exe
6279
destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
6284
$show "$install_prog$stripme $file $destfile"
6285
$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
6286
test -n "$outputname" && ${rm}r "$tmpdir"
6291
for file in $staticlibs; do
6292
name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6294
# Set up the ranlib parameters.
6295
oldlib="$destdir/$name"
6297
$show "$install_prog $file $oldlib"
6298
$run eval "$install_prog \$file \$oldlib" || exit $?
6300
if test -n "$stripme" && test -n "$old_striplib"; then
6301
$show "$old_striplib $oldlib"
6302
$run eval "$old_striplib $oldlib" || exit $?
6305
# Do each command in the postinstall commands.
6306
cmds=$old_postinstall_cmds
6307
save_ifs="$IFS"; IFS='~'
6308
for cmd in $cmds; do
6312
$run eval "$cmd" || exit $?
6317
if test -n "$future_libdirs"; then
6318
$echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6321
if test -n "$current_libdirs"; then
6322
# Maybe just do a dry run.
6323
test -n "$run" && current_libdirs=" -n$current_libdirs"
6324
exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
6330
# libtool finish mode
6332
modename="$modename: finish"
6336
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
6339
libdirs="$libdirs $dir"
6342
for libdir in $libdirs; do
6343
if test -n "$finish_cmds"; then
6344
# Do each command in the finish commands.
6346
save_ifs="$IFS"; IFS='~'
6347
for cmd in $cmds; do
6351
$run eval "$cmd" || admincmds="$admincmds
6356
if test -n "$finish_eval"; then
6357
# Do the single finish_eval.
6358
eval cmds=\"$finish_eval\"
6359
$run eval "$cmds" || admincmds="$admincmds
6365
# Exit here if they wanted silent mode.
6366
test "$show" = : && exit $EXIT_SUCCESS
6368
$echo "X----------------------------------------------------------------------" | $Xsed
6369
$echo "Libraries have been installed in:"
6370
for libdir in $libdirs; do
6374
$echo "If you ever happen to want to link against installed libraries"
6375
$echo "in a given directory, LIBDIR, you must either use libtool, and"
6376
$echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
6377
$echo "flag during linking and do at least one of the following:"
6378
if test -n "$shlibpath_var"; then
6379
$echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
6380
$echo " during execution"
6382
if test -n "$runpath_var"; then
6383
$echo " - add LIBDIR to the \`$runpath_var' environment variable"
6384
$echo " during linking"
6386
if test -n "$hardcode_libdir_flag_spec"; then
6388
eval flag=\"$hardcode_libdir_flag_spec\"
6390
$echo " - use the \`$flag' linker flag"
6392
if test -n "$admincmds"; then
6393
$echo " - have your system administrator run these commands:$admincmds"
6395
if test -f /etc/ld.so.conf; then
6396
$echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
6399
$echo "See any operating system documentation about shared libraries for"
6400
$echo "more information, such as the ld(1) and ld.so(8) manual pages."
6401
$echo "X----------------------------------------------------------------------" | $Xsed
6405
# libtool execute mode
6407
modename="$modename: execute"
6409
# The first argument is the command name.
6411
if test -z "$cmd"; then
6412
$echo "$modename: you must specify a COMMAND" 1>&2
6417
# Handle -dlopen flags immediately.
6418
for file in $execute_dlfiles; do
6419
if test ! -f "$file"; then
6420
$echo "$modename: \`$file' is not a file" 1>&2
6428
# Check to see that this really is a libtool archive.
6429
if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
6431
$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
6436
# Read the libtool library.
6440
# If there is no directory component, then add one.
6442
*/* | *\\*) . $file ;;
6446
# Skip this library if it cannot be dlopened.
6447
if test -z "$dlname"; then
6448
# Warn if it was a shared library.
6449
test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
6453
dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6454
test "X$dir" = "X$file" && dir=.
6456
if test -f "$dir/$objdir/$dlname"; then
6459
$echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
6465
# Just add the directory containing the .lo file.
6466
dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6467
test "X$dir" = "X$file" && dir=.
6471
$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
6476
# Get the absolute pathname.
6477
absdir=`cd "$dir" && pwd`
6478
test -n "$absdir" && dir="$absdir"
6480
# Now add the directory to shlibpath_var.
6481
if eval "test -z \"\$$shlibpath_var\""; then
6482
eval "$shlibpath_var=\"\$dir\""
6484
eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6488
# This variable tells wrapper scripts just to set shlibpath_var
6489
# rather than running their programs.
6490
libtool_execute_magic="$magic"
6492
# Check if any of the arguments is a wrapper script.
6499
# Do a test to see if this is really a libtool program.
6500
if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6501
# If there is no directory component, then add one.
6503
*/* | *\\*) . $file ;;
6507
# Transform arg to wrapped name.
6508
file="$progdir/$program"
6512
# Quote arguments (to preserve shell metacharacters).
6513
file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6514
args="$args \"$file\""
6517
if test -z "$run"; then
6518
if test -n "$shlibpath_var"; then
6519
# Export the shlibpath_var.
6520
eval "export $shlibpath_var"
6523
# Restore saved environment variables
6524
if test "${save_LC_ALL+set}" = set; then
6525
LC_ALL="$save_LC_ALL"; export LC_ALL
6527
if test "${save_LANG+set}" = set; then
6528
LANG="$save_LANG"; export LANG
6531
# Now prepare to actually exec the command.
6532
exec_cmd="\$cmd$args"
6534
# Display what would be done.
6535
if test -n "$shlibpath_var"; then
6536
eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6537
$echo "export $shlibpath_var"
6544
# libtool clean and uninstall mode
6546
modename="$modename: $mode"
6552
# This variable tells wrapper scripts just to set variables rather
6553
# than running their programs.
6554
libtool_install_magic="$magic"
6559
-f) rm="$rm $arg"; rmforce=yes ;;
6560
-*) rm="$rm $arg" ;;
6561
*) files="$files $arg" ;;
6565
if test -z "$rm"; then
6566
$echo "$modename: you must specify an RM program" 1>&2
6573
origobjdir="$objdir"
6574
for file in $files; do
6575
dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6576
if test "X$dir" = "X$file"; then
6578
objdir="$origobjdir"
6580
objdir="$dir/$origobjdir"
6582
name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6583
test "$mode" = uninstall && objdir="$dir"
6585
# Remember objdir for removal later, being careful to avoid duplicates
6586
if test "$mode" = clean; then
6589
*) rmdirs="$rmdirs $objdir" ;;
6593
# Don't error if the file doesn't exist and rm -f was used.
6594
if (test -L "$file") >/dev/null 2>&1 \
6595
|| (test -h "$file") >/dev/null 2>&1 \
6596
|| test -f "$file"; then
6598
elif test -d "$file"; then
6601
elif test "$rmforce" = yes; then
6609
# Possibly a libtool archive, so verify it.
6610
if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6613
# Delete the libtool libraries and symlinks.
6614
for n in $library_names; do
6615
rmfiles="$rmfiles $objdir/$n"
6617
test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
6621
case " $library_names " in
6622
# " " in the beginning catches empty $dlname
6624
*) rmfiles="$rmfiles $objdir/$dlname" ;;
6626
test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
6629
if test -n "$library_names"; then
6630
# Do each command in the postuninstall commands.
6631
cmds=$postuninstall_cmds
6632
save_ifs="$IFS"; IFS='~'
6633
for cmd in $cmds; do
6638
if test "$?" -ne 0 && test "$rmforce" != yes; then
6645
if test -n "$old_library"; then
6646
# Do each command in the old_postuninstall commands.
6647
cmds=$old_postuninstall_cmds
6648
save_ifs="$IFS"; IFS='~'
6649
for cmd in $cmds; do
6654
if test "$?" -ne 0 && test "$rmforce" != yes; then
6660
# FIXME: should reinstall the best remaining shared library.
6667
# Possibly a libtool object, so verify it.
6668
if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6673
# Add PIC object to the list of files to remove.
6674
if test -n "$pic_object" \
6675
&& test "$pic_object" != none; then
6676
rmfiles="$rmfiles $dir/$pic_object"
6679
# Add non-PIC object to the list of files to remove.
6680
if test -n "$non_pic_object" \
6681
&& test "$non_pic_object" != none; then
6682
rmfiles="$rmfiles $dir/$non_pic_object"
6688
if test "$mode" = clean ; then
6692
file=`$echo $file|${SED} 's,.exe$,,'`
6693
noexename=`$echo $name|${SED} 's,.exe$,,'`
6694
# $file with .exe has already been added to rmfiles,
6695
# add $file without .exe
6696
rmfiles="$rmfiles $file"
6699
# Do a test to see if this is a libtool program.
6700
if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6704
# note $name still contains .exe if it was in $file originally
6705
# as does the version of $file that was added into $rmfiles
6706
rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
6707
if test "$fast_install" = yes && test -n "$relink_command"; then
6708
rmfiles="$rmfiles $objdir/lt-$name"
6710
if test "X$noexename" != "X$name" ; then
6711
rmfiles="$rmfiles $objdir/lt-${noexename}.c"
6717
$show "$rm $rmfiles"
6718
$run $rm $rmfiles || exit_status=1
6720
objdir="$origobjdir"
6722
# Try to remove the ${objdir}s in the directories where we deleted files
6723
for dir in $rmdirs; do
6724
if test -d "$dir"; then
6726
$run rmdir $dir >/dev/null 2>&1
6734
$echo "$modename: you must specify a MODE" 1>&2
6735
$echo "$generic_help" 1>&2
6740
if test -z "$exec_cmd"; then
6741
$echo "$modename: invalid operation mode \`$mode'" 1>&2
6742
$echo "$generic_help" 1>&2
6745
fi # test -z "$show_help"
6747
if test -n "$exec_cmd"; then
6752
# We need to display help for each of the modes.
6755
"Usage: $modename [OPTION]... [MODE-ARG]...
6757
Provide generalized library-building support services.
6759
--config show all configuration variables
6760
--debug enable verbose shell tracing
6761
-n, --dry-run display commands without modifying any files
6762
--features display basic configuration information and exit
6763
--finish same as \`--mode=finish'
6764
--help display this help message and exit
6765
--mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
6766
--quiet same as \`--silent'
6767
--silent don't print informational messages
6768
--tag=TAG use configuration variables from tag TAG
6769
--version print version information
6771
MODE must be one of the following:
6773
clean remove files from the build directory
6774
compile compile a source file into a libtool object
6775
execute automatically set library path, then run a program
6776
finish complete the installation of libtool libraries
6777
install install libraries or executables
6778
link create a library or an executable
6779
uninstall remove libraries from an installed directory
6781
MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for
6782
a more detailed description of MODE.
6784
Report bugs to <bug-libtool@gnu.org>."
6790
"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
6792
Remove files from the build directory.
6794
RM is the name of the program to use to delete files associated with each FILE
6795
(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6798
If FILE is a libtool library, object or program, all the files associated
6799
with it are deleted. Otherwise, only FILE itself is deleted using RM."
6804
"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
6806
Compile a source file into a libtool library object.
6808
This mode accepts the following additional options:
6810
-o OUTPUT-FILE set the output file name to OUTPUT-FILE
6811
-prefer-pic try to building PIC objects only
6812
-prefer-non-pic try to building non-PIC objects only
6813
-static always build a \`.o' file suitable for static linking
6815
COMPILE-COMMAND is a command to be used in creating a \`standard' object file
6816
from the given SOURCEFILE.
6818
The output file name is determined by removing the directory component from
6819
SOURCEFILE, then substituting the C source code suffix \`.c' with the
6820
library object suffix, \`.lo'."
6825
"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
6827
Automatically set library path, then run a program.
6829
This mode accepts the following additional options:
6831
-dlopen FILE add the directory containing FILE to the library path
6833
This mode sets the library path environment variable according to \`-dlopen'
6836
If any of the ARGS are libtool executable wrappers, then they are translated
6837
into their corresponding uninstalled binary, and any of their required library
6838
directories are added to the library path.
6840
Then, COMMAND is executed, with ARGS as arguments."
6845
"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
6847
Complete the installation of libtool libraries.
6849
Each LIBDIR is a directory that contains libtool libraries.
6851
The commands that this mode executes may require superuser privileges. Use
6852
the \`--dry-run' option if you just want to see what would be executed."
6857
"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
6859
Install executables or libraries.
6861
INSTALL-COMMAND is the installation command. The first component should be
6862
either the \`install' or \`cp' program.
6864
The rest of the components are interpreted as arguments to that command (only
6865
BSD-compatible install options are recognized)."
6870
"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
6872
Link object files or libraries together to form another library, or to
6873
create an executable program.
6875
LINK-COMMAND is a command using the C compiler that you would use to create
6876
a program from several object files.
6878
The following components of LINK-COMMAND are treated specially:
6880
-all-static do not do any dynamic linking at all
6881
-avoid-version do not add a version suffix if possible
6882
-dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
6883
-dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
6884
-export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
6885
-export-symbols SYMFILE
6886
try to export only the symbols listed in SYMFILE
6887
-export-symbols-regex REGEX
6888
try to export only the symbols matching REGEX
6889
-LLIBDIR search LIBDIR for required installed libraries
6890
-lNAME OUTPUT-FILE requires the installed library libNAME
6891
-module build a library that can dlopened
6892
-no-fast-install disable the fast-install mode
6893
-no-install link a not-installable executable
6894
-no-undefined declare that a library does not refer to external symbols
6895
-o OUTPUT-FILE create OUTPUT-FILE from the specified objects
6896
-objectlist FILE Use a list of object files found in FILE to specify objects
6897
-precious-files-regex REGEX
6898
don't remove output files matching REGEX
6899
-release RELEASE specify package release information
6900
-rpath LIBDIR the created library will eventually be installed in LIBDIR
6901
-R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
6902
-static do not do any dynamic linking of libtool libraries
6903
-version-info CURRENT[:REVISION[:AGE]]
6904
specify library version info [each variable defaults to 0]
6906
All other options (arguments beginning with \`-') are ignored.
6908
Every other argument is treated as a filename. Files ending in \`.la' are
6909
treated as uninstalled libtool libraries, other files are standard or library
6912
If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
6913
only library objects (\`.lo' files) may be specified, and \`-rpath' is
6914
required, except when creating a convenience library.
6916
If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
6917
using \`ar' and \`ranlib', or on Windows using \`lib'.
6919
If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
6920
is created, otherwise an executable program is created."
6925
"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
6927
Remove libraries from an installation directory.
6929
RM is the name of the program to use to delete files associated with each FILE
6930
(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
6933
If FILE is a libtool library, all the files associated with it are deleted.
6934
Otherwise, only FILE itself is deleted using RM."
6938
$echo "$modename: invalid operation mode \`$mode'" 1>&2
6945
$echo "Try \`$modename --help' for more information about other modes."
6949
# The TAGs below are defined such that we never get into a situation
6950
# in which we disable both kinds of libraries. Given conflicting
6951
# choices, we go for a static library, that is the most portable,
6952
# since we can't tell whether shared libraries were disabled because
6953
# the user asked for that or because the platform doesn't support
6954
# them. This is particularly important on AIX, because we don't
6955
# support having both static and shared libraries enabled at the same
6956
# time on that platform, so we default to a shared-only configuration.
6957
# If a disable-shared tag is given, we'll fallback to a static-only
6958
# configuration. But we'll never go from static-only to shared-only.
6960
# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
6962
# ### END LIBTOOL TAG CONFIG: disable-shared
6964
# ### BEGIN LIBTOOL TAG CONFIG: disable-static
6966
# ### END LIBTOOL TAG CONFIG: disable-static