97
60
BIN_SH=xpg4; export BIN_SH # for Tru64
98
61
DUALCASE=1; export DUALCASE # for MKS sh
100
# A function that is used when there is no print builtin or printf.
101
func_fallback_echo ()
103
eval 'cat <<_LTECHO_EOF
108
# NLS nuisances: We save the old values to restore during execute mode.
63
# Check that we have a working $echo.
64
if test "X$1" = X--no-reexec; then
65
# Discard the --no-reexec flag, and continue.
67
elif test "X$1" = X--fallback-echo; then
68
# Avoid inline document here, it may be left over
70
elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
71
# Yippee, $echo works!
74
# Restart under the correct shell, and then maybe $echo will work.
75
exec $SHELL "$progpath" --no-reexec ${1+"$@"}
78
if test "X$1" = X--fallback-echo; then
79
# used as fallback echo
88
help="Try \`$progname --help' for more information."
89
magic="%%%MAGIC variable%%%"
94
# Sed substitution that helps us do robust quoting. It backslashifies
95
# metacharacters that are still active within double-quoted strings.
96
Xsed="${SED}"' -e 1s/^X//'
97
sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
98
# test EBCDIC or ASCII
99
case `echo X|tr X '\101'` in
100
A) # ASCII based system
101
# \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
103
NL2SP='tr \015\012 \040\040'
105
*) # EBCDIC based system
107
NL2SP='tr \r\n \100\100'
112
# Only set LANG and LC_ALL to C if already set.
113
# These must not be set unconditionally because not all systems understand
114
# e.g. LANG=C (notably SCO).
115
# We save the old values to restore during execute mode.
111
117
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
113
119
eval "if test \"\${$lt_var+set}\" = set; then
114
save_$lt_var=\$$lt_var
120
save_$lt_var=\$$lt_var
121
lt_env=\"$lt_var=\$$lt_var \$lt_env\"
117
lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
118
lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
123
export LANGUAGE LC_ALL
128
# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
129
# is ksh but when the shell is invoked as "sh" and the current value of
130
# the _XPG environment variable is not equal to 1 (one), the special
131
# positional parameter $0, within a function call, is the name of the
138
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
148
: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
149
: ${Xsed="$SED -e 1s/^X//"}
154
EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
155
EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
157
exit_status=$EXIT_SUCCESS
127
if test -n "$lt_env"; then
159
131
# Make sure IFS has a sensible default
164
dirname="s,/[^/]*$,,"
167
# func_dirname file append nondir_replacement
168
# Compute the dirname of FILE. If nonempty, add APPEND to the result,
169
# otherwise set result to NONDIR_REPLACEMENT.
172
func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
173
if test "X$func_dirname_result" = "X${1}"; then
174
func_dirname_result="${3}"
176
func_dirname_result="$func_dirname_result${2}"
178
} # func_dirname may be replaced by extended shell implementation
184
func_basename_result=`$ECHO "${1}" | $SED "$basename"`
185
} # func_basename may be replaced by extended shell implementation
188
# func_dirname_and_basename file append nondir_replacement
189
# perform func_basename and func_dirname in a single function
191
# dirname: Compute the dirname of FILE. If nonempty,
192
# add APPEND to the result, otherwise set result
193
# to NONDIR_REPLACEMENT.
194
# value returned in "$func_dirname_result"
195
# basename: Compute filename of FILE.
196
# value retuned in "$func_basename_result"
197
# Implementation must be kept synchronized with func_dirname
198
# and func_basename. For efficiency, we do not delegate to
199
# those functions but instead duplicate the functionality here.
200
func_dirname_and_basename ()
202
# Extract subdirectory from the argument.
203
func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
204
if test "X$func_dirname_result" = "X${1}"; then
205
func_dirname_result="${3}"
207
func_dirname_result="$func_dirname_result${2}"
209
func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
210
} # func_dirname_and_basename may be replaced by extended shell implementation
213
# func_stripname prefix suffix name
214
# strip PREFIX and SUFFIX off of NAME.
215
# PREFIX and SUFFIX must not contain globbing or regex special
216
# characters, hashes, percent signs, but SUFFIX may contain a leading
217
# dot (in which case that matches only a dot).
218
# func_strip_suffix prefix name
222
.*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
223
*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
225
} # func_stripname may be replaced by extended shell implementation
228
# These SED scripts presuppose an absolute path with a trailing slash.
229
pathcar='s,^/\([^/]*\).*$,\1,'
230
pathcdr='s,^/[^/]*,,'
231
removedotparts=':dotsl
235
collapseslashes='s@/\{1,\}@/@g'
236
finalslash='s,/*$,/,'
238
# func_normal_abspath PATH
239
# Remove doubled-up and trailing slashes, "." path components,
240
# and cancel out any ".." path components in PATH after making
241
# it an absolute path.
242
# value returned in "$func_normal_abspath_result"
243
func_normal_abspath ()
245
# Start from root dir and reassemble the path.
246
func_normal_abspath_result=
247
func_normal_abspath_tpath=$1
248
func_normal_abspath_altnamespace=
249
case $func_normal_abspath_tpath in
251
# Empty path, that just means $cwd.
252
func_stripname '' '/' "`pwd`"
253
func_normal_abspath_result=$func_stripname_result
256
# The next three entries are used to spot a run of precisely
257
# two leading slashes without using negated character classes;
258
# we take advantage of case's first-match behaviour.
260
# Unusual form of absolute path, do nothing.
263
# Not necessarily an ordinary path; POSIX reserves leading '//'
264
# and for example Cygwin uses it to access remote file shares
265
# over CIFS/SMB, so we conserve a leading double slash if found.
266
func_normal_abspath_altnamespace=/
269
# Absolute path, do nothing.
272
# Relative path, prepend $cwd.
273
func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
276
# Cancel out all the simple stuff to save iterations. We also want
277
# the path to end with a slash for ease of parsing, so make sure
278
# there is one (and only one) here.
279
func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
280
-e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
282
# Processed it all yet?
283
if test "$func_normal_abspath_tpath" = / ; then
284
# If we ascended to the root using ".." the result may be empty now.
285
if test -z "$func_normal_abspath_result" ; then
286
func_normal_abspath_result=/
290
func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
292
func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
294
# Figure out what to do with it
295
case $func_normal_abspath_tcomponent in
297
# Trailing empty path component, ignore it.
300
# Parent dir; strip last assembled component from result.
301
func_dirname "$func_normal_abspath_result"
302
func_normal_abspath_result=$func_dirname_result
305
# Actual path component, append it.
306
func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
310
# Restore leading double-slash if one was found on entry.
311
func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
314
# func_relative_path SRCDIR DSTDIR
315
# generates a relative path from SRCDIR to DSTDIR, with a trailing
316
# slash if non-empty, suitable for immediately appending a filename
317
# without needing to append a separator.
318
# value returned in "$func_relative_path_result"
319
func_relative_path ()
321
func_relative_path_result=
322
func_normal_abspath "$1"
323
func_relative_path_tlibdir=$func_normal_abspath_result
324
func_normal_abspath "$2"
325
func_relative_path_tbindir=$func_normal_abspath_result
327
# Ascend the tree starting from libdir
329
# check if we have found a prefix of bindir
330
case $func_relative_path_tbindir in
331
$func_relative_path_tlibdir)
332
# found an exact match
333
func_relative_path_tcancelled=
336
$func_relative_path_tlibdir*)
337
# found a matching prefix
338
func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
339
func_relative_path_tcancelled=$func_stripname_result
340
if test -z "$func_relative_path_result"; then
341
func_relative_path_result=.
346
func_dirname $func_relative_path_tlibdir
347
func_relative_path_tlibdir=${func_dirname_result}
348
if test "x$func_relative_path_tlibdir" = x ; then
349
# Have to descend all the way to the root!
350
func_relative_path_result=../$func_relative_path_result
351
func_relative_path_tcancelled=$func_relative_path_tbindir
354
func_relative_path_result=../$func_relative_path_result
359
# Now calculate path; take care to avoid doubling-up slashes.
360
func_stripname '' '/' "$func_relative_path_result"
361
func_relative_path_result=$func_stripname_result
362
func_stripname '/' '/' "$func_relative_path_tcancelled"
363
if test "x$func_stripname_result" != x ; then
364
func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
367
# Normalisation. If bindir is libdir, return empty string,
368
# else relative path ending with a slash; either way, target
369
# file name can be directly appended.
370
if test ! -z "$func_relative_path_result"; then
371
func_stripname './' '' "$func_relative_path_result/"
372
func_relative_path_result=$func_stripname_result
376
# The name of this program:
377
func_dirname_and_basename "$progpath"
378
progname=$func_basename_result
380
# Make sure we have an absolute path for reexecution:
382
[\\/]*|[A-Za-z]:\\*) ;;
384
progdir=$func_dirname_result
385
progdir=`cd "$progdir" && pwd`
386
progpath="$progdir/$progname"
391
for progdir in $PATH; do
393
test -x "$progdir/$progname" && break
396
test -n "$progdir" || progdir=`pwd`
397
progpath="$progdir/$progname"
401
# Sed substitution that helps us do robust quoting. It backslashifies
402
# metacharacters that are still active within double-quoted strings.
403
Xsed="${SED}"' -e 1s/^X//'
404
sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
406
# Same as above, but do not quote variable references.
407
double_quote_subst='s/\(["`\\]\)/\\\1/g'
409
# Sed substitution that turns a string into a regex matching for the
411
sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
413
# Sed substitution that converts a w32 file name or path
414
# which contains forward slashes, into one that contains
415
# (escaped) backslashes. A very naive implementation.
416
lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
418
# Re-`\' parameter expansions in output of double_quote_subst that were
419
# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
420
# in input to double_quote_subst, that '$' was protected from expansion.
421
# Since each input `\' is now two `\'s, look for any number of runs of
422
# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
427
sed_double_backslash="\
431
s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
442
# Echo program name prefixed message, along with the current mode
443
# name if it has been set yet.
446
$ECHO "$progname: ${opt_mode+$opt_mode: }$*"
449
# func_verbose arg...
450
# Echo program name prefixed message in verbose mode only.
453
$opt_verbose && func_echo ${1+"$@"}
455
# A bug in bash halts the script if the last line of a function
456
# fails when set -e is in force, so we need another command to
461
# func_echo_all arg...
462
# Invoke $ECHO with all args, space-separated.
469
# Echo program name prefixed message to standard error.
472
$ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
475
# func_warning arg...
476
# Echo program name prefixed warning message to standard error.
479
$opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
485
# func_fatal_error arg...
486
# Echo program name prefixed message to standard error, and exit.
493
# func_fatal_help arg...
494
# Echo program name prefixed message to standard error, followed by
495
# a help hint, and exit.
499
func_fatal_error "$help"
501
help="Try \`$progname --help' for more information." ## default
504
# func_grep expression filename
505
# Check whether EXPRESSION matches any line of FILENAME, without output.
508
$GREP "$1" "$2" >/dev/null 2>&1
512
# func_mkdir_p directory-path
513
# Make sure the entire path to DIRECTORY-PATH is available.
516
my_directory_path="$1"
519
if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
521
# Protect directory names starting with `-'
522
case $my_directory_path in
523
-*) my_directory_path="./$my_directory_path" ;;
526
# While some portion of DIR does not yet exist...
527
while test ! -d "$my_directory_path"; do
528
# ...make a list in topmost first order. Use a colon delimited
529
# list incase some portion of path contains whitespace.
530
my_dir_list="$my_directory_path:$my_dir_list"
532
# If the last portion added has no slash in it, the list is done
533
case $my_directory_path in */*) ;; *) break ;; esac
535
# ...otherwise throw away the child directory and loop
536
my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
538
my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
540
save_mkdir_p_IFS="$IFS"; IFS=':'
541
for my_dir in $my_dir_list; do
542
IFS="$save_mkdir_p_IFS"
543
# mkdir can fail with a `File exist' error if two processes
544
# try to create one of the directories concurrently. Don't
546
$MKDIR "$my_dir" 2>/dev/null || :
548
IFS="$save_mkdir_p_IFS"
550
# Bail out if we (or some other process) failed to create a directory.
551
test -d "$my_directory_path" || \
552
func_fatal_error "Failed to create \`$1'"
136
if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
137
$echo "$modename: not configured to build any kind of library" 1>&2
138
$echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
153
lo2o="s/\\.lo\$/.${objext}/"
154
o2lo="s/\\.${objext}\$/.lo/"
158
#####################################
159
# Shell function definitions:
160
# This seems to be the best place for them
557
162
# func_mktempdir [string]
558
163
# Make a temporary directory that won't clash with other running
571
176
my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
573
178
if test ! -d "$my_tmpdir"; then
574
# Failing that, at least try and use $RANDOM to avoid a race
575
my_tmpdir="${my_template}-${RANDOM-0}$$"
179
# Failing that, at least try and use $RANDOM to avoid a race
180
my_tmpdir="${my_template}-${RANDOM-0}$$"
577
save_mktempdir_umask=`umask`
580
umask $save_mktempdir_umask
182
save_mktempdir_umask=`umask`
185
umask $save_mktempdir_umask
583
188
# If we're not in dry-run mode, bomb out on failure
584
test -d "$my_tmpdir" || \
585
func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
592
# func_quote_for_eval arg
593
# Aesthetically quote ARG to be evaled later.
594
# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
595
# is double-quoted, suitable for a subsequent eval, whereas
596
# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
597
# which are still active within double quotes backslashified.
598
func_quote_for_eval ()
602
func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
604
func_quote_for_eval_unquoted_result="$1" ;;
607
case $func_quote_for_eval_unquoted_result in
608
# Double-quote args containing shell metacharacters to delay
609
# word splitting, command substitution and and variable
610
# expansion for a subsequent eval.
611
# Many Bourne shells cannot handle close brackets correctly
612
# in scan sets, so we specify it separately.
613
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
614
func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
617
func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
622
# func_quote_for_expand arg
623
# Aesthetically quote ARG to be evaled later; same as above,
624
# but do not quote variable references.
625
func_quote_for_expand ()
629
my_arg=`$ECHO "$1" | $SED \
630
-e "$double_quote_subst" -e "$sed_double_backslash"` ;;
636
# Double-quote args containing shell metacharacters to delay
637
# word splitting and command substitution for a subsequent eval.
638
# Many Bourne shells cannot handle close brackets correctly
639
# in scan sets, so we specify it separately.
640
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
645
func_quote_for_expand_result="$my_arg"
649
# func_show_eval cmd [fail_exp]
650
# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
651
# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
652
# is given, then evaluate it.
658
${opt_silent-false} || {
659
func_quote_for_expand "$my_cmd"
660
eval "func_echo $func_quote_for_expand_result"
663
if ${opt_dry_run-false}; then :; else
666
if test "$my_status" -eq 0; then :; else
667
eval "(exit $my_status); $my_fail_exp"
673
# func_show_eval_locale cmd [fail_exp]
674
# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
675
# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
676
# is given, then evaluate it. Use the saved locale for evaluation.
677
func_show_eval_locale ()
682
${opt_silent-false} || {
683
func_quote_for_expand "$my_cmd"
684
eval "func_echo $func_quote_for_expand_result"
687
if ${opt_dry_run-false}; then :; else
688
eval "$lt_user_locale
691
eval "$lt_safe_locale"
692
if test "$my_status" -eq 0; then :; else
693
eval "(exit $my_status); $my_fail_exp"
699
# Turn $1 into a string suitable for a shell variable name.
700
# Result is stored in $func_tr_sh_result. All characters
701
# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
702
# if $1 begins with a digit, a '_' is prepended as well.
706
[0-9]* | *[!a-zA-Z0-9_]*)
707
func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
717
# Echo version message to standard output and exit.
730
/^# '$PROGRAM' (GNU /,/# warranty; / {
733
s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
740
# Echo short help message to standard output and exit.
745
$SED -n '/^# Usage:/,/^# *.*--help/ {
748
s/\$progname/'$progname'/
752
$ECHO "run \`$progname --help | more' for full usage"
757
# Echo long help message to standard output and exit,
758
# unless 'noexit' is passed as argument.
763
$SED -n '/^# Usage:/,/# Report bugs to/ {
767
s*\$progname*'$progname'*
769
s*\$SHELL*'"$SHELL"'*
771
s*\$LTCFLAGS*'"$LTCFLAGS"'*
773
s/\$with_gnu_ld/'"$with_gnu_ld"'/
774
s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
775
s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
779
/^# .* home page:/b print
780
/^# General help using/b print
783
if test -z "$1"; then
788
# func_missing_arg argname
789
# Echo program name prefixed message to standard error and set global
795
func_error "missing argument for $1."
800
# func_split_short_opt shortopt
801
# Set func_split_short_opt_name and func_split_short_opt_arg shell
802
# variables after splitting SHORTOPT after the 2nd character.
803
func_split_short_opt ()
805
my_sed_short_opt='1s/^\(..\).*$/\1/;q'
806
my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
808
func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
809
func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
810
} # func_split_short_opt may be replaced by extended shell implementation
813
# func_split_long_opt longopt
814
# Set func_split_long_opt_name and func_split_long_opt_arg shell
815
# variables after splitting LONGOPT at the `=' sign.
816
func_split_long_opt ()
818
my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
819
my_sed_long_arg='1s/^--[^=]*=//'
821
func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
822
func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
823
} # func_split_long_opt may be replaced by extended shell implementation
831
magic="%%%MAGIC variable%%%"
832
magic_exe="%%%MAGIC EXE variable%%%"
837
lo2o="s/\\.lo\$/.${objext}/"
838
o2lo="s/\\.${objext}\$/.lo/"
842
# If this variable is set in any of the actions, the command in it
843
# will be execed at the end. This prevents here-documents from being
844
# left over by shells.
847
# func_append var value
848
# Append VALUE to the end of shell variable VAR.
851
eval "${1}=\$${1}\${2}"
852
} # func_append may be replaced by extended shell implementation
854
# func_append_quoted var value
855
# Quote VALUE and append to the end of shell variable VAR, separated
857
func_append_quoted ()
859
func_quote_for_eval "${2}"
860
eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
861
} # func_append_quoted may be replaced by extended shell implementation
864
# func_arith arithmetic-term...
867
func_arith_result=`expr "${@}"`
868
} # func_arith may be replaced by extended shell implementation
872
# STRING may not start with a hyphen.
875
func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
876
} # func_len may be replaced by extended shell implementation
882
func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
883
} # func_lo2o may be replaced by extended shell implementation
886
# func_xform libobj-or-source
889
func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
890
} # func_xform may be replaced by extended shell implementation
893
# func_fatal_configuration arg...
894
# Echo program name prefixed message to standard error, followed by
895
# a configuration failure hint, and exit.
896
func_fatal_configuration ()
899
func_error "See the $PACKAGE documentation for more information."
900
func_fatal_error "Fatal configuration error."
905
# Display the configuration for all the tags in this script.
908
re_begincf='^# ### BEGIN LIBTOOL'
909
re_endcf='^# ### END LIBTOOL'
911
# Default configuration.
912
$SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
914
# Now print the configurations for the tags.
915
for tagname in $taglist; do
916
$SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
923
# Display the features supported by this script.
927
if test "$build_libtool_libs" = yes; then
928
echo "enable shared libraries"
930
echo "disable shared libraries"
932
if test "$build_old_libs" = yes; then
933
echo "enable static libraries"
935
echo "disable static libraries"
941
# func_enable_tag tagname
942
# Verify that TAGNAME is valid, and either flag an error and exit, or
943
# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
950
re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
951
re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
952
sed_extractcf="/$re_begincf/,/$re_endcf/p"
957
func_fatal_error "invalid tag name: $tagname"
961
# Don't test for the "default" C tag, as we know it's
962
# there but not specially marked.
966
if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
967
taglist="$taglist $tagname"
969
# Evaluate the configuration. Be careful to quote the path
970
# and the sed script, to avoid splitting on whitespace, but
971
# also don't use non-portable quotes within backquotes within
972
# quotes we have to do it in 2 steps:
973
extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
976
func_error "ignoring unknown tag $tagname"
982
# func_check_version_match
983
# Ensure that we are using m4 macros, and libtool script from the same
984
# release of libtool.
985
func_check_version_match ()
987
if test "$package_revision" != "$macro_revision"; then
988
if test "$VERSION" != "$macro_version"; then
989
if test -z "$macro_version"; then
991
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
992
$progname: definition of this LT_INIT comes from an older release.
993
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
994
$progname: and run autoconf again.
998
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
999
$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
1000
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
1001
$progname: and run autoconf again.
1006
$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
1007
$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1008
$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1009
$progname: of $PACKAGE $VERSION and run autoconf again.
1018
# Shorthand for --mode=foo, only valid as the first argument
1021
shift; set dummy --mode clean ${1+"$@"}; shift
1023
compile|compil|compi|comp|com|co|c)
1024
shift; set dummy --mode compile ${1+"$@"}; shift
1026
execute|execut|execu|exec|exe|ex|e)
1027
shift; set dummy --mode execute ${1+"$@"}; shift
1029
finish|finis|fini|fin|fi|f)
1030
shift; set dummy --mode finish ${1+"$@"}; shift
1032
install|instal|insta|inst|ins|in|i)
1033
shift; set dummy --mode install ${1+"$@"}; shift
1036
shift; set dummy --mode link ${1+"$@"}; shift
1038
uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1039
shift; set dummy --mode uninstall ${1+"$@"}; shift
1049
opt_preserve_dup_deps=false
1060
# Parse options once, thoroughly. This comes as soon as possible in the
1061
# script to make things like `--version' happen as quickly as we can.
1063
# this just eases exit handling
1064
while test $# -gt 0; do
1068
--debug|-x) opt_debug='set -x'
1069
func_echo "enabling shell trace mode"
1072
--dry-run|--dryrun|-n)
1081
opt_dlopen="${opt_dlopen+$opt_dlopen
1085
--preserve-dup-deps)
1086
opt_preserve_dup_deps=:
1094
set dummy --mode finish ${1+"$@"}; shift
1101
opt_help=': help-all'
1104
test $# = 0 && func_missing_arg $opt && break
1108
# Valid mode arguments:
1109
clean|compile|execute|finish|install|link|relink|uninstall) ;;
1111
# Catch anything else as an error
1112
*) func_error "invalid argument for $opt"
1119
--no-silent|--no-quiet)
1121
func_append preserve_args " $opt"
1125
func_append preserve_args " $opt"
1129
func_append preserve_args " $opt"
1134
func_append preserve_args " $opt"
1138
test $# = 0 && func_missing_arg $opt && break
1141
func_append preserve_args " $opt $optarg"
1142
func_enable_tag "$optarg"
1146
-\?|-h) func_usage ;;
1147
--help) func_help ;;
1148
--version) func_version ;;
1150
# Separate optargs to long options:
1152
func_split_long_opt "$opt"
1153
set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
1157
# Separate non-argument short options:
1159
func_split_short_opt "$opt"
1160
set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1165
-*) func_fatal_help "unrecognized option \`$opt'" ;;
1166
*) set dummy "$opt" ${1+"$@"}; shift; break ;;
1172
# save first non-option argument
1173
if test "$#" -gt 0; then
1179
test "$opt_debug" = : || func_append preserve_args " --debug"
1182
*cygwin* | *mingw* | *pw32* | *cegcc*)
1183
# don't eliminate duplications in $postdeps and $predeps
1184
opt_duplicate_compiler_generated_deps=:
1187
opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
1192
# Sanity checks first:
1193
func_check_version_match
1195
if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1196
func_fatal_configuration "not configured to build any kind of library"
1200
eval std_shrext=\"$shrext_cmds\"
1202
# Only execute mode is allowed to have -dlopen flags.
1203
if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1204
func_error "unrecognized option \`-dlopen'"
1209
# Change the help message to a mode-specific one.
1210
generic_help="$help"
1211
help="Try \`$progname --help --mode=$opt_mode' for more information."
1215
# Bail if the options were screwed
1216
$exit_cmd $EXIT_FAILURE
1227
# True iff FILE is a libtool `.la' library or `.lo' object file.
1228
# This function is only a basic sanity check; it will hardly flush out
1229
# determined imposters.
1233
$SED -e 4q "$1" 2>/dev/null \
1234
| $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
1237
# func_lalib_unsafe_p file
1238
# True iff FILE is a libtool `.la' library or `.lo' object file.
1239
# This function implements the same check as func_lalib_p without
1240
# resorting to external programs. To this end, it redirects stdin and
1241
# closes it afterwards, without saving the original file descriptor.
1242
# As a safety measure, use it only where a negative result would be
1243
# fatal anyway. Works if `file' does not exist.
1244
func_lalib_unsafe_p ()
1247
if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
1248
for lalib_p_l in 1 2 3 4
1251
case "$lalib_p_line" in
1252
\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
1257
test "$lalib_p" = yes
1260
# func_ltwrapper_script_p file
1261
# True iff FILE is a libtool wrapper script
1262
# This function is only a basic sanity check; it will hardly flush out
1263
# determined imposters.
1264
func_ltwrapper_script_p ()
1269
# func_ltwrapper_executable_p file
1270
# True iff FILE is a libtool wrapper executable
1271
# This function is only a basic sanity check; it will hardly flush out
1272
# determined imposters.
1273
func_ltwrapper_executable_p ()
1275
func_ltwrapper_exec_suffix=
1278
*) func_ltwrapper_exec_suffix=.exe ;;
1280
$GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
1283
# func_ltwrapper_scriptname file
1284
# Assumes file is an ltwrapper_executable
1285
# uses $file to determine the appropriate filename for a
1286
# temporary ltwrapper_script.
1287
func_ltwrapper_scriptname ()
1289
func_dirname_and_basename "$1" "" "."
1290
func_stripname '' '.exe' "$func_basename_result"
1291
func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
1294
# func_ltwrapper_p file
1295
# True iff FILE is a libtool wrapper script or wrapper executable
1296
# This function is only a basic sanity check; it will hardly flush out
1297
# determined imposters.
1300
func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
1304
# func_execute_cmds commands fail_cmd
1305
# Execute tilde-delimited COMMANDS.
1306
# If FAIL_CMD is given, eval that upon failure.
1307
# FAIL_CMD may read-access the current command in variable CMD!
1308
func_execute_cmds ()
1311
save_ifs=$IFS; IFS='~'
1315
func_show_eval "$cmd" "${2-:}"
1322
# Source FILE, adding directory component if necessary.
1323
# Note that it is not necessary on cygwin/mingw to append a dot to
1324
# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
1325
# behavior happens only for exec(3), not for open(2)! Also, sourcing
1326
# `FILE.' does not work on cygwin managed mounts.
1331
*/* | *\\*) . "$1" ;;
1337
# func_resolve_sysroot PATH
1338
# Replace a leading = in PATH with a sysroot. Store the result into
1339
# func_resolve_sysroot_result
1340
func_resolve_sysroot ()
1342
func_resolve_sysroot_result=$1
1343
case $func_resolve_sysroot_result in
1345
func_stripname '=' '' "$func_resolve_sysroot_result"
1346
func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1351
# func_replace_sysroot PATH
1352
# If PATH begins with the sysroot, replace it with = and
1353
# store the result into func_replace_sysroot_result.
1354
func_replace_sysroot ()
1356
case "$lt_sysroot:$1" in
1358
func_stripname "$lt_sysroot" '' "$1"
1359
func_replace_sysroot_result="=$func_stripname_result"
1362
# Including no sysroot.
1363
func_replace_sysroot_result=$1
189
test -d "$my_tmpdir" || {
190
$echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
195
$echo "X$my_tmpdir" | $Xsed
199
# func_win32_libid arg
200
# return the library type of file 'arg'
202
# Need a lot of goo to handle *both* DLLs and import libs
203
# Has to be a shell function in order to 'eat' the argument
204
# that is supplied when $file_magic_command is called.
207
win32_libid_type="unknown"
208
win32_fileres=`file -L $1 2>/dev/null`
209
case $win32_fileres in
210
*ar\ archive\ import\ library*) # definitely import
211
win32_libid_type="x86 archive import"
213
*ar\ archive*) # could be an import, or static
214
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
215
$EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
216
win32_nmres=`eval $NM -f posix -A $1 | \
225
import*) win32_libid_type="x86 archive import";;
226
*) win32_libid_type="x86 archive static";;
231
win32_libid_type="x86 DLL"
233
*executable*) # but shell scripts are "executable" too...
234
case $win32_fileres in
235
*MS\ Windows\ PE\ Intel*)
236
win32_libid_type="x86 DLL"
241
$echo $win32_libid_type
1368
245
# func_infer_tag arg
1369
246
# Infer tagged configuration to use if any are available and
1416
296
# was found and let the user know that the "--tag" command
1417
297
# line option must be used.
1418
298
if test -z "$tagname"; then
1419
func_echo "unable to infer tagged configuration"
1420
func_fatal_error "specify a tag with \`--tag'"
1422
# func_verbose "using $tagname tagged configuration"
1431
# func_write_libtool_object output_name pic_name nonpic_name
1432
# Create a libtool object file (analogous to a ".la" file),
1433
# but don't create it if we're doing a dry run.
1434
func_write_libtool_object ()
299
$echo "$modename: unable to infer tagged configuration"
300
$echo "$modename: specify a tag with \`--tag'" 1>&2
303
# $echo "$modename: using $tagname tagged configuration"
311
# func_extract_an_archive dir oldlib
312
func_extract_an_archive ()
314
f_ex_an_ar_dir="$1"; shift
315
f_ex_an_ar_oldlib="$1"
317
$show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
318
$run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
319
if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
322
$echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
327
# func_extract_archives gentop oldlib ...
328
func_extract_archives ()
330
my_gentop="$1"; shift
338
$show "${rm}r $my_gentop"
339
$run ${rm}r "$my_gentop"
340
$show "$mkdir $my_gentop"
341
$run $mkdir "$my_gentop"
343
if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
347
for my_xlib in $my_oldlibs; do
348
# Extract the objects.
350
[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
351
*) my_xabs=`pwd`"/$my_xlib" ;;
353
my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
356
case " $extracted_archives " in
358
extracted_serial=`expr $extracted_serial + 1`
359
my_xlib_u=lt$extracted_serial-$my_xlib ;;
363
extracted_archives="$extracted_archives $my_xlib_u"
364
my_xdir="$my_gentop/$my_xlib_u"
366
$show "${rm}r $my_xdir"
367
$run ${rm}r "$my_xdir"
368
$show "$mkdir $my_xdir"
369
$run $mkdir "$my_xdir"
371
if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
376
$show "Extracting $my_xabs"
377
# Do not bother doing anything if just a dry run
378
if test -z "$run"; then
379
darwin_orig_dir=`pwd`
380
cd $my_xdir || exit $?
381
darwin_archive=$my_xabs
383
darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
384
darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
385
if test -n "$darwin_arches"; then
386
darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
388
$show "$darwin_base_archive has multiple architectures $darwin_arches"
389
for darwin_arch in $darwin_arches ; do
390
mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
391
lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
392
cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
393
func_extract_an_archive "`pwd`" "${darwin_base_archive}"
395
$rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
396
done # $darwin_arches
397
## Okay now we have a bunch of thin objects, gotta fatten them up :)
398
darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
401
for darwin_file in $darwin_filelist; do
402
darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
403
lipo -create -output "$darwin_file" $darwin_files
404
done # $darwin_filelist
406
cd "$darwin_orig_dir"
408
cd "$darwin_orig_dir"
409
func_extract_an_archive "$my_xdir" "$my_xabs"
414
func_extract_an_archive "$my_xdir" "$my_xabs"
417
my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
419
func_extract_archives_result="$my_oldobjs"
421
# End of Shell function definitions
422
#####################################
425
eval std_shrext=\"$shrext_cmds\"
429
# Parse our command line options once, thoroughly.
430
while test "$#" -gt 0
436
-*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
440
# If the previous option needs an argument, assign it.
441
if test -n "$prev"; then
444
execute_dlfiles="$execute_dlfiles $arg"
448
preserve_args="${preserve_args}=$arg"
450
# Check whether tagname contains only valid characters
453
$echo "$progname: invalid tag name: $tagname" 1>&2
460
# Don't test for the "default" C tag, as we know, it's there, but
461
# not specially marked.
464
if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
465
taglist="$taglist $tagname"
466
# Evaluate the configuration.
467
eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
469
$echo "$progname: ignoring unknown tag $tagname" 1>&2
484
# Have we seen a non-optional argument yet?
492
$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
494
Copyright (C) 2008 Free Software Foundation, Inc.
495
This is free software; see the source for copying conditions. There is NO
496
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
501
${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
502
# Now print the configurations for the tags.
503
for tagname in $taglist; do
504
${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
510
$echo "$progname: enabling shell trace mode"
512
preserve_args="$preserve_args $arg"
1437
521
if test "$build_libtool_libs" = yes; then
522
$echo "enable shared libraries"
524
$echo "disable shared libraries"
1443
526
if test "$build_old_libs" = yes; then
1444
write_oldobj=\'${3}\'
1450
cat >${write_libobj}T <<EOF
1451
# $write_libobj - a libtool object file
1452
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
1454
# Please DO NOT delete this file!
1455
# It is necessary for linking the library.
1457
# Name of the PIC object.
1458
pic_object=$write_lobj
1460
# Name of the non-PIC object
1461
non_pic_object=$write_oldobj
1464
$MV "${write_libobj}T" "${write_libobj}"
1469
##################################################
1470
# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1471
##################################################
1473
# func_convert_core_file_wine_to_w32 ARG
1474
# Helper function used by file name conversion functions when $build is *nix,
1475
# and $host is mingw, cygwin, or some other w32 environment. Relies on a
1476
# correctly configured wine environment available, with the winepath program
1477
# in $build's $PATH.
1479
# ARG is the $build file name to be converted to w32 format.
1480
# Result is available in $func_convert_core_file_wine_to_w32_result, and will
1481
# be empty on error (or when ARG is empty)
1482
func_convert_core_file_wine_to_w32 ()
1485
func_convert_core_file_wine_to_w32_result="$1"
1486
if test -n "$1"; then
1487
# Unfortunately, winepath does not exit with a non-zero error code, so we
1488
# are forced to check the contents of stdout. On the other hand, if the
1489
# command is not found, the shell will set an exit code of 127 and print
1490
# *an error message* to stdout. So we must check for both error code of
1491
# zero AND non-empty stdout, which explains the odd construction:
1492
func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1493
if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1494
func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1495
$SED -e "$lt_sed_naive_backslashify"`
1497
func_convert_core_file_wine_to_w32_result=
1501
# end: func_convert_core_file_wine_to_w32
1504
# func_convert_core_path_wine_to_w32 ARG
1505
# Helper function used by path conversion functions when $build is *nix, and
1506
# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1507
# configured wine environment available, with the winepath program in $build's
1508
# $PATH. Assumes ARG has no leading or trailing path separator characters.
1510
# ARG is path to be converted from $build format to win32.
1511
# Result is available in $func_convert_core_path_wine_to_w32_result.
1512
# Unconvertible file (directory) names in ARG are skipped; if no directory names
1513
# are convertible, then the result may be empty.
1514
func_convert_core_path_wine_to_w32 ()
1517
# unfortunately, winepath doesn't convert paths, only file names
1518
func_convert_core_path_wine_to_w32_result=""
1519
if test -n "$1"; then
1522
for func_convert_core_path_wine_to_w32_f in $1; do
1524
func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1525
if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1526
if test -z "$func_convert_core_path_wine_to_w32_result"; then
1527
func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1529
func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
527
$echo "enable static libraries"
529
$echo "disable static libraries"
534
--finish) mode="finish" ;;
536
--mode) prevopt="--mode" prev=mode ;;
537
--mode=*) mode="$optarg" ;;
539
--preserve-dup-deps) duplicate_deps="yes" ;;
543
preserve_args="$preserve_args $arg"
549
preserve_args="$preserve_args --tag"
552
set tag "$optarg" ${1+"$@"}
555
preserve_args="$preserve_args --tag"
564
$echo "$modename: unrecognized option \`$arg'" 1>&2
576
if test -n "$prevopt"; then
577
$echo "$modename: option \`$prevopt' requires an argument" 1>&2
582
case $disable_libs in
586
build_libtool_libs=no
590
build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
594
# If this variable is set in any of the actions, the command in it
595
# will be execed at the end. This prevents here-documents from being
596
# left over by shells.
599
if test -z "$show_help"; then
601
# Infer the operation mode.
602
if test -z "$mode"; then
603
$echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
604
$echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
606
*cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
618
*db | *dbx | *strace | *truss)
628
# If we have no mode, but dlfiles were specified, then do execute mode.
629
test -n "$execute_dlfiles" && mode=execute
631
# Just use the default operation mode.
632
if test -z "$mode"; then
633
if test -n "$nonopt"; then
634
$echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
636
$echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
1536
# end: func_convert_core_path_wine_to_w32
1539
# func_cygpath ARGS...
1540
# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1541
# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1542
# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1543
# (2), returns the Cygwin file name or path in func_cygpath_result (input
1544
# file name or path is assumed to be in w32 format, as previously converted
1545
# from $build's *nix or MSYS format). In case (3), returns the w32 file name
1546
# or path in func_cygpath_result (input file name or path is assumed to be in
1547
# Cygwin format). Returns an empty string on error.
1549
# ARGS are passed to cygpath, with the last one being the file name or path to
1552
# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1553
# environment variable; do not put it in $PATH.
1557
if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1558
func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1559
if test "$?" -ne 0; then
1560
# on failure, ensure result is empty
1561
func_cygpath_result=
1564
func_cygpath_result=
1565
func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
1571
# func_convert_core_msys_to_w32 ARG
1572
# Convert file name or path ARG from MSYS format to w32 format. Return
1573
# result in func_convert_core_msys_to_w32_result.
1574
func_convert_core_msys_to_w32 ()
1577
# awkward: cmd appends spaces to result
1578
func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
1579
$SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
1581
#end: func_convert_core_msys_to_w32
1584
# func_convert_file_check ARG1 ARG2
1585
# Verify that ARG1 (a file name in $build format) was converted to $host
1586
# format in ARG2. Otherwise, emit an error message, but continue (resetting
1587
# func_to_host_file_result to ARG1).
1588
func_convert_file_check ()
1591
if test -z "$2" && test -n "$1" ; then
1592
func_error "Could not determine host file name corresponding to"
1594
func_error "Continuing, but uninstalled executables may not work."
1596
func_to_host_file_result="$1"
1599
# end func_convert_file_check
1602
# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
1603
# Verify that FROM_PATH (a path in $build format) was converted to $host
1604
# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
1605
# func_to_host_file_result to a simplistic fallback value (see below).
1606
func_convert_path_check ()
1609
if test -z "$4" && test -n "$3"; then
1610
func_error "Could not determine the host path corresponding to"
1612
func_error "Continuing, but uninstalled executables may not work."
1613
# Fallback. This is a deliberately simplistic "conversion" and
1614
# should not be "improved". See libtool.info.
1615
if test "x$1" != "x$2"; then
1616
lt_replace_pathsep_chars="s|$1|$2|g"
1617
func_to_host_path_result=`echo "$3" |
1618
$SED -e "$lt_replace_pathsep_chars"`
1620
func_to_host_path_result="$3"
1624
# end func_convert_path_check
1627
# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
1628
# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
1629
# and appending REPL if ORIG matches BACKPAT.
1630
func_convert_path_front_back_pathsep ()
1634
$1 ) func_to_host_path_result="$3$func_to_host_path_result"
1638
$2 ) func_append func_to_host_path_result "$3"
1642
# end func_convert_path_front_back_pathsep
1645
##################################################
1646
# $build to $host FILE NAME CONVERSION FUNCTIONS #
1647
##################################################
1648
# invoked via `$to_host_file_cmd ARG'
1650
# In each case, ARG is the path to be converted from $build to $host format.
1651
# Result will be available in $func_to_host_file_result.
1654
# func_to_host_file ARG
1655
# Converts the file name ARG from $build format to $host format. Return result
1656
# in func_to_host_file_result.
1657
func_to_host_file ()
1660
$to_host_file_cmd "$1"
1662
# end func_to_host_file
1665
# func_to_tool_file ARG LAZY
1666
# converts the file name ARG from $build format to toolchain format. Return
1667
# result in func_to_tool_file_result. If the conversion in use is listed
1668
# in (the comma separated) LAZY, no conversion takes place.
1669
func_to_tool_file ()
1673
*,"$to_tool_file_cmd",*)
1674
func_to_tool_file_result=$1
1677
$to_tool_file_cmd "$1"
1678
func_to_tool_file_result=$func_to_host_file_result
1682
# end func_to_tool_file
1685
# func_convert_file_noop ARG
1686
# Copy ARG to func_to_host_file_result.
1687
func_convert_file_noop ()
1689
func_to_host_file_result="$1"
1691
# end func_convert_file_noop
1694
# func_convert_file_msys_to_w32 ARG
1695
# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
1696
# conversion to w32 is not available inside the cwrapper. Returns result in
1697
# func_to_host_file_result.
1698
func_convert_file_msys_to_w32 ()
1701
func_to_host_file_result="$1"
1702
if test -n "$1"; then
1703
func_convert_core_msys_to_w32 "$1"
1704
func_to_host_file_result="$func_convert_core_msys_to_w32_result"
1706
func_convert_file_check "$1" "$func_to_host_file_result"
1708
# end func_convert_file_msys_to_w32
1711
# func_convert_file_cygwin_to_w32 ARG
1712
# Convert file name ARG from Cygwin to w32 format. Returns result in
1713
# func_to_host_file_result.
1714
func_convert_file_cygwin_to_w32 ()
1717
func_to_host_file_result="$1"
1718
if test -n "$1"; then
1719
# because $build is cygwin, we call "the" cygpath in $PATH; no need to use
1720
# LT_CYGPATH in this case.
1721
func_to_host_file_result=`cygpath -m "$1"`
1723
func_convert_file_check "$1" "$func_to_host_file_result"
1725
# end func_convert_file_cygwin_to_w32
1728
# func_convert_file_nix_to_w32 ARG
1729
# Convert file name ARG from *nix to w32 format. Requires a wine environment
1730
# and a working winepath. Returns result in func_to_host_file_result.
1731
func_convert_file_nix_to_w32 ()
1734
func_to_host_file_result="$1"
1735
if test -n "$1"; then
1736
func_convert_core_file_wine_to_w32 "$1"
1737
func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
1739
func_convert_file_check "$1" "$func_to_host_file_result"
1741
# end func_convert_file_nix_to_w32
1744
# func_convert_file_msys_to_cygwin ARG
1745
# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
1746
# Returns result in func_to_host_file_result.
1747
func_convert_file_msys_to_cygwin ()
1750
func_to_host_file_result="$1"
1751
if test -n "$1"; then
1752
func_convert_core_msys_to_w32 "$1"
1753
func_cygpath -u "$func_convert_core_msys_to_w32_result"
1754
func_to_host_file_result="$func_cygpath_result"
1756
func_convert_file_check "$1" "$func_to_host_file_result"
1758
# end func_convert_file_msys_to_cygwin
1761
# func_convert_file_nix_to_cygwin ARG
1762
# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
1763
# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
1764
# in func_to_host_file_result.
1765
func_convert_file_nix_to_cygwin ()
1768
func_to_host_file_result="$1"
1769
if test -n "$1"; then
1770
# convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
1771
func_convert_core_file_wine_to_w32 "$1"
1772
func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
1773
func_to_host_file_result="$func_cygpath_result"
1775
func_convert_file_check "$1" "$func_to_host_file_result"
1777
# end func_convert_file_nix_to_cygwin
1780
#############################################
1781
# $build to $host PATH CONVERSION FUNCTIONS #
1782
#############################################
1783
# invoked via `$to_host_path_cmd ARG'
1785
# In each case, ARG is the path to be converted from $build to $host format.
1786
# The result will be available in $func_to_host_path_result.
1788
# Path separators are also converted from $build format to $host format. If
1789
# ARG begins or ends with a path separator character, it is preserved (but
1790
# converted to $host format) on output.
1792
# All path conversion functions are named using the following convention:
1793
# file name conversion function : func_convert_file_X_to_Y ()
1794
# path conversion function : func_convert_path_X_to_Y ()
1795
# where, for any given $build/$host combination the 'X_to_Y' value is the
1796
# same. If conversion functions are added for new $build/$host combinations,
1797
# the two new functions must follow this pattern, or func_init_to_host_path_cmd
1801
# func_init_to_host_path_cmd
1802
# Ensures that function "pointer" variable $to_host_path_cmd is set to the
1803
# appropriate value, based on the value of $to_host_file_cmd.
1805
func_init_to_host_path_cmd ()
1808
if test -z "$to_host_path_cmd"; then
1809
func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
1810
to_host_path_cmd="func_convert_path_${func_stripname_result}"
1815
# func_to_host_path ARG
1816
# Converts the path ARG from $build format to $host format. Return result
1817
# in func_to_host_path_result.
1818
func_to_host_path ()
1821
func_init_to_host_path_cmd
1822
$to_host_path_cmd "$1"
1824
# end func_to_host_path
1827
# func_convert_path_noop ARG
1828
# Copy ARG to func_to_host_path_result.
1829
func_convert_path_noop ()
1831
func_to_host_path_result="$1"
1833
# end func_convert_path_noop
1836
# func_convert_path_msys_to_w32 ARG
1837
# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
1838
# conversion to w32 is not available inside the cwrapper. Returns result in
1839
# func_to_host_path_result.
1840
func_convert_path_msys_to_w32 ()
1843
func_to_host_path_result="$1"
1844
if test -n "$1"; then
1845
# Remove leading and trailing path separator characters from ARG. MSYS
1846
# behavior is inconsistent here; cygpath turns them into '.;' and ';.';
1847
# and winepath ignores them completely.
1848
func_stripname : : "$1"
1849
func_to_host_path_tmp1=$func_stripname_result
1850
func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1851
func_to_host_path_result="$func_convert_core_msys_to_w32_result"
1852
func_convert_path_check : ";" \
1853
"$func_to_host_path_tmp1" "$func_to_host_path_result"
1854
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1857
# end func_convert_path_msys_to_w32
1860
# func_convert_path_cygwin_to_w32 ARG
1861
# Convert path ARG from Cygwin to w32 format. Returns result in
1862
# func_to_host_file_result.
1863
func_convert_path_cygwin_to_w32 ()
1866
func_to_host_path_result="$1"
1867
if test -n "$1"; then
1868
# See func_convert_path_msys_to_w32:
1869
func_stripname : : "$1"
1870
func_to_host_path_tmp1=$func_stripname_result
1871
func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
1872
func_convert_path_check : ";" \
1873
"$func_to_host_path_tmp1" "$func_to_host_path_result"
1874
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1877
# end func_convert_path_cygwin_to_w32
1880
# func_convert_path_nix_to_w32 ARG
1881
# Convert path ARG from *nix to w32 format. Requires a wine environment and
1882
# a working winepath. Returns result in func_to_host_file_result.
1883
func_convert_path_nix_to_w32 ()
1886
func_to_host_path_result="$1"
1887
if test -n "$1"; then
1888
# See func_convert_path_msys_to_w32:
1889
func_stripname : : "$1"
1890
func_to_host_path_tmp1=$func_stripname_result
1891
func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1892
func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
1893
func_convert_path_check : ";" \
1894
"$func_to_host_path_tmp1" "$func_to_host_path_result"
1895
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1898
# end func_convert_path_nix_to_w32
1901
# func_convert_path_msys_to_cygwin ARG
1902
# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
1903
# Returns result in func_to_host_file_result.
1904
func_convert_path_msys_to_cygwin ()
1907
func_to_host_path_result="$1"
1908
if test -n "$1"; then
1909
# See func_convert_path_msys_to_w32:
1910
func_stripname : : "$1"
1911
func_to_host_path_tmp1=$func_stripname_result
1912
func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1913
func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
1914
func_to_host_path_result="$func_cygpath_result"
1915
func_convert_path_check : : \
1916
"$func_to_host_path_tmp1" "$func_to_host_path_result"
1917
func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1920
# end func_convert_path_msys_to_cygwin
1923
# func_convert_path_nix_to_cygwin ARG
1924
# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
1925
# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
1926
# func_to_host_file_result.
1927
func_convert_path_nix_to_cygwin ()
1930
func_to_host_path_result="$1"
1931
if test -n "$1"; then
1932
# Remove leading and trailing path separator characters from
1933
# ARG. msys behavior is inconsistent here, cygpath turns them
1934
# into '.;' and ';.', and winepath ignores them completely.
1935
func_stripname : : "$1"
1936
func_to_host_path_tmp1=$func_stripname_result
1937
func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1938
func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
1939
func_to_host_path_result="$func_cygpath_result"
1940
func_convert_path_check : : \
1941
"$func_to_host_path_tmp1" "$func_to_host_path_result"
1942
func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1945
# end func_convert_path_nix_to_cygwin
1948
# func_mode_compile arg...
1949
func_mode_compile ()
643
# Only execute mode is allowed to have -dlopen flags.
644
if test -n "$execute_dlfiles" && test "$mode" != execute; then
645
$echo "$modename: unrecognized option \`-dlopen'" 1>&2
650
# Change the help message to a mode-specific one.
652
help="Try \`$modename --help --mode=$mode' for more information."
654
# These modes are in order of execution frequency so that they run quickly.
656
# libtool compile mode
658
modename="$modename: compile"
1952
659
# Get the compilation command and the source file.
1954
661
srcfile="$nonopt" # always keep a non-empty value in "srcfile"
2265
1057
avoid parallel builds (make -j) in this platform, or get a better
2268
$opt_dry_run || $RM $removelist
1060
$run $rm $removelist
2269
1061
exit $EXIT_FAILURE
2272
1064
# Just move the object if needed
2273
1065
if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
2274
func_show_eval '$MV "$output_obj" "$obj"' \
2275
'error=$?; $opt_dry_run || $RM $removelist; exit $error'
2280
func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
2282
# Unlock the critical section if it was locked
2283
if test "$need_locks" != no; then
2284
removelist=$lockfile
2293
test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
2298
# We need to display help for each of the modes.
2301
# Generic help is extracted from the usage comments
2302
# at the start of this file.
2308
"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
2310
Remove files from the build directory.
2312
RM is the name of the program to use to delete files associated with each FILE
2313
(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2316
If FILE is a libtool library, object or program, all the files associated
2317
with it are deleted. Otherwise, only FILE itself is deleted using RM."
2322
"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
2324
Compile a source file into a libtool library object.
2326
This mode accepts the following additional options:
2328
-o OUTPUT-FILE set the output file name to OUTPUT-FILE
2329
-no-suppress do not suppress compiler output for multiple passes
2330
-prefer-pic try to build PIC objects only
2331
-prefer-non-pic try to build non-PIC objects only
2332
-shared do not build a \`.o' file suitable for static linking
2333
-static only build a \`.o' file suitable for static linking
2334
-Wc,FLAG pass FLAG directly to the compiler
2336
COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2337
from the given SOURCEFILE.
2339
The output file name is determined by removing the directory component from
2340
SOURCEFILE, then substituting the C source code suffix \`.c' with the
2341
library object suffix, \`.lo'."
2346
"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
2348
Automatically set library path, then run a program.
2350
This mode accepts the following additional options:
2352
-dlopen FILE add the directory containing FILE to the library path
2354
This mode sets the library path environment variable according to \`-dlopen'
2357
If any of the ARGS are libtool executable wrappers, then they are translated
2358
into their corresponding uninstalled binary, and any of their required library
2359
directories are added to the library path.
2361
Then, COMMAND is executed, with ARGS as arguments."
2366
"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
2368
Complete the installation of libtool libraries.
2370
Each LIBDIR is a directory that contains libtool libraries.
2372
The commands that this mode executes may require superuser privileges. Use
2373
the \`--dry-run' option if you just want to see what would be executed."
2378
"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
2380
Install executables or libraries.
2382
INSTALL-COMMAND is the installation command. The first component should be
2383
either the \`install' or \`cp' program.
2385
The following components of INSTALL-COMMAND are treated specially:
2387
-inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation
2389
The rest of the components are interpreted as arguments to that command (only
2390
BSD-compatible install options are recognized)."
2395
"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
2397
Link object files or libraries together to form another library, or to
2398
create an executable program.
2400
LINK-COMMAND is a command using the C compiler that you would use to create
2401
a program from several object files.
2403
The following components of LINK-COMMAND are treated specially:
2405
-all-static do not do any dynamic linking at all
2406
-avoid-version do not add a version suffix if possible
2407
-bindir BINDIR specify path to binaries directory (for systems where
2408
libraries must be found in the PATH setting at runtime)
2409
-dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
2410
-dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
2411
-export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
2412
-export-symbols SYMFILE
2413
try to export only the symbols listed in SYMFILE
2414
-export-symbols-regex REGEX
2415
try to export only the symbols matching REGEX
2416
-LLIBDIR search LIBDIR for required installed libraries
2417
-lNAME OUTPUT-FILE requires the installed library libNAME
2418
-module build a library that can dlopened
2419
-no-fast-install disable the fast-install mode
2420
-no-install link a not-installable executable
2421
-no-undefined declare that a library does not refer to external symbols
2422
-o OUTPUT-FILE create OUTPUT-FILE from the specified objects
2423
-objectlist FILE Use a list of object files found in FILE to specify objects
2424
-precious-files-regex REGEX
2425
don't remove output files matching REGEX
2426
-release RELEASE specify package release information
2427
-rpath LIBDIR the created library will eventually be installed in LIBDIR
2428
-R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
2429
-shared only do dynamic linking of libtool libraries
2430
-shrext SUFFIX override the standard shared library file extension
2431
-static do not do any dynamic linking of uninstalled libtool libraries
2432
-static-libtool-libs
2433
do not do any dynamic linking of libtool libraries
2434
-version-info CURRENT[:REVISION[:AGE]]
2435
specify library version info [each variable defaults to 0]
2436
-weak LIBNAME declare that the target provides the LIBNAME interface
2438
-Xcompiler FLAG pass linker-specific FLAG directly to the compiler
2440
-Xlinker FLAG pass linker-specific FLAG directly to the linker
2441
-XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
2443
All other options (arguments beginning with \`-') are ignored.
2445
Every other argument is treated as a filename. Files ending in \`.la' are
2446
treated as uninstalled libtool libraries, other files are standard or library
2449
If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
2450
only library objects (\`.lo' files) may be specified, and \`-rpath' is
2451
required, except when creating a convenience library.
2453
If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
2454
using \`ar' and \`ranlib', or on Windows using \`lib'.
2456
If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
2457
is created, otherwise an executable program is created."
2462
"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
2464
Remove libraries from an installation directory.
2466
RM is the name of the program to use to delete files associated with each FILE
2467
(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
2470
If FILE is a libtool library, all the files associated with it are deleted.
2471
Otherwise, only FILE itself is deleted using RM."
2475
func_fatal_help "invalid operation mode \`$opt_mode'"
2480
$ECHO "Try \`$progname --help' for more information about other modes."
2483
# Now that we've collected a possible --mode arg, show help if necessary
2485
if test "$opt_help" = :; then
2490
for opt_mode in compile link execute install finish uninstall clean; do
2493
} | sed -n '1p; 2,$s/^Usage:/ or: /p'
2496
for opt_mode in compile link execute install finish uninstall clean; do
2502
/^When reporting/,/^Report/{
2507
/information about other modes/d
2508
/more detailed .*MODE/d
2509
s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2515
# func_mode_execute arg...
2516
func_mode_execute ()
2519
# The first argument is the command name.
2522
func_fatal_help "you must specify a COMMAND"
2524
# Handle -dlopen flags immediately.
2525
for file in $opt_dlopen; do
2527
|| func_fatal_help "\`$file' is not a file"
2532
func_resolve_sysroot "$file"
2533
file=$func_resolve_sysroot_result
2535
# Check to see that this really is a libtool archive.
2536
func_lalib_unsafe_p "$file" \
2537
|| func_fatal_help "\`$lib' is not a valid libtool archive"
2539
# Read the libtool library.
2544
# Skip this library if it cannot be dlopened.
2545
if test -z "$dlname"; then
2546
# Warn if it was a shared library.
2547
test -n "$library_names" && \
2548
func_warning "\`$file' was not linked with \`-export-dynamic'"
2552
func_dirname "$file" "" "."
2553
dir="$func_dirname_result"
2555
if test -f "$dir/$objdir/$dlname"; then
2556
func_append dir "/$objdir"
2558
if test ! -f "$dir/$dlname"; then
2559
func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
2565
# Just add the directory containing the .lo file.
2566
func_dirname "$file" "" "."
2567
dir="$func_dirname_result"
2571
func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
2576
# Get the absolute pathname.
2577
absdir=`cd "$dir" && pwd`
2578
test -n "$absdir" && dir="$absdir"
2580
# Now add the directory to shlibpath_var.
2581
if eval "test -z \"\$$shlibpath_var\""; then
2582
eval "$shlibpath_var=\"\$dir\""
2584
eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
2588
# This variable tells wrapper scripts just to set shlibpath_var
2589
# rather than running their programs.
2590
libtool_execute_magic="$magic"
2592
# Check if any of the arguments is a wrapper script.
2597
-* | *.la | *.lo ) ;;
2599
# Do a test to see if this is really a libtool program.
2600
if func_ltwrapper_script_p "$file"; then
2602
# Transform arg to wrapped name.
2603
file="$progdir/$program"
2604
elif func_ltwrapper_executable_p "$file"; then
2605
func_ltwrapper_scriptname "$file"
2606
func_source "$func_ltwrapper_scriptname_result"
2607
# Transform arg to wrapped name.
2608
file="$progdir/$program"
2612
# Quote arguments (to preserve shell metacharacters).
2613
func_append_quoted args "$file"
2616
if test "X$opt_dry_run" = Xfalse; then
2617
if test -n "$shlibpath_var"; then
2618
# Export the shlibpath_var.
2619
eval "export $shlibpath_var"
2622
# Restore saved environment variables
2623
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
2625
eval "if test \"\${save_$lt_var+set}\" = set; then
2626
$lt_var=\$save_$lt_var; export $lt_var
2632
# Now prepare to actually exec the command.
2633
exec_cmd="\$cmd$args"
2635
# Display what would be done.
2636
if test -n "$shlibpath_var"; then
2637
eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2638
echo "export $shlibpath_var"
2645
test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
2648
# func_mode_finish arg...
2656
for opt in "$nonopt" ${1+"$@"}
2658
if test -d "$opt"; then
2659
func_append libdirs " $opt"
2661
elif test -f "$opt"; then
2662
if func_lalib_unsafe_p "$opt"; then
2663
func_append libs " $opt"
2665
func_warning "\`$opt' is not a valid libtool archive"
2669
func_fatal_error "invalid argument \`$opt'"
2673
if test -n "$libs"; then
2674
if test -n "$lt_sysroot"; then
2675
sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
2676
sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
2681
# Remove sysroot references
2682
if $opt_dry_run; then
2683
for lib in $libs; do
2684
echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
2687
tmpdir=`func_mktempdir`
2688
for lib in $libs; do
2689
sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
2691
mv -f $tmpdir/tmp-la $lib
2697
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2698
for libdir in $libdirs; do
2699
if test -n "$finish_cmds"; then
2700
# Do each command in the finish commands.
2701
func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
2704
if test -n "$finish_eval"; then
2705
# Do the single finish_eval.
2706
eval cmds=\"$finish_eval\"
2707
$opt_dry_run || eval "$cmds" || func_append admincmds "
2713
# Exit here if they wanted silent mode.
2714
$opt_silent && exit $EXIT_SUCCESS
2716
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
2717
echo "----------------------------------------------------------------------"
2718
echo "Libraries have been installed in:"
2719
for libdir in $libdirs; do
2723
echo "If you ever happen to want to link against installed libraries"
2724
echo "in a given directory, LIBDIR, you must either use libtool, and"
2725
echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
2726
echo "flag during linking and do at least one of the following:"
2727
if test -n "$shlibpath_var"; then
2728
echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
2729
echo " during execution"
2731
if test -n "$runpath_var"; then
2732
echo " - add LIBDIR to the \`$runpath_var' environment variable"
2733
echo " during linking"
2735
if test -n "$hardcode_libdir_flag_spec"; then
2737
eval flag=\"$hardcode_libdir_flag_spec\"
2739
$ECHO " - use the \`$flag' linker flag"
2741
if test -n "$admincmds"; then
2742
$ECHO " - have your system administrator run these commands:$admincmds"
2744
if test -f /etc/ld.so.conf; then
2745
echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2749
echo "See any operating system documentation about shared libraries for"
2751
solaris2.[6789]|solaris2.1[0-9])
2752
echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
2756
echo "more information, such as the ld(1) and ld.so(8) manual pages."
2759
echo "----------------------------------------------------------------------"
2764
test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
2767
# func_mode_install arg...
2768
func_mode_install ()
2771
# There may be an optional sh(1) argument at the beginning of
2772
# install_prog (especially on Windows NT).
2773
if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2774
# Allow the use of GNU shtool's install command.
2775
case $nonopt in *shtool*) :;; *) false;; esac; then
2776
# Aesthetically quote it.
2777
func_quote_for_eval "$nonopt"
2778
install_prog="$func_quote_for_eval_result "
2786
# The real first argument should be the name of the installation program.
2787
# Aesthetically quote it.
2788
func_quote_for_eval "$arg"
2789
func_append install_prog "$func_quote_for_eval_result"
2790
install_shared_prog=$install_prog
2791
case " $install_prog " in
2792
*[\\\ /]cp\ *) install_cp=: ;;
2793
*) install_cp=false ;;
2796
# We need to accept at least all the BSD install flags.
2808
if test -n "$dest"; then
2809
func_append files " $dest"
2817
if $install_cp; then :; else
2831
# If the previous option needed an argument, then skip it.
2832
if test -n "$prev"; then
2833
if test "x$prev" = x-m && test -n "$install_override_mode"; then
2834
arg2=$install_override_mode
2845
# Aesthetically quote the argument.
2846
func_quote_for_eval "$arg"
2847
func_append install_prog " $func_quote_for_eval_result"
2848
if test -n "$arg2"; then
2849
func_quote_for_eval "$arg2"
2851
func_append install_shared_prog " $func_quote_for_eval_result"
2854
test -z "$install_prog" && \
2855
func_fatal_help "you must specify an install program"
2857
test -n "$prev" && \
2858
func_fatal_help "the \`$prev' option requires an argument"
2860
if test -n "$install_override_mode" && $no_mode; then
2861
if $install_cp; then :; else
2862
func_quote_for_eval "$install_override_mode"
2863
func_append install_shared_prog " -m $func_quote_for_eval_result"
2867
if test -z "$files"; then
2868
if test -z "$dest"; then
2869
func_fatal_help "no file or destination specified"
2871
func_fatal_help "you must specify a destination"
2875
# Strip any trailing slash from the destination.
2876
func_stripname '' '/' "$dest"
2877
dest=$func_stripname_result
2879
# Check to see that the destination is a directory.
2880
test -d "$dest" && isdir=yes
2881
if test "$isdir" = yes; then
2885
func_dirname_and_basename "$dest" "" "."
2886
destdir="$func_dirname_result"
2887
destname="$func_basename_result"
2889
# Not a directory, so check to see that there is only one file specified.
2890
set dummy $files; shift
2891
test "$#" -gt 1 && \
2892
func_fatal_help "\`$dest' is not a directory"
2895
[\\/]* | [A-Za-z]:[\\/]*) ;;
2897
for file in $files; do
2901
func_fatal_help "\`$destdir' must be an absolute directory name"
2908
# This variable tells wrapper scripts just to set variables rather
2909
# than running their programs.
2910
libtool_install_magic="$magic"
2915
for file in $files; do
2917
# Do each installation.
2920
# Do the static libraries later.
2921
func_append staticlibs " $file"
2925
func_resolve_sysroot "$file"
2926
file=$func_resolve_sysroot_result
2928
# Check to see that this really is a libtool archive.
2929
func_lalib_unsafe_p "$file" \
2930
|| func_fatal_help "\`$file' is not a valid libtool archive"
2937
# Add the libdir to current_libdirs if it is the destination.
2938
if test "X$destdir" = "X$libdir"; then
2939
case "$current_libdirs " in
2941
*) func_append current_libdirs " $libdir" ;;
2944
# Note the libdir as a future libdir.
2945
case "$future_libdirs " in
2947
*) func_append future_libdirs " $libdir" ;;
2951
func_dirname "$file" "/" ""
2952
dir="$func_dirname_result"
2953
func_append dir "$objdir"
2955
if test -n "$relink_command"; then
2956
# Determine the prefix the user has applied to our future dir.
2957
inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
2959
# Don't allow the user to place us outside of our expected
2960
# location b/c this prevents finding dependent libraries that
2961
# are installed to the same prefix.
2962
# At present, this check doesn't affect windows .dll's that
2963
# are installed into $libdir/../bin (currently, that works fine)
2964
# but it's something to keep an eye on.
2965
test "$inst_prefix_dir" = "$destdir" && \
2966
func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
2968
if test -n "$inst_prefix_dir"; then
2969
# Stick the inst_prefix_dir data into the link command.
2970
relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2972
relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
2975
func_warning "relinking \`$file'"
2976
func_show_eval "$relink_command" \
2977
'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
2980
# See the names of the shared library.
2981
set dummy $library_names; shift
2982
if test -n "$1"; then
2987
test -n "$relink_command" && srcname="$realname"T
2989
# Install the shared library and build the symlinks.
2990
func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
2994
cygwin* | mingw* | pw32* | cegcc*)
3002
if test -n "$tstripme" && test -n "$striplib"; then
3003
func_show_eval "$striplib $destdir/$realname" 'exit $?'
3006
if test "$#" -gt 0; then
3007
# Delete the old symlinks, and create new ones.
3008
# Try `ln -sf' first, because the `ln' binary might depend on
3009
# the symlink we replace! Solaris /bin/ln does not understand -f,
3010
# so we also need to try rm && ln -s.
3013
test "$linkname" != "$realname" \
3014
&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
3018
# Do each command in the postinstall commands.
3019
lib="$destdir/$realname"
3020
func_execute_cmds "$postinstall_cmds" 'exit $?'
3023
# Install the pseudo-library for information purposes.
3024
func_basename "$file"
3025
name="$func_basename_result"
3026
instname="$dir/$name"i
3027
func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3029
# Maybe install the static library, too.
3030
test -n "$old_library" && func_append staticlibs " $dir/$old_library"
3034
# Install (i.e. copy) a libtool object.
3036
# Figure out destination file name, if it wasn't already specified.
3037
if test -n "$destname"; then
3038
destfile="$destdir/$destname"
3040
func_basename "$file"
3041
destfile="$func_basename_result"
3042
destfile="$destdir/$destfile"
3045
# Deduce the name of the destination old-style object file.
3048
func_lo2o "$destfile"
3049
staticdest=$func_lo2o_result
3052
staticdest="$destfile"
3056
func_fatal_help "cannot copy a libtool object to \`$destfile'"
3060
# Install the libtool object if requested.
3061
test -n "$destfile" && \
3062
func_show_eval "$install_prog $file $destfile" 'exit $?'
3064
# Install the old object if enabled.
3065
if test "$build_old_libs" = yes; then
3066
# Deduce the name of the old-style object file.
3068
staticobj=$func_lo2o_result
3069
func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
3075
# Figure out destination file name, if it wasn't already specified.
3076
if test -n "$destname"; then
3077
destfile="$destdir/$destname"
3079
func_basename "$file"
3080
destfile="$func_basename_result"
3081
destfile="$destdir/$destfile"
3084
# If the file is missing, and there is a .exe on the end, strip it
3085
# because it is most likely a libtool script we actually want to
3090
if test ! -f "$file"; then
3091
func_stripname '' '.exe' "$file"
3092
file=$func_stripname_result
3098
# Do a test to see if this is really a libtool program.
3101
if func_ltwrapper_executable_p "$file"; then
3102
func_ltwrapper_scriptname "$file"
3103
wrapper=$func_ltwrapper_scriptname_result
3105
func_stripname '' '.exe' "$file"
3106
wrapper=$func_stripname_result
3113
if func_ltwrapper_script_p "$wrapper"; then
3117
func_source "$wrapper"
3119
# Check the variables that should have been set.
3120
test -z "$generated_by_libtool_version" && \
3121
func_fatal_error "invalid libtool wrapper script \`$wrapper'"
3124
for lib in $notinst_deplibs; do
3125
# Check to see that each library is installed.
3127
if test -f "$lib"; then
3130
libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
3131
if test -n "$libdir" && test ! -f "$libfile"; then
3132
func_warning "\`$lib' has not been installed in \`$libdir'"
3138
func_source "$wrapper"
3141
if test "$fast_install" = no && test -n "$relink_command"; then
3143
if test "$finalize" = yes; then
3144
tmpdir=`func_mktempdir`
3145
func_basename "$file$stripped_ext"
3146
file="$func_basename_result"
3147
outputname="$tmpdir/$file"
3148
# Replace the output file specification.
3149
relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
3152
func_quote_for_expand "$relink_command"
3153
eval "func_echo $func_quote_for_expand_result"
3155
if eval "$relink_command"; then :
3157
func_error "error: relink \`$file' with the above command before installing it"
3158
$opt_dry_run || ${RM}r "$tmpdir"
3163
func_warning "cannot relink \`$file'"
3167
# Install the binary that we compiled earlier.
3168
file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
3172
# remove .exe since cygwin /usr/bin/install will append another
3174
case $install_prog,$host in
3175
*/usr/bin/install*,*cygwin*)
3176
case $file:$destfile in
3181
destfile=$destfile.exe
3184
func_stripname '' '.exe' "$destfile"
3185
destfile=$func_stripname_result
3190
func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
3191
$opt_dry_run || if test -n "$outputname"; then
3198
for file in $staticlibs; do
3199
func_basename "$file"
3200
name="$func_basename_result"
3202
# Set up the ranlib parameters.
3203
oldlib="$destdir/$name"
3205
func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3207
if test -n "$stripme" && test -n "$old_striplib"; then
3208
func_show_eval "$old_striplib $oldlib" 'exit $?'
3211
# Do each command in the postinstall commands.
3212
func_execute_cmds "$old_postinstall_cmds" 'exit $?'
3215
test -n "$future_libdirs" && \
3216
func_warning "remember to run \`$progname --finish$future_libdirs'"
3218
if test -n "$current_libdirs"; then
3219
# Maybe just do a dry run.
3220
$opt_dry_run && current_libdirs=" -n$current_libdirs"
3221
exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
3227
test "$opt_mode" = install && func_mode_install ${1+"$@"}
3230
# func_generate_dlsyms outputname originator pic_p
3231
# Extract symbols from dlprefiles and create ${outputname}S.o with
3232
# a dlpreopen symbol table.
3233
func_generate_dlsyms ()
3239
my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
3242
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
3243
if test -n "$NM" && test -n "$global_symbol_pipe"; then
3244
my_dlsyms="${my_outputname}S.c"
3246
func_error "not configured to extract global symbols from dlpreopened files"
3250
if test -n "$my_dlsyms"; then
3254
# Discover the nlist of each of the dlfiles.
3255
nlist="$output_objdir/${my_outputname}.nm"
3257
func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
3259
# Parse the name list into a source file.
3260
func_verbose "creating $output_objdir/$my_dlsyms"
3262
$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
3263
/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
3264
/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
3270
#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3271
#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3274
/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
3275
#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3276
/* DATA imports from DLLs on WIN32 con't be const, because runtime
3277
relocations are performed -- see ld's documentation on pseudo-relocs. */
3278
# define LT_DLSYM_CONST
3279
#elif defined(__osf__)
3280
/* This system does not cope well with relocations in const data. */
3281
# define LT_DLSYM_CONST
3283
# define LT_DLSYM_CONST const
3286
/* External symbol declarations for the compiler. */\
3289
if test "$dlself" = yes; then
3290
func_verbose "generating symbol list for \`$output'"
3292
$opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3294
# Add our own program objects to the symbol list.
3295
progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
3296
for progfile in $progfiles; do
3297
func_to_tool_file "$progfile" func_convert_file_msys_to_w32
3298
func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
3299
$opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3302
if test -n "$exclude_expsyms"; then
3304
eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
3305
eval '$MV "$nlist"T "$nlist"'
3309
if test -n "$export_symbols_regex"; then
3311
eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
3312
eval '$MV "$nlist"T "$nlist"'
3316
# Prepare the list of exported symbols
3317
if test -z "$export_symbols"; then
3318
export_symbols="$output_objdir/$outputname.exp"
3321
eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
3323
*cygwin* | *mingw* | *cegcc* )
3324
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3325
eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
3331
eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
3332
eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3333
eval '$MV "$nlist"T "$nlist"'
3335
*cygwin* | *mingw* | *cegcc* )
3336
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3337
eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3344
for dlprefile in $dlprefiles; do
3345
func_verbose "extracting global C symbols from \`$dlprefile'"
3346
func_basename "$dlprefile"
3347
name="$func_basename_result"
3349
*cygwin* | *mingw* | *cegcc* )
3350
# if an import library, we need to obtain dlname
3351
if func_win32_import_lib_p "$dlprefile"; then
3352
func_tr_sh "$dlprefile"
3353
eval "curr_lafile=\$libfile_$func_tr_sh_result"
3354
dlprefile_dlbasename=""
3355
if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3356
# Use subshell, to avoid clobbering current variable values
3357
dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3358
if test -n "$dlprefile_dlname" ; then
3359
func_basename "$dlprefile_dlname"
3360
dlprefile_dlbasename="$func_basename_result"
3362
# no lafile. user explicitly requested -dlpreopen <import library>.
3363
$sharedlib_from_linklib_cmd "$dlprefile"
3364
dlprefile_dlbasename=$sharedlib_from_linklib_result
3368
if test -n "$dlprefile_dlbasename" ; then
3369
eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3371
func_warning "Could not compute DLL name from $name"
3372
eval '$ECHO ": $name " >> "$nlist"'
3374
func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3375
eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3376
$SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3378
else # not an import lib
3380
eval '$ECHO ": $name " >> "$nlist"'
3381
func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3382
eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3388
eval '$ECHO ": $name " >> "$nlist"'
3389
func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3390
eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3397
# Make sure we have at least an empty file.
3398
test -f "$nlist" || : > "$nlist"
3400
if test -n "$exclude_expsyms"; then
3401
$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
3402
$MV "$nlist"T "$nlist"
3405
# Try sorting and uniquifying the output.
3406
if $GREP -v "^: " < "$nlist" |
3407
if sort -k 3 </dev/null >/dev/null 2>&1; then
3412
uniq > "$nlist"S; then
3415
$GREP -v "^: " < "$nlist" > "$nlist"S
3418
if test -f "$nlist"S; then
3419
eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3421
echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
3424
echo >> "$output_objdir/$my_dlsyms" "\
3426
/* The mapping between symbol names and symbols. */
3431
extern LT_DLSYM_CONST lt_dlsymlist
3432
lt_${my_prefix}_LTX_preloaded_symbols[];
3433
LT_DLSYM_CONST lt_dlsymlist
3434
lt_${my_prefix}_LTX_preloaded_symbols[] =
3436
{ \"$my_originator\", (void *) 0 },"
3438
case $need_lib_prefix in
3440
eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
3443
eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3446
echo >> "$output_objdir/$my_dlsyms" "\
3450
/* This works around a problem in FreeBSD linker */
3451
#ifdef FREEBSD_WORKAROUND
3452
static const void *lt_preloaded_setup() {
3453
return lt_${my_prefix}_LTX_preloaded_symbols;
3463
pic_flag_for_symtable=
3464
case "$compile_command " in
3468
# compiling the symbol table file with pic_flag works around
3469
# a FreeBSD bug that causes programs to crash when -lm is
3470
# linked before any other PIC object. But we must not use
3471
# pic_flag when linking with -static. The problem exists in
3472
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3473
*-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3474
pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3476
pic_flag_for_symtable=" $pic_flag" ;;
3478
if test "X$my_pic_p" != Xno; then
3479
pic_flag_for_symtable=" $pic_flag"
3486
for arg in $LTCFLAGS; do
3488
-pie | -fpie | -fPIE) ;;
3489
*) func_append symtab_cflags " $arg" ;;
3493
# Now compile the dynamic symbol file.
3494
func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
3496
# Clean up the generated files.
3497
func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
3499
# Transform the symbol file into the correct name.
3500
symfileobj="$output_objdir/${my_outputname}S.$objext"
3502
*cygwin* | *mingw* | *cegcc* )
3503
if test -f "$output_objdir/$my_outputname.def"; then
3504
compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3505
finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3507
compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3508
finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3512
compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3513
finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
3518
func_fatal_error "unknown suffix for \`$my_dlsyms'"
3522
# We keep going just in case the user didn't refer to
3523
# lt_preloaded_symbols. The linker will fail if global_symbol_pipe
3524
# really was required.
3526
# Nullify the symbol file.
3527
compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
3528
finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
3532
# func_win32_libid arg
3533
# return the library type of file 'arg'
3535
# Need a lot of goo to handle *both* DLLs and import libs
3536
# Has to be a shell function in order to 'eat' the argument
3537
# that is supplied when $file_magic_command is called.
3538
# Despite the name, also deal with 64 bit binaries.
3542
win32_libid_type="unknown"
3543
win32_fileres=`file -L $1 2>/dev/null`
3544
case $win32_fileres in
3545
*ar\ archive\ import\ library*) # definitely import
3546
win32_libid_type="x86 archive import"
3548
*ar\ archive*) # could be an import, or static
3549
# Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3550
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3551
$EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
3552
func_to_tool_file "$1" func_convert_file_msys_to_w32
3553
win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3562
case $win32_nmres in
3563
import*) win32_libid_type="x86 archive import";;
3564
*) win32_libid_type="x86 archive static";;
3569
win32_libid_type="x86 DLL"
3571
*executable*) # but shell scripts are "executable" too...
3572
case $win32_fileres in
3573
*MS\ Windows\ PE\ Intel*)
3574
win32_libid_type="x86 DLL"
3579
$ECHO "$win32_libid_type"
3582
# func_cygming_dll_for_implib ARG
3584
# Platform-specific function to extract the
3585
# name of the DLL associated with the specified
3586
# import library ARG.
3587
# Invoked by eval'ing the libtool variable
3588
# $sharedlib_from_linklib_cmd
3589
# Result is available in the variable
3590
# $sharedlib_from_linklib_result
3591
func_cygming_dll_for_implib ()
3594
sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
3597
# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
3599
# The is the core of a fallback implementation of a
3600
# platform-specific function to extract the name of the
3601
# DLL associated with the specified import library LIBNAME.
3603
# SECTION_NAME is either .idata$6 or .idata$7, depending
3604
# on the platform and compiler that created the implib.
3606
# Echos the name of the DLL associated with the
3607
# specified import library.
3608
func_cygming_dll_for_implib_fallback_core ()
3611
match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
3612
$OBJDUMP -s --section "$1" "$2" 2>/dev/null |
3613
$SED '/^Contents of section '"$match_literal"':/{
3614
# Place marker at beginning of archive member dllname section
3619
# These lines can sometimes be longer than 43 characters, but
3620
# are always uninteresting
3621
/:[ ]*file format pe[i]\{,1\}-/d
3622
/^In archive [^:]*:/d
3623
# Ensure marker is printed
3625
# Remove all lines with less than 43 characters
3627
# From remaining lines, remove first 43 characters
3630
# Join marker and all lines until next marker into a single line
3631
/^====MARK====/ b para
3640
# Remove trailing dots and whitespace
3644
# we now have a list, one entry per line, of the stringified
3645
# contents of the appropriate section of all members of the
3646
# archive which possess that section. Heuristic: eliminate
3647
# all those which have a first or second character that is
3648
# a '.' (that is, objdump's representation of an unprintable
3649
# character.) This should work for all archives with less than
3650
# 0x302f exports -- but will fail for DLLs whose name actually
3651
# begins with a literal '.' or a single character followed by
3654
# Of those that remain, print the first one.
3655
$SED -e '/^\./d;/^.\./d;q'
3658
# func_cygming_gnu_implib_p ARG
3659
# This predicate returns with zero status (TRUE) if
3660
# ARG is a GNU/binutils-style import library. Returns
3661
# with nonzero status (FALSE) otherwise.
3662
func_cygming_gnu_implib_p ()
3665
func_to_tool_file "$1" func_convert_file_msys_to_w32
3666
func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
3667
test -n "$func_cygming_gnu_implib_tmp"
3670
# func_cygming_ms_implib_p ARG
3671
# This predicate returns with zero status (TRUE) if
3672
# ARG is an MS-style import library. Returns
3673
# with nonzero status (FALSE) otherwise.
3674
func_cygming_ms_implib_p ()
3677
func_to_tool_file "$1" func_convert_file_msys_to_w32
3678
func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
3679
test -n "$func_cygming_ms_implib_tmp"
3682
# func_cygming_dll_for_implib_fallback ARG
3683
# Platform-specific function to extract the
3684
# name of the DLL associated with the specified
3685
# import library ARG.
3687
# This fallback implementation is for use when $DLLTOOL
3688
# does not support the --identify-strict option.
3689
# Invoked by eval'ing the libtool variable
3690
# $sharedlib_from_linklib_cmd
3691
# Result is available in the variable
3692
# $sharedlib_from_linklib_result
3693
func_cygming_dll_for_implib_fallback ()
3696
if func_cygming_gnu_implib_p "$1" ; then
3697
# binutils import library
3698
sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
3699
elif func_cygming_ms_implib_p "$1" ; then
3700
# ms-generated import library
3701
sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
3704
sharedlib_from_linklib_result=""
3709
# func_extract_an_archive dir oldlib
3710
func_extract_an_archive ()
3713
f_ex_an_ar_dir="$1"; shift
3714
f_ex_an_ar_oldlib="$1"
3715
if test "$lock_old_archive_extraction" = yes; then
3716
lockfile=$f_ex_an_ar_oldlib.lock
3717
until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3718
func_echo "Waiting for $lockfile to be removed"
3722
func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
3723
'stat=$?; rm -f "$lockfile"; exit $stat'
3724
if test "$lock_old_archive_extraction" = yes; then
3725
$opt_dry_run || rm -f "$lockfile"
3727
if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3730
func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
3735
# func_extract_archives gentop oldlib ...
3736
func_extract_archives ()
3739
my_gentop="$1"; shift
3740
my_oldlibs=${1+"$@"}
3746
for my_xlib in $my_oldlibs; do
3747
# Extract the objects.
3749
[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
3750
*) my_xabs=`pwd`"/$my_xlib" ;;
3752
func_basename "$my_xlib"
3753
my_xlib="$func_basename_result"
3756
case " $extracted_archives " in
3758
func_arith $extracted_serial + 1
3759
extracted_serial=$func_arith_result
3760
my_xlib_u=lt$extracted_serial-$my_xlib ;;
3764
extracted_archives="$extracted_archives $my_xlib_u"
3765
my_xdir="$my_gentop/$my_xlib_u"
3767
func_mkdir_p "$my_xdir"
3771
func_verbose "Extracting $my_xabs"
3772
# Do not bother doing anything if just a dry run
3774
darwin_orig_dir=`pwd`
3775
cd $my_xdir || exit $?
3776
darwin_archive=$my_xabs
3778
darwin_base_archive=`basename "$darwin_archive"`
3779
darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
3780
if test -n "$darwin_arches"; then
3781
darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
3783
func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
3784
for darwin_arch in $darwin_arches ; do
3785
func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3786
$LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
3787
cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
3788
func_extract_an_archive "`pwd`" "${darwin_base_archive}"
3790
$RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
3791
done # $darwin_arches
3792
## Okay now we've a bunch of thin objects, gotta fatten them up :)
3793
darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
3796
for darwin_file in $darwin_filelist; do
3797
darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
3798
$LIPO -create -output "$darwin_file" $darwin_files
3799
done # $darwin_filelist
3801
cd "$darwin_orig_dir"
3804
func_extract_an_archive "$my_xdir" "$my_xabs"
3809
func_extract_an_archive "$my_xdir" "$my_xabs"
3812
my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
3815
func_extract_archives_result="$my_oldobjs"
3819
# func_emit_wrapper [arg=no]
3821
# Emit a libtool wrapper script on stdout.
3822
# Don't directly open a file because we may want to
3823
# incorporate the script contents within a cygwin/mingw
3824
# wrapper executable. Must ONLY be called from within
3825
# func_mode_link because it depends on a number of variables
3828
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
3829
# variable will take. If 'yes', then the emitted script
3830
# will assume that the directory in which it is stored is
3831
# the $objdir directory. This is a cygwin/mingw-specific
3833
func_emit_wrapper ()
3835
func_emit_wrapper_arg1=${1-no}
3840
# $output - temporary wrapper script for $objdir/$outputname
3841
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
3843
# The $output program cannot be directly executed until all the libtool
3844
# libraries that it depends on are installed.
3846
# This wrapper script should never be moved out of the build directory.
3847
# If it is, it will not operate correctly.
3849
# Sed substitution that helps us do robust quoting. It backslashifies
3850
# metacharacters that are still active within double-quoted strings.
3851
sed_quote_subst='$sed_quote_subst'
3853
# Be Bourne compatible
3854
if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
3857
# Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
3858
# is contrary to our usage. Disable this feature.
3859
alias -g '\${1+\"\$@\"}'='\"\$@\"'
3860
setopt NO_GLOB_SUBST
3862
case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
3864
BIN_SH=xpg4; export BIN_SH # for Tru64
3865
DUALCASE=1; export DUALCASE # for MKS sh
3867
# The HP-UX ksh and POSIX shell print the target directory to stdout
3869
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3871
relink_command=\"$relink_command\"
3873
# This environment variable determines our operation mode.
3874
if test \"\$libtool_install_magic\" = \"$magic\"; then
3875
# install mode needs the following variables:
3876
generated_by_libtool_version='$macro_version'
3877
notinst_deplibs='$notinst_deplibs'
3879
# When we are sourced in execute mode, \$file and \$ECHO are already set.
3880
if test \"\$libtool_execute_magic\" != \"$magic\"; then
3883
qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
3886
# A function that is used when there is no print builtin or printf.
3887
func_fallback_echo ()
3889
eval 'cat <<_LTECHO_EOF
3896
# Very basic option parsing. These options are (a) specific to
3897
# the libtool wrapper, (b) are identical between the wrapper
3898
# /script/ and the wrapper /executable/ which is used only on
3899
# windows platforms, and (c) all begin with the string "--lt-"
3900
# (application programs are unlikely to have options which match
3903
# There are only two supported options: --lt-debug and
3904
# --lt-dump-script. There is, deliberately, no --lt-help.
3906
# The first argument to this parsing function should be the
3907
# script's $0 value, followed by "$@".
3909
func_parse_lt_options ()
3915
case \"\$lt_opt\" in
3916
--lt-debug) lt_option_debug=1 ;;
3918
lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3919
test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3920
lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3921
cat \"\$lt_dump_D/\$lt_dump_F\"
3925
\$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3931
# Print the debug banner immediately:
3932
if test -n \"\$lt_option_debug\"; then
3933
echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3937
# Used when --lt-debug. Prints its arguments to stdout
3938
# (redirection is the responsibility of the caller)
3939
func_lt_dump_args ()
3944
\$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3945
lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3949
# Core function for launching the target application
3950
func_exec_program_core ()
3954
# Backslashes separate directories on plain windows
3955
*-*-mingw | *-*-os2* | *-cegcc*)
3957
if test -n \"\$lt_option_debug\"; then
3958
\$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3959
func_lt_dump_args \${1+\"\$@\"} 1>&2
3961
exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3967
if test -n \"\$lt_option_debug\"; then
3968
\$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3969
func_lt_dump_args \${1+\"\$@\"} 1>&2
3971
exec \"\$progdir/\$program\" \${1+\"\$@\"}
3976
\$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3980
# A function to encapsulate launching the target application
3981
# Strips options in the --lt-* namespace from \$@ and
3982
# launches target application with the remaining arguments.
3983
func_exec_program ()
3989
*) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3993
func_exec_program_core \${1+\"\$@\"}
3997
func_parse_lt_options \"\$0\" \${1+\"\$@\"}
3999
# Find the directory that this script lives in.
4000
thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
4001
test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4003
# Follow symbolic links until we get to the real thisdir.
4004
file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
4005
while test -n \"\$file\"; do
4006
destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
4008
# If there was a directory component, then change thisdir.
4009
if test \"x\$destdir\" != \"x\$file\"; then
4010
case \"\$destdir\" in
4011
[\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
4012
*) thisdir=\"\$thisdir/\$destdir\" ;;
4016
file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
4017
file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
4020
# Usually 'no', except on cygwin/mingw when embedded into
4022
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
4023
if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4024
# special case for '.'
4025
if test \"\$thisdir\" = \".\"; then
4028
# remove .libs from thisdir
4029
case \"\$thisdir\" in
4030
*[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
4031
$objdir ) thisdir=. ;;
4035
# Try to get the absolute directory name.
4036
absdir=\`cd \"\$thisdir\" && pwd\`
4037
test -n \"\$absdir\" && thisdir=\"\$absdir\"
4040
if test "$fast_install" = yes; then
4042
program=lt-'$outputname'$exeext
4043
progdir=\"\$thisdir/$objdir\"
4045
if test ! -f \"\$progdir/\$program\" ||
4046
{ file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
4047
test \"X\$file\" != \"X\$progdir/\$program\"; }; then
4049
file=\"\$\$-\$program\"
4051
if test ! -d \"\$progdir\"; then
4052
$MKDIR \"\$progdir\"
4054
$RM \"\$progdir/\$file\"
4059
# relink executable if necessary
4060
if test -n \"\$relink_command\"; then
4061
if relink_command_output=\`eval \$relink_command 2>&1\`; then :
4063
$ECHO \"\$relink_command_output\" >&2
4064
$RM \"\$progdir/\$file\"
4069
$MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
4070
{ $RM \"\$progdir/\$program\";
4071
$MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
4072
$RM \"\$progdir/\$file\"
4076
program='$outputname'
4077
progdir=\"\$thisdir/$objdir\"
4083
if test -f \"\$progdir/\$program\"; then"
4085
# fixup the dll searchpath if we need to.
4087
# Fix the DLL searchpath if we need to. Do this before prepending
4088
# to shlibpath, because on Windows, both are PATH and uninstalled
4089
# libraries must come first.
4090
if test -n "$dllsearchpath"; then
4092
# Add the dll search path components to the executable PATH
4093
PATH=$dllsearchpath:\$PATH
4097
# Export our shlibpath_var if we have one.
4098
if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4100
# Add our own library path to $shlibpath_var
4101
$shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
4103
# Some systems cannot cope with colon-terminated $shlibpath_var
4104
# The second colon is a workaround for a bug in BeOS R4 sed
4105
$shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
4107
export $shlibpath_var
4112
if test \"\$libtool_execute_magic\" != \"$magic\"; then
4113
# Run the actual program with our arguments.
4114
func_exec_program \${1+\"\$@\"}
4117
# The program doesn't exist.
4118
\$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4119
\$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4120
\$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4128
# func_emit_cwrapperexe_src
4129
# emit the source code for a wrapper executable on stdout
4130
# Must ONLY be called from within func_mode_link because
4131
# it depends on a number of variable set therein.
4132
func_emit_cwrapperexe_src ()
4136
/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4137
Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
4139
The $output program cannot be directly executed until all the libtool
4140
libraries that it depends on are installed.
4142
This wrapper executable should never be moved out of the build directory.
4143
If it is, it will not operate correctly.
4148
# define _CRT_SECURE_NO_DEPRECATE 1
4153
# include <direct.h>
4154
# include <process.h>
4157
# include <unistd.h>
4158
# include <stdint.h>
4170
#include <sys/stat.h>
4172
/* declarations of non-ANSI functions */
4173
#if defined(__MINGW32__)
4174
# ifdef __STRICT_ANSI__
4175
int _putenv (const char *);
4177
#elif defined(__CYGWIN__)
4178
# ifdef __STRICT_ANSI__
4179
char *realpath (const char *, char *);
4180
int putenv (char *);
4181
int setenv (const char *, const char *, int);
4183
/* #elif defined (other platforms) ... */
4186
/* portability defines, excluding path handling macros */
4187
#if defined(_MSC_VER)
4188
# define setmode _setmode
4190
# define chmod _chmod
4191
# define getcwd _getcwd
4192
# define putenv _putenv
4193
# define S_IXUSR _S_IEXEC
4194
# ifndef _INTPTR_T_DEFINED
4195
# define _INTPTR_T_DEFINED
4196
# define intptr_t int
4198
#elif defined(__MINGW32__)
4199
# define setmode _setmode
4201
# define chmod _chmod
4202
# define getcwd _getcwd
4203
# define putenv _putenv
4204
#elif defined(__CYGWIN__)
4205
# define HAVE_SETENV
4206
# define FOPEN_WB "wb"
4207
/* #elif defined (other platforms) ... */
4210
#if defined(PATH_MAX)
4211
# define LT_PATHMAX PATH_MAX
4212
#elif defined(MAXPATHLEN)
4213
# define LT_PATHMAX MAXPATHLEN
4215
# define LT_PATHMAX 1024
4225
/* path handling portability macros */
4226
#ifndef DIR_SEPARATOR
4227
# define DIR_SEPARATOR '/'
4228
# define PATH_SEPARATOR ':'
4231
#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
4233
# define HAVE_DOS_BASED_FILE_SYSTEM
4234
# define FOPEN_WB "wb"
4235
# ifndef DIR_SEPARATOR_2
4236
# define DIR_SEPARATOR_2 '\\'
4238
# ifndef PATH_SEPARATOR_2
4239
# define PATH_SEPARATOR_2 ';'
4243
#ifndef DIR_SEPARATOR_2
4244
# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
4245
#else /* DIR_SEPARATOR_2 */
4246
# define IS_DIR_SEPARATOR(ch) \
4247
(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
4248
#endif /* DIR_SEPARATOR_2 */
4250
#ifndef PATH_SEPARATOR_2
4251
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
4252
#else /* PATH_SEPARATOR_2 */
4253
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4254
#endif /* PATH_SEPARATOR_2 */
4257
# define FOPEN_WB "w"
4260
# define _O_BINARY 0
4263
#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
4264
#define XFREE(stale) do { \
4265
if (stale) { free ((void *) stale); stale = 0; } \
4268
#if defined(LT_DEBUGWRAPPER)
4269
static int lt_debug = 1;
4271
static int lt_debug = 0;
4274
const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
4276
void *xmalloc (size_t num);
4277
char *xstrdup (const char *string);
4278
const char *base_name (const char *name);
4279
char *find_executable (const char *wrapper);
4280
char *chase_symlinks (const char *pathspec);
4281
int make_executable (const char *path);
4282
int check_executable (const char *path);
4283
char *strendzap (char *str, const char *pat);
4284
void lt_debugprintf (const char *file, int line, const char *fmt, ...);
4285
void lt_fatal (const char *file, int line, const char *message, ...);
4286
static const char *nonnull (const char *s);
4287
static const char *nonempty (const char *s);
4288
void lt_setenv (const char *name, const char *value);
4289
char *lt_extend_str (const char *orig_value, const char *add, int to_end);
4290
void lt_update_exe_path (const char *name, const char *value);
4291
void lt_update_lib_path (const char *name, const char *value);
4292
char **prepare_spawn (char **argv);
4293
void lt_dump_script (FILE *f);
4297
volatile const char * MAGIC_EXE = "$magic_exe";
4298
const char * LIB_PATH_VARNAME = "$shlibpath_var";
4301
if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4302
func_to_host_path "$temp_rpath"
4304
const char * LIB_PATH_VALUE = "$func_to_host_path_result";
4308
const char * LIB_PATH_VALUE = "";
4312
if test -n "$dllsearchpath"; then
4313
func_to_host_path "$dllsearchpath:"
4315
const char * EXE_PATH_VARNAME = "PATH";
4316
const char * EXE_PATH_VALUE = "$func_to_host_path_result";
4320
const char * EXE_PATH_VARNAME = "";
4321
const char * EXE_PATH_VALUE = "";
4325
if test "$fast_install" = yes; then
4327
const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
4331
const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
4338
#define LTWRAPPER_OPTION_PREFIX "--lt-"
4340
static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
4341
static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
4342
static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug";
4345
main (int argc, char *argv[])
4350
char *actual_cwrapper_path;
4351
char *actual_cwrapper_name;
4354
intptr_t rval = 127;
4358
program_name = (char *) xstrdup (base_name (argv[0]));
4359
newargz = XMALLOC (char *, argc + 1);
4361
/* very simple arg parsing; don't want to rely on getopt
4362
* also, copy all non cwrapper options to newargz, except
4363
* argz[0], which is handled differently
4366
for (i = 1; i < argc; i++)
4368
if (strcmp (argv[i], dumpscript_opt) == 0)
4372
*mingw* | *cygwin* )
4373
# make stdout use "unix" line endings
4374
echo " setmode(1,_O_BINARY);"
4379
lt_dump_script (stdout);
4382
if (strcmp (argv[i], debug_opt) == 0)
4387
if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
4389
/* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4390
namespace, but it is not one of the ones we know about and
4391
have already dealt with, above (inluding dump-script), then
4392
report an error. Otherwise, targets might begin to believe
4393
they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4394
namespace. The first time any user complains about this, we'll
4395
need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4396
or a configure.ac-settable value.
4398
lt_fatal (__FILE__, __LINE__,
4399
"unrecognized %s option: '%s'",
4400
ltwrapper_option_prefix, argv[i]);
4403
newargz[++newargc] = xstrdup (argv[i]);
4405
newargz[++newargc] = NULL;
4409
/* The GNU banner must be the first non-error debug message */
4410
lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4413
lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
4414
lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
4416
tmp_pathspec = find_executable (argv[0]);
4417
if (tmp_pathspec == NULL)
4418
lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
4419
lt_debugprintf (__FILE__, __LINE__,
4420
"(main) found exe (before symlink chase) at: %s\n",
4423
actual_cwrapper_path = chase_symlinks (tmp_pathspec);
4424
lt_debugprintf (__FILE__, __LINE__,
4425
"(main) found exe (after symlink chase) at: %s\n",
4426
actual_cwrapper_path);
4427
XFREE (tmp_pathspec);
4429
actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
4430
strendzap (actual_cwrapper_path, actual_cwrapper_name);
4432
/* wrapper name transforms */
4433
strendzap (actual_cwrapper_name, ".exe");
4434
tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
4435
XFREE (actual_cwrapper_name);
4436
actual_cwrapper_name = tmp_pathspec;
4439
/* target_name transforms -- use actual target program name; might have lt- prefix */
4440
target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
4441
strendzap (target_name, ".exe");
4442
tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
4443
XFREE (target_name);
4444
target_name = tmp_pathspec;
4447
lt_debugprintf (__FILE__, __LINE__,
4448
"(main) libtool target name: %s\n",
4454
XMALLOC (char, (strlen (actual_cwrapper_path) +
4455
strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
4456
strcpy (newargz[0], actual_cwrapper_path);
4457
strcat (newargz[0], "$objdir");
4458
strcat (newargz[0], "/");
4462
/* stop here, and copy so we don't have to do this twice */
4463
tmp_pathspec = xstrdup (newargz[0]);
4465
/* do NOT want the lt- prefix here, so use actual_cwrapper_name */
4466
strcat (newargz[0], actual_cwrapper_name);
4468
/* DO want the lt- prefix here if it exists, so use target_name */
4469
lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
4470
XFREE (tmp_pathspec);
4471
tmp_pathspec = NULL;
4479
while ((p = strchr (newargz[0], '\\')) != NULL)
4483
while ((p = strchr (lt_argv_zero, '\\')) != NULL)
4493
XFREE (target_name);
4494
XFREE (actual_cwrapper_path);
4495
XFREE (actual_cwrapper_name);
4497
lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
4498
lt_setenv ("DUALCASE", "1"); /* for MSK sh */
4499
/* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
4500
be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
4501
because on Windows, both *_VARNAMEs are PATH but uninstalled
4502
libraries must come first. */
4503
lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
4504
lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
4506
lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
4507
nonnull (lt_argv_zero));
4508
for (i = 0; i < newargc; i++)
4510
lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
4511
i, nonnull (newargz[i]));
4519
/* execv doesn't actually work on mingw as expected on unix */
4520
newargz = prepare_spawn (newargz);
4521
rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4524
/* failed to start process */
4525
lt_debugprintf (__FILE__, __LINE__,
4526
"(main) failed to launch target \"%s\": %s\n",
4527
lt_argv_zero, nonnull (strerror (errno)));
4535
execv (lt_argv_zero, newargz);
4536
return rval; /* =127, but avoids unused variable warning */
4545
xmalloc (size_t num)
4547
void *p = (void *) malloc (num);
4549
lt_fatal (__FILE__, __LINE__, "memory exhausted");
4555
xstrdup (const char *string)
4557
return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
4562
base_name (const char *name)
4566
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4567
/* Skip over the disk name in MSDOS pathnames. */
4568
if (isalpha ((unsigned char) name[0]) && name[1] == ':')
4572
for (base = name; *name; name++)
4573
if (IS_DIR_SEPARATOR (*name))
4579
check_executable (const char *path)
4583
lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
4585
if ((!path) || (!*path))
4588
if ((stat (path, &st) >= 0)
4589
&& (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
4596
make_executable (const char *path)
4601
lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
4603
if ((!path) || (!*path))
4606
if (stat (path, &st) >= 0)
4608
rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
4613
/* Searches for the full path of the wrapper. Returns
4614
newly allocated full path name if found, NULL otherwise
4615
Does not chase symlinks, even on platforms that support them.
4618
find_executable (const char *wrapper)
4623
/* static buffer for getcwd */
4624
char tmp[LT_PATHMAX + 1];
4628
lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
4629
nonempty (wrapper));
4631
if ((wrapper == NULL) || (*wrapper == '\0'))
4634
/* Absolute path? */
4635
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4636
if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
4638
concat_name = xstrdup (wrapper);
4639
if (check_executable (concat_name))
4641
XFREE (concat_name);
4646
if (IS_DIR_SEPARATOR (wrapper[0]))
4648
concat_name = xstrdup (wrapper);
4649
if (check_executable (concat_name))
4651
XFREE (concat_name);
4653
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
4657
for (p = wrapper; *p; p++)
4665
/* no slashes; search PATH */
4666
const char *path = getenv ("PATH");
4669
for (p = path; *p; p = p_next)
4673
for (q = p; *q; q++)
4674
if (IS_PATH_SEPARATOR (*q))
4677
p_next = (*q == '\0' ? q : q + 1);
4680
/* empty path: current directory */
4681
if (getcwd (tmp, LT_PATHMAX) == NULL)
4682
lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4683
nonnull (strerror (errno)));
4684
tmp_len = strlen (tmp);
4686
XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4687
memcpy (concat_name, tmp, tmp_len);
4688
concat_name[tmp_len] = '/';
4689
strcpy (concat_name + tmp_len + 1, wrapper);
4694
XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
4695
memcpy (concat_name, p, p_len);
4696
concat_name[p_len] = '/';
4697
strcpy (concat_name + p_len + 1, wrapper);
4699
if (check_executable (concat_name))
4701
XFREE (concat_name);
4704
/* not found in PATH; assume curdir */
4706
/* Relative path | not found in path: prepend cwd */
4707
if (getcwd (tmp, LT_PATHMAX) == NULL)
4708
lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
4709
nonnull (strerror (errno)));
4710
tmp_len = strlen (tmp);
4711
concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4712
memcpy (concat_name, tmp, tmp_len);
4713
concat_name[tmp_len] = '/';
4714
strcpy (concat_name + tmp_len + 1, wrapper);
4716
if (check_executable (concat_name))
4718
XFREE (concat_name);
4723
chase_symlinks (const char *pathspec)
4726
return xstrdup (pathspec);
4728
char buf[LT_PATHMAX];
4730
char *tmp_pathspec = xstrdup (pathspec);
4732
int has_symlinks = 0;
4733
while (strlen (tmp_pathspec) && !has_symlinks)
4735
lt_debugprintf (__FILE__, __LINE__,
4736
"checking path component for symlinks: %s\n",
4738
if (lstat (tmp_pathspec, &s) == 0)
4740
if (S_ISLNK (s.st_mode) != 0)
4746
/* search backwards for last DIR_SEPARATOR */
4747
p = tmp_pathspec + strlen (tmp_pathspec) - 1;
4748
while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4750
if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
4752
/* no more DIR_SEPARATORS left */
4759
lt_fatal (__FILE__, __LINE__,
4760
"error accessing file \"%s\": %s",
4761
tmp_pathspec, nonnull (strerror (errno)));
4764
XFREE (tmp_pathspec);
4768
return xstrdup (pathspec);
4771
tmp_pathspec = realpath (pathspec, buf);
4772
if (tmp_pathspec == 0)
4774
lt_fatal (__FILE__, __LINE__,
4775
"could not follow symlinks for %s", pathspec);
4777
return xstrdup (tmp_pathspec);
4782
strendzap (char *str, const char *pat)
4786
assert (str != NULL);
4787
assert (pat != NULL);
4790
patlen = strlen (pat);
4794
str += len - patlen;
4795
if (strcmp (str, pat) == 0)
4802
lt_debugprintf (const char *file, int line, const char *fmt, ...)
4807
(void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4808
va_start (args, fmt);
4809
(void) vfprintf (stderr, fmt, args);
4815
lt_error_core (int exit_status, const char *file,
4816
int line, const char *mode,
4817
const char *message, va_list ap)
4819
fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
4820
vfprintf (stderr, message, ap);
4821
fprintf (stderr, ".\n");
4823
if (exit_status >= 0)
4828
lt_fatal (const char *file, int line, const char *message, ...)
4831
va_start (ap, message);
4832
lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
4837
nonnull (const char *s)
4839
return s ? s : "(null)";
4843
nonempty (const char *s)
4845
return (s && !*s) ? "(empty)" : nonnull (s);
4849
lt_setenv (const char *name, const char *value)
4851
lt_debugprintf (__FILE__, __LINE__,
4852
"(lt_setenv) setting '%s' to '%s'\n",
4853
nonnull (name), nonnull (value));
4856
/* always make a copy, for consistency with !HAVE_SETENV */
4857
char *str = xstrdup (value);
4858
setenv (name, str, 1);
4860
int len = strlen (name) + 1 + strlen (value) + 1;
4861
char *str = XMALLOC (char, len);
4862
sprintf (str, "%s=%s", name, value);
4863
if (putenv (str) != EXIT_SUCCESS)
4872
lt_extend_str (const char *orig_value, const char *add, int to_end)
4875
if (orig_value && *orig_value)
4877
int orig_value_len = strlen (orig_value);
4878
int add_len = strlen (add);
4879
new_value = XMALLOC (char, add_len + orig_value_len + 1);
4882
strcpy (new_value, orig_value);
4883
strcpy (new_value + orig_value_len, add);
4887
strcpy (new_value, add);
4888
strcpy (new_value + add_len, orig_value);
4893
new_value = xstrdup (add);
4899
lt_update_exe_path (const char *name, const char *value)
4901
lt_debugprintf (__FILE__, __LINE__,
4902
"(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4903
nonnull (name), nonnull (value));
4905
if (name && *name && value && *value)
4907
char *new_value = lt_extend_str (getenv (name), value, 0);
4908
/* some systems can't cope with a ':'-terminated path #' */
4909
int len = strlen (new_value);
4910
while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
4912
new_value[len-1] = '\0';
4914
lt_setenv (name, new_value);
4920
lt_update_lib_path (const char *name, const char *value)
4922
lt_debugprintf (__FILE__, __LINE__,
4923
"(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4924
nonnull (name), nonnull (value));
4926
if (name && *name && value && *value)
4928
char *new_value = lt_extend_str (getenv (name), value, 0);
4929
lt_setenv (name, new_value);
4939
/* Prepares an argument vector before calling spawn().
4940
Note that spawn() does not by itself call the command interpreter
4941
(getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4942
({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4944
v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4945
}) ? "cmd.exe" : "command.com").
4946
Instead it simply concatenates the arguments, separated by ' ', and calls
4947
CreateProcess(). We must quote the arguments since Win32 CreateProcess()
4948
interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4950
- Space and tab are interpreted as delimiters. They are not treated as
4951
delimiters if they are surrounded by double quotes: "...".
4952
- Unescaped double quotes are removed from the input. Their only effect is
4953
that within double quotes, space and tab are treated like normal
4955
- Backslashes not followed by double quotes are not special.
4956
- But 2*n+1 backslashes followed by a double quote become
4957
n backslashes followed by a double quote (n >= 0):
4962
#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
4963
#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
4965
prepare_spawn (char **argv)
4971
/* Count number of arguments. */
4972
for (argc = 0; argv[argc] != NULL; argc++)
4975
/* Allocate new argument vector. */
4976
new_argv = XMALLOC (char *, argc + 1);
4978
/* Put quoted arguments into the new argument vector. */
4979
for (i = 0; i < argc; i++)
4981
const char *string = argv[i];
4983
if (string[0] == '\0')
4984
new_argv[i] = xstrdup ("\"\"");
4985
else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
4987
int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
4989
unsigned int backslashes;
4991
char *quoted_string;
4998
for (s = string; *s != '\0'; s++)
5002
length += backslashes + 1;
5010
length += backslashes + 1;
5012
quoted_string = XMALLOC (char, length + 1);
5018
for (s = string; *s != '\0'; s++)
5024
for (j = backslashes + 1; j > 0; j--)
5036
for (j = backslashes; j > 0; j--)
5042
new_argv[i] = quoted_string;
5045
new_argv[i] = (char *) string;
5047
new_argv[argc] = NULL;
5056
void lt_dump_script (FILE* f)
5059
func_emit_wrapper yes |
5060
$SED -e 's/\([\\"]\)/\\\1/g' \
5061
-e 's/^/ fputs ("/' -e 's/$/\\n", f);/'
5067
# end: func_emit_cwrapperexe_src
5069
# func_win32_import_lib_p ARG
5070
# True if ARG is an import lib, as indicated by $file_magic_cmd
5071
func_win32_import_lib_p ()
5074
case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
5080
# func_mode_link arg...
1066
$show "$mv $output_obj $obj"
1067
if $run $mv $output_obj $obj; then :
1070
$run $rm $removelist
1075
# Append the name of the non-PIC object the libtool object file.
1076
# Only append if the libtool object file exists.
1077
test -z "$run" && cat >> ${libobj}T <<EOF
1078
# Name of the non-PIC object.
1079
non_pic_object='$objname'
1083
# Append the name of the non-PIC object the libtool object file.
1084
# Only append if the libtool object file exists.
1085
test -z "$run" && cat >> ${libobj}T <<EOF
1086
# Name of the non-PIC object.
1092
$run $mv "${libobj}T" "${libobj}"
1094
# Unlock the critical section if it was locked
1095
if test "$need_locks" != no; then
1096
$run $rm "$lockfile"
1104
modename="$modename: link"
5085
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
1106
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
5086
1107
# It is impossible to link a dll without this setting, and
5087
1108
# we shouldn't force the makefile maintainer to figure out
5088
1109
# which system we are compiling for in order to pass an extra
8971
4898
# Replace the output file specification.
8972
link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
4899
link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
8974
4901
# Delete the old output files.
8975
$opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
8977
func_show_eval "$link_command" 'exit $?'
8979
if test -n "$postlink_cmds"; then
8980
func_to_tool_file "$output_objdir/$outputname"
8981
postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
8982
func_execute_cmds "$postlink_cmds" 'exit $?'
4902
$run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
4904
$show "$link_command"
4905
$run eval "$link_command" || exit $?
8985
4907
# Now create the wrapper script.
8986
func_verbose "creating $output"
4908
$show "creating $output"
8988
4910
# Quote the relink command for shipping.
8989
4911
if test -n "$relink_command"; then
8990
4912
# Preserve any variables that may affect compiler behavior
8991
4913
for var in $variables_saved_for_relink; do
8992
4914
if eval test -z \"\${$var+set}\"; then
8993
relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
4915
relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
8994
4916
elif eval var_value=\$$var; test -z "$var_value"; then
8995
4917
relink_command="$var=; export $var; $relink_command"
8997
func_quote_for_eval "$var_value"
8998
relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
4919
var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
4920
relink_command="$var=\"$var_value\"; export $var; $relink_command"
9001
4923
relink_command="(cd `pwd`; $relink_command)"
9002
relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
9005
# Only actually do things if not in dry run mode.
4924
relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
4927
# Quote $echo for shipping.
4928
if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
4930
[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
4931
*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
4933
qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
4935
qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
4938
# Only actually do things if our run command is non-null.
4939
if test -z "$run"; then
9007
4940
# win32 will think the script is a binary if it has
9008
4941
# a .exe suffix, so we strip it off here.
9009
4942
case $output in
9010
*.exe) func_stripname '' '.exe' "$output"
9011
output=$func_stripname_result ;;
4943
*.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
9013
4945
# test for cygwin because mv fails w/o .exe extensions
9017
func_stripname '' '.exe' "$outputname"
9018
outputname=$func_stripname_result ;;
4949
outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
9022
4953
*cygwin* | *mingw* )
9023
func_dirname_and_basename "$output" "" "."
9024
output_name=$func_basename_result
9025
output_path=$func_dirname_result
9026
cwrappersource="$output_path/$objdir/lt-$output_name.c"
9027
cwrapper="$output_path/$output_name.exe"
9028
$RM $cwrappersource $cwrapper
9029
trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
9031
func_emit_cwrapperexe_src > $cwrappersource
9033
# The wrapper executable is built using the $host compiler,
9034
# because it contains $host paths and files. If cross-
9035
# compiling, it, like the target executable, must be
9036
# executed on the $host or under an emulation environment.
9038
$LTCC $LTCFLAGS -o $cwrapper $cwrappersource
9042
# Now, create the wrapper script for func_source use:
9043
func_ltwrapper_scriptname $cwrapper
9044
$RM $func_ltwrapper_scriptname_result
9045
trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
9047
# note: this script will not be executed, so do not chmod.
9048
if test "x$build" = "x$host" ; then
9049
$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
9051
func_emit_wrapper no > $func_ltwrapper_scriptname_result
4954
output_name=`basename $output`
4955
output_path=`dirname $output`
4956
cwrappersource="$output_path/$objdir/lt-$output_name.c"
4957
cwrapper="$output_path/$output_name.exe"
4958
$rm $cwrappersource $cwrapper
4959
trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
4961
cat > $cwrappersource <<EOF
4963
/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
4964
Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
4966
The $output program cannot be directly executed until all the libtool
4967
libraries that it depends on are installed.
4969
This wrapper executable should never be moved out of the build directory.
4970
If it is, it will not operate correctly.
4972
Currently, it simply execs the wrapper *script* "/bin/sh $output",
4973
but could eventually absorb all of the scripts functionality and
4974
exec $objdir/$outputname directly.
4977
cat >> $cwrappersource<<"EOF"
4986
#include <sys/stat.h>
4988
#if defined(PATH_MAX)
4989
# define LT_PATHMAX PATH_MAX
4990
#elif defined(MAXPATHLEN)
4991
# define LT_PATHMAX MAXPATHLEN
4993
# define LT_PATHMAX 1024
4996
#ifndef DIR_SEPARATOR
4997
# define DIR_SEPARATOR '/'
4998
# define PATH_SEPARATOR ':'
5001
#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
5003
# define HAVE_DOS_BASED_FILE_SYSTEM
5004
# ifndef DIR_SEPARATOR_2
5005
# define DIR_SEPARATOR_2 '\\'
5007
# ifndef PATH_SEPARATOR_2
5008
# define PATH_SEPARATOR_2 ';'
5012
#ifndef DIR_SEPARATOR_2
5013
# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
5014
#else /* DIR_SEPARATOR_2 */
5015
# define IS_DIR_SEPARATOR(ch) \
5016
(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
5017
#endif /* DIR_SEPARATOR_2 */
5019
#ifndef PATH_SEPARATOR_2
5020
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
5021
#else /* PATH_SEPARATOR_2 */
5022
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
5023
#endif /* PATH_SEPARATOR_2 */
5025
#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
5026
#define XFREE(stale) do { \
5027
if (stale) { free ((void *) stale); stale = 0; } \
5030
/* -DDEBUG is fairly common in CFLAGS. */
5032
#if defined DEBUGWRAPPER
5033
# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
5035
# define DEBUG(format, ...)
5038
const char *program_name = NULL;
5040
void * xmalloc (size_t num);
5041
char * xstrdup (const char *string);
5042
const char * base_name (const char *name);
5043
char * find_executable(const char *wrapper);
5044
int check_executable(const char *path);
5045
char * strendzap(char *str, const char *pat);
5046
void lt_fatal (const char *message, ...);
5049
main (int argc, char *argv[])
5054
program_name = (char *) xstrdup (base_name (argv[0]));
5055
DEBUG("(main) argv[0] : %s\n",argv[0]);
5056
DEBUG("(main) program_name : %s\n",program_name);
5057
newargz = XMALLOC(char *, argc+2);
5060
cat >> $cwrappersource <<EOF
5061
newargz[0] = (char *) xstrdup("$SHELL");
5064
cat >> $cwrappersource <<"EOF"
5065
newargz[1] = find_executable(argv[0]);
5066
if (newargz[1] == NULL)
5067
lt_fatal("Couldn't find %s", argv[0]);
5068
DEBUG("(main) found exe at : %s\n",newargz[1]);
5069
/* we know the script has the same name, without the .exe */
5070
/* so make sure newargz[1] doesn't end in .exe */
5071
strendzap(newargz[1],".exe");
5072
for (i = 1; i < argc; i++)
5073
newargz[i+1] = xstrdup(argv[i]);
5074
newargz[argc+1] = NULL;
5076
for (i=0; i<argc+1; i++)
5078
DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
5086
cat >> $cwrappersource <<EOF
5087
execv("$SHELL",(char const **)newargz);
5091
cat >> $cwrappersource <<EOF
5092
execv("$SHELL",newargz);
5097
cat >> $cwrappersource <<"EOF"
5102
xmalloc (size_t num)
5104
void * p = (void *) malloc (num);
5106
lt_fatal ("Memory exhausted");
5112
xstrdup (const char *string)
5114
return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
5119
base_name (const char *name)
5123
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5124
/* Skip over the disk name in MSDOS pathnames. */
5125
if (isalpha ((unsigned char)name[0]) && name[1] == ':')
5129
for (base = name; *name; name++)
5130
if (IS_DIR_SEPARATOR (*name))
5136
check_executable(const char * path)
5140
DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
5141
if ((!path) || (!*path))
5144
if ((stat (path, &st) >= 0) &&
5146
/* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
5147
#if defined (S_IXOTH)
5148
((st.st_mode & S_IXOTH) == S_IXOTH) ||
5150
#if defined (S_IXGRP)
5151
((st.st_mode & S_IXGRP) == S_IXGRP) ||
5153
((st.st_mode & S_IXUSR) == S_IXUSR))
5160
/* Searches for the full path of the wrapper. Returns
5161
newly allocated full path name if found, NULL otherwise */
5163
find_executable (const char* wrapper)
5168
/* static buffer for getcwd */
5169
char tmp[LT_PATHMAX + 1];
5173
DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
5175
if ((wrapper == NULL) || (*wrapper == '\0'))
5178
/* Absolute path? */
5179
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5180
if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
5182
concat_name = xstrdup (wrapper);
5183
if (check_executable(concat_name))
5190
if (IS_DIR_SEPARATOR (wrapper[0]))
5192
concat_name = xstrdup (wrapper);
5193
if (check_executable(concat_name))
5197
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
5201
for (p = wrapper; *p; p++)
5209
/* no slashes; search PATH */
5210
const char* path = getenv ("PATH");
5213
for (p = path; *p; p = p_next)
5217
for (q = p; *q; q++)
5218
if (IS_PATH_SEPARATOR(*q))
5221
p_next = (*q == '\0' ? q : q + 1);
5224
/* empty path: current directory */
5225
if (getcwd (tmp, LT_PATHMAX) == NULL)
5226
lt_fatal ("getcwd failed");
5227
tmp_len = strlen(tmp);
5228
concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5229
memcpy (concat_name, tmp, tmp_len);
5230
concat_name[tmp_len] = '/';
5231
strcpy (concat_name + tmp_len + 1, wrapper);
5235
concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
5236
memcpy (concat_name, p, p_len);
5237
concat_name[p_len] = '/';
5238
strcpy (concat_name + p_len + 1, wrapper);
5240
if (check_executable(concat_name))
5245
/* not found in PATH; assume curdir */
5247
/* Relative path | not found in path: prepend cwd */
5248
if (getcwd (tmp, LT_PATHMAX) == NULL)
5249
lt_fatal ("getcwd failed");
5250
tmp_len = strlen(tmp);
5251
concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
5252
memcpy (concat_name, tmp, tmp_len);
5253
concat_name[tmp_len] = '/';
5254
strcpy (concat_name + tmp_len + 1, wrapper);
5256
if (check_executable(concat_name))
5263
strendzap(char *str, const char *pat)
5267
assert(str != NULL);
5268
assert(pat != NULL);
5271
patlen = strlen(pat);
5275
str += len - patlen;
5276
if (strcmp(str, pat) == 0)
5283
lt_error_core (int exit_status, const char * mode,
5284
const char * message, va_list ap)
5286
fprintf (stderr, "%s: %s: ", program_name, mode);
5287
vfprintf (stderr, message, ap);
5288
fprintf (stderr, ".\n");
5290
if (exit_status >= 0)
5295
lt_fatal (const char *message, ...)
5298
va_start (ap, message);
5299
lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
5303
# we should really use a build-platform specific compiler
5304
# here, but OTOH, the wrappers (shell script and this C one)
5305
# are only useful if you want to execute the "real" binary.
5306
# Since the "real" binary is built for $host, then this
5307
# wrapper might as well be built for $host, too.
5308
$run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
5312
trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
5317
# $output - temporary wrapper script for $objdir/$outputname
5318
# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
5320
# The $output program cannot be directly executed until all the libtool
5321
# libraries that it depends on are installed.
5323
# This wrapper script should never be moved out of the build directory.
5324
# If it is, it will not operate correctly.
5326
# Sed substitution that helps us do robust quoting. It backslashifies
5327
# metacharacters that are still active within double-quoted strings.
5328
Xsed='${SED} -e 1s/^X//'
5329
sed_quote_subst='$sed_quote_subst'
5331
# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
5332
if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
5335
# Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
5336
# is contrary to our usage. Disable this feature.
5337
alias -g '\${1+\"\$@\"}'='\"\$@\"'
5338
setopt NO_GLOB_SUBST
5340
case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
5342
BIN_SH=xpg4; export BIN_SH # for Tru64
5343
DUALCASE=1; export DUALCASE # for MKS sh
5345
# The HP-UX ksh and POSIX shell print the target directory to stdout
5347
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
5349
relink_command=\"$relink_command\"
5351
# This environment variable determines our operation mode.
5352
if test \"\$libtool_install_magic\" = \"$magic\"; then
5353
# install mode needs the following variable:
5354
notinst_deplibs='$notinst_deplibs'
5356
# When we are sourced in execute mode, \$file and \$echo are already set.
5357
if test \"\$libtool_execute_magic\" != \"$magic\"; then
5360
# Make sure echo works.
5361
if test \"X\$1\" = X--no-reexec; then
5362
# Discard the --no-reexec flag, and continue.
5364
elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
5365
# Yippee, \$echo works!
5368
# Restart under the correct shell, and then maybe \$echo will work.
5369
exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
5375
# Find the directory that this script lives in.
5376
thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
5377
test \"x\$thisdir\" = \"x\$file\" && thisdir=.
5379
# Follow symbolic links until we get to the real thisdir.
5380
file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
5381
while test -n \"\$file\"; do
5382
destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
5384
# If there was a directory component, then change thisdir.
5385
if test \"x\$destdir\" != \"x\$file\"; then
5386
case \"\$destdir\" in
5387
[\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
5388
*) thisdir=\"\$thisdir/\$destdir\" ;;
5392
file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
5393
file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
5396
# Try to get the absolute directory name.
5397
absdir=\`cd \"\$thisdir\" && pwd\`
5398
test -n \"\$absdir\" && thisdir=\"\$absdir\"
5401
if test "$fast_install" = yes; then
5403
program=lt-'$outputname'$exeext
5404
progdir=\"\$thisdir/$objdir\"
5406
if test ! -f \"\$progdir/\$program\" || \\
5407
{ file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
5408
test \"X\$file\" != \"X\$progdir/\$program\"; }; then
5410
file=\"\$\$-\$program\"
5412
if test ! -d \"\$progdir\"; then
5413
$mkdir \"\$progdir\"
5415
$rm \"\$progdir/\$file\"
5420
# relink executable if necessary
5421
if test -n \"\$relink_command\"; then
5422
if relink_command_output=\`eval \$relink_command 2>&1\`; then :
5424
$echo \"\$relink_command_output\" >&2
5425
$rm \"\$progdir/\$file\"
5430
$mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
5431
{ $rm \"\$progdir/\$program\";
5432
$mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
5433
$rm \"\$progdir/\$file\"
5437
program='$outputname'
5438
progdir=\"\$thisdir/$objdir\"
5444
if test -f \"\$progdir/\$program\"; then"
5446
# Export our shlibpath_var if we have one.
5447
if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
5449
# Add our own library path to $shlibpath_var
5450
$shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
5452
# Some systems cannot cope with colon-terminated $shlibpath_var
5453
# The second colon is a workaround for a bug in BeOS R4 sed
5454
$shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
5456
export $shlibpath_var
5460
# fixup the dll searchpath if we need to.
5461
if test -n "$dllsearchpath"; then
5463
# Add the dll search path components to the executable PATH
5464
PATH=$dllsearchpath:\$PATH
5469
if test \"\$libtool_execute_magic\" != \"$magic\"; then
5470
# Run the actual program with our arguments.
5473
# Backslashes separate directories on plain windows
5474
*-*-mingw | *-*-os2*)
5476
exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
9057
trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
9059
func_emit_wrapper no > $output
5482
exec \"\$progdir/\$program\" \${1+\"\$@\"}
5487
\$echo \"\$0: cannot exec \$program \$*\"
5491
# The program doesn't exist.
5492
\$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
5493
\$echo \"This script is just a wrapper for \$program.\" 1>&2
5494
$echo \"See the $PACKAGE documentation for more information.\" 1>&2
9064
5501
exit $EXIT_SUCCESS
9401
5786
# Directory that this library needs to be installed in:
9402
5787
libdir='$install_libdir'"
9403
5788
if test "$installed" = no && test "$need_relink" = yes; then
9405
5790
relink_command=\"$relink_command\""
9410
5795
# Do a symbolic link so that the libtool archive can be found in
9411
5796
# LD_LIBRARY_PATH before the program is installed.
9412
func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
9418
{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
9419
func_mode_link ${1+"$@"}
9422
# func_mode_uninstall arg...
9423
func_mode_uninstall ()
5797
$show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
5798
$run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
5804
# libtool install mode
5806
modename="$modename: install"
5808
# There may be an optional sh(1) argument at the beginning of
5809
# install_prog (especially on Windows NT).
5810
if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
5811
# Allow the use of GNU shtool's install command.
5812
$echo "X$nonopt" | grep shtool > /dev/null; then
5813
# Aesthetically quote it.
5814
arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
5816
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5820
install_prog="$arg "
5828
# The real first argument should be the name of the installation program.
5829
# Aesthetically quote it.
5830
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5832
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5836
install_prog="$install_prog$arg"
5838
# We need to accept at least all the BSD install flags.
5848
if test -n "$dest"; then
5849
files="$files $dest"
5857
case " $install_prog " in
5862
-g | -m | -o) prev=$arg ;;
5870
# If the previous option needed an argument, then skip it.
5871
if test -n "$prev"; then
5880
# Aesthetically quote the argument.
5881
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
5883
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
5887
install_prog="$install_prog $arg"
5890
if test -z "$install_prog"; then
5891
$echo "$modename: you must specify an install program" 1>&2
5896
if test -n "$prev"; then
5897
$echo "$modename: the \`$prev' option requires an argument" 1>&2
5902
if test -z "$files"; then
5903
if test -z "$dest"; then
5904
$echo "$modename: no file or destination specified" 1>&2
5906
$echo "$modename: you must specify a destination" 1>&2
5912
# Strip any trailing slash from the destination.
5913
dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
5915
# Check to see that the destination is a directory.
5916
test -d "$dest" && isdir=yes
5917
if test "$isdir" = yes; then
5921
destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
5922
test "X$destdir" = "X$dest" && destdir=.
5923
destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
5925
# Not a directory, so check to see that there is only one file specified.
5927
if test "$#" -gt 2; then
5928
$echo "$modename: \`$dest' is not a directory" 1>&2
5934
[\\/]* | [A-Za-z]:[\\/]*) ;;
5936
for file in $files; do
5940
$echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
5949
# This variable tells wrapper scripts just to set variables rather
5950
# than running their programs.
5951
libtool_install_magic="$magic"
5956
for file in $files; do
5958
# Do each installation.
5961
# Do the static libraries later.
5962
staticlibs="$staticlibs $file"
5966
# Check to see that this really is a libtool archive.
5967
if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
5969
$echo "$modename: \`$file' is not a valid libtool archive" 1>&2
5977
# If there is no directory component, then add one.
5979
*/* | *\\*) . $file ;;
5983
# Add the libdir to current_libdirs if it is the destination.
5984
if test "X$destdir" = "X$libdir"; then
5985
case "$current_libdirs " in
5987
*) current_libdirs="$current_libdirs $libdir" ;;
5990
# Note the libdir as a future libdir.
5991
case "$future_libdirs " in
5993
*) future_libdirs="$future_libdirs $libdir" ;;
5997
dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
5998
test "X$dir" = "X$file/" && dir=
6001
if test -n "$relink_command"; then
6002
# Determine the prefix the user has applied to our future dir.
6003
inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
6005
# Don't allow the user to place us outside of our expected
6006
# location b/c this prevents finding dependent libraries that
6007
# are installed to the same prefix.
6008
# At present, this check doesn't affect windows .dll's that
6009
# are installed into $libdir/../bin (currently, that works fine)
6010
# but it's something to keep an eye on.
6011
if test "$inst_prefix_dir" = "$destdir"; then
6012
$echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
6016
if test -n "$inst_prefix_dir"; then
6017
# Stick the inst_prefix_dir data into the link command.
6018
relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
6020
relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
6023
$echo "$modename: warning: relinking \`$file'" 1>&2
6024
$show "$relink_command"
6025
if $run eval "$relink_command"; then :
6027
$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6032
# See the names of the shared library.
6033
set dummy $library_names
6034
if test -n "$2"; then
6040
test -n "$relink_command" && srcname="$realname"T
6042
# Install the shared library and build the symlinks.
6043
$show "$install_prog $dir/$srcname $destdir/$realname"
6044
$run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
6045
if test -n "$stripme" && test -n "$striplib"; then
6046
$show "$striplib $destdir/$realname"
6047
$run eval "$striplib $destdir/$realname" || exit $?
6050
if test "$#" -gt 0; then
6051
# Delete the old symlinks, and create new ones.
6052
# Try `ln -sf' first, because the `ln' binary might depend on
6053
# the symlink we replace! Solaris /bin/ln does not understand -f,
6054
# so we also need to try rm && ln -s.
6057
if test "$linkname" != "$realname"; then
6058
$show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6059
$run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
6064
# Do each command in the postinstall commands.
6065
lib="$destdir/$realname"
6066
cmds=$postinstall_cmds
6067
save_ifs="$IFS"; IFS='~'
6068
for cmd in $cmds; do
6072
$run eval "$cmd" || {
6075
# Restore the uninstalled library and exit
6076
if test "$mode" = relink; then
6077
$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
6086
# Install the pseudo-library for information purposes.
6087
name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6088
instname="$dir/$name"i
6089
$show "$install_prog $instname $destdir/$name"
6090
$run eval "$install_prog $instname $destdir/$name" || exit $?
6092
# Maybe install the static library, too.
6093
test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
6097
# Install (i.e. copy) a libtool object.
6099
# Figure out destination file name, if it wasn't already specified.
6100
if test -n "$destname"; then
6101
destfile="$destdir/$destname"
6103
destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6104
destfile="$destdir/$destfile"
6107
# Deduce the name of the destination old-style object file.
6110
staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
6113
staticdest="$destfile"
6117
$echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
6123
# Install the libtool object if requested.
6124
if test -n "$destfile"; then
6125
$show "$install_prog $file $destfile"
6126
$run eval "$install_prog $file $destfile" || exit $?
6129
# Install the old object if enabled.
6130
if test "$build_old_libs" = yes; then
6131
# Deduce the name of the old-style object file.
6132
staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
6134
$show "$install_prog $staticobj $staticdest"
6135
$run eval "$install_prog \$staticobj \$staticdest" || exit $?
6141
# Figure out destination file name, if it wasn't already specified.
6142
if test -n "$destname"; then
6143
destfile="$destdir/$destname"
6145
destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6146
destfile="$destdir/$destfile"
6149
# If the file is missing, and there is a .exe on the end, strip it
6150
# because it is most likely a libtool script we actually want to
6155
if test ! -f "$file"; then
6156
file=`$echo $file|${SED} 's,.exe$,,'`
6162
# Do a test to see if this is really a libtool program.
6165
wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
6171
if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
6175
# Note that it is not necessary on cygwin/mingw to append a dot to
6176
# foo even if both foo and FILE.exe exist: automatic-append-.exe
6177
# behavior happens only for exec(3), not for open(2)! Also, sourcing
6178
# `FILE.' does not work on cygwin managed mounts.
6180
# If there is no directory component, then add one.
6182
*/* | *\\*) . ${wrapper} ;;
6183
*) . ./${wrapper} ;;
6186
# Check the variables that should have been set.
6187
if test -z "$notinst_deplibs"; then
6188
$echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
6193
for lib in $notinst_deplibs; do
6194
# Check to see that each library is installed.
6196
if test -f "$lib"; then
6197
# If there is no directory component, then add one.
6199
*/* | *\\*) . $lib ;;
6203
libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
6204
if test -n "$libdir" && test ! -f "$libfile"; then
6205
$echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
6211
# Note that it is not necessary on cygwin/mingw to append a dot to
6212
# foo even if both foo and FILE.exe exist: automatic-append-.exe
6213
# behavior happens only for exec(3), not for open(2)! Also, sourcing
6214
# `FILE.' does not work on cygwin managed mounts.
6216
# If there is no directory component, then add one.
6218
*/* | *\\*) . ${wrapper} ;;
6219
*) . ./${wrapper} ;;
6223
if test "$fast_install" = no && test -n "$relink_command"; then
6224
if test "$finalize" = yes && test -z "$run"; then
6225
tmpdir=`func_mktempdir`
6226
file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
6227
outputname="$tmpdir/$file"
6228
# Replace the output file specification.
6229
relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
6231
$show "$relink_command"
6232
if $run eval "$relink_command"; then :
6234
$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
6240
$echo "$modename: warning: cannot relink \`$file'" 1>&2
6243
# Install the binary that we compiled earlier.
6244
file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
6248
# remove .exe since cygwin /usr/bin/install will append another
6250
case $install_prog,$host in
6251
*/usr/bin/install*,*cygwin*)
6252
case $file:$destfile in
6257
destfile=$destfile.exe
6260
destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
6265
$show "$install_prog$stripme $file $destfile"
6266
$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
6267
test -n "$outputname" && ${rm}r "$tmpdir"
6272
for file in $staticlibs; do
6273
name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
6275
# Set up the ranlib parameters.
6276
oldlib="$destdir/$name"
6278
$show "$install_prog $file $oldlib"
6279
$run eval "$install_prog \$file \$oldlib" || exit $?
6281
if test -n "$stripme" && test -n "$old_striplib"; then
6282
$show "$old_striplib $oldlib"
6283
$run eval "$old_striplib $oldlib" || exit $?
6286
# Do each command in the postinstall commands.
6287
cmds=$old_postinstall_cmds
6288
save_ifs="$IFS"; IFS='~'
6289
for cmd in $cmds; do
6293
$run eval "$cmd" || exit $?
6298
if test -n "$future_libdirs"; then
6299
$echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
6302
if test -n "$current_libdirs"; then
6303
# Maybe just do a dry run.
6304
test -n "$run" && current_libdirs=" -n$current_libdirs"
6305
exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
6311
# libtool finish mode
6313
modename="$modename: finish"
6317
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
6320
libdirs="$libdirs $dir"
6323
for libdir in $libdirs; do
6324
if test -n "$finish_cmds"; then
6325
# Do each command in the finish commands.
6327
save_ifs="$IFS"; IFS='~'
6328
for cmd in $cmds; do
6332
$run eval "$cmd" || admincmds="$admincmds
6337
if test -n "$finish_eval"; then
6338
# Do the single finish_eval.
6339
eval cmds=\"$finish_eval\"
6340
$run eval "$cmds" || admincmds="$admincmds
6346
# Exit here if they wanted silent mode.
6347
test "$show" = : && exit $EXIT_SUCCESS
6349
$echo "X----------------------------------------------------------------------" | $Xsed
6350
$echo "Libraries have been installed in:"
6351
for libdir in $libdirs; do
6355
$echo "If you ever happen to want to link against installed libraries"
6356
$echo "in a given directory, LIBDIR, you must either use libtool, and"
6357
$echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
6358
$echo "flag during linking and do at least one of the following:"
6359
if test -n "$shlibpath_var"; then
6360
$echo " - add LIBDIR to the \`$shlibpath_var' environment variable"
6361
$echo " during execution"
6363
if test -n "$runpath_var"; then
6364
$echo " - add LIBDIR to the \`$runpath_var' environment variable"
6365
$echo " during linking"
6367
if test -n "$hardcode_libdir_flag_spec"; then
6369
eval flag=\"$hardcode_libdir_flag_spec\"
6371
$echo " - use the \`$flag' linker flag"
6373
if test -n "$admincmds"; then
6374
$echo " - have your system administrator run these commands:$admincmds"
6376
if test -f /etc/ld.so.conf; then
6377
$echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
6380
$echo "See any operating system documentation about shared libraries for"
6381
$echo "more information, such as the ld(1) and ld.so(8) manual pages."
6382
$echo "X----------------------------------------------------------------------" | $Xsed
6386
# libtool execute mode
6388
modename="$modename: execute"
6390
# The first argument is the command name.
6392
if test -z "$cmd"; then
6393
$echo "$modename: you must specify a COMMAND" 1>&2
6398
# Handle -dlopen flags immediately.
6399
for file in $execute_dlfiles; do
6400
if test ! -f "$file"; then
6401
$echo "$modename: \`$file' is not a file" 1>&2
6409
# Check to see that this really is a libtool archive.
6410
if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
6412
$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
6417
# Read the libtool library.
6421
# If there is no directory component, then add one.
6423
*/* | *\\*) . $file ;;
6427
# Skip this library if it cannot be dlopened.
6428
if test -z "$dlname"; then
6429
# Warn if it was a shared library.
6430
test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
6434
dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6435
test "X$dir" = "X$file" && dir=.
6437
if test -f "$dir/$objdir/$dlname"; then
6440
if test ! -f "$dir/$dlname"; then
6441
$echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
6448
# Just add the directory containing the .lo file.
6449
dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
6450
test "X$dir" = "X$file" && dir=.
6454
$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
6459
# Get the absolute pathname.
6460
absdir=`cd "$dir" && pwd`
6461
test -n "$absdir" && dir="$absdir"
6463
# Now add the directory to shlibpath_var.
6464
if eval "test -z \"\$$shlibpath_var\""; then
6465
eval "$shlibpath_var=\"\$dir\""
6467
eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
6471
# This variable tells wrapper scripts just to set shlibpath_var
6472
# rather than running their programs.
6473
libtool_execute_magic="$magic"
6475
# Check if any of the arguments is a wrapper script.
6482
# Do a test to see if this is really a libtool program.
6483
if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
6484
# If there is no directory component, then add one.
6486
*/* | *\\*) . $file ;;
6490
# Transform arg to wrapped name.
6491
file="$progdir/$program"
6495
# Quote arguments (to preserve shell metacharacters).
6496
file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
6497
args="$args \"$file\""
6500
if test -z "$run"; then
6501
if test -n "$shlibpath_var"; then
6502
# Export the shlibpath_var.
6503
eval "export $shlibpath_var"
6506
# Restore saved environment variables
6507
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
6509
eval "if test \"\${save_$lt_var+set}\" = set; then
6510
$lt_var=\$save_$lt_var; export $lt_var
6514
# Now prepare to actually exec the command.
6515
exec_cmd="\$cmd$args"
6517
# Display what would be done.
6518
if test -n "$shlibpath_var"; then
6519
eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
6520
$echo "export $shlibpath_var"
6527
# libtool clean and uninstall mode
6529
modename="$modename: $mode"