aboutsummaryrefslogtreecommitdiff
path: root/ltmain.sh
diff options
context:
space:
mode:
Diffstat (limited to 'ltmain.sh')
-rwxr-xr-xltmain.sh4016
1 files changed, 1384 insertions, 2632 deletions
diff --git a/ltmain.sh b/ltmain.sh
index c7d06c3c..d88da2c2 100755
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,9 +1,9 @@
1# Generated from ltmain.m4sh.
1 2
2# libtool (GNU libtool) 2.4.2 3# ltmain.sh (GNU libtool) 2.2.6b
3# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 4# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
4 5
5# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 6# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
6# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
7# This is free software; see the source for copying conditions. There is NO 7# This is free software; see the source for copying conditions. There is NO
8# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9 9
@@ -32,57 +32,50 @@
32# 32#
33# Provide generalized library-building support services. 33# Provide generalized library-building support services.
34# 34#
35# --config show all configuration variables 35# --config show all configuration variables
36# --debug enable verbose shell tracing 36# --debug enable verbose shell tracing
37# -n, --dry-run display commands without modifying any files 37# -n, --dry-run display commands without modifying any files
38# --features display basic configuration information and exit 38# --features display basic configuration information and exit
39# --mode=MODE use operation mode MODE 39# --mode=MODE use operation mode MODE
40# --preserve-dup-deps don't remove duplicate dependency libraries 40# --preserve-dup-deps don't remove duplicate dependency libraries
41# --quiet, --silent don't print informational messages 41# --quiet, --silent don't print informational messages
42# --no-quiet, --no-silent 42# --tag=TAG use configuration variables from tag TAG
43# print informational messages (default) 43# -v, --verbose print informational messages (default)
44# --no-warn don't display warning messages 44# --version print version information
45# --tag=TAG use configuration variables from tag TAG 45# -h, --help print short or long help message
46# -v, --verbose print more informational messages than default
47# --no-verbose don't print the extra informational messages
48# --version print version information
49# -h, --help, --help-all print short, long, or detailed help message
50# 46#
51# MODE must be one of the following: 47# MODE must be one of the following:
52# 48#
53# clean remove files from the build directory 49# clean remove files from the build directory
54# compile compile a source file into a libtool object 50# compile compile a source file into a libtool object
55# execute automatically set library path, then run a program 51# execute automatically set library path, then run a program
56# finish complete the installation of libtool libraries 52# finish complete the installation of libtool libraries
57# install install libraries or executables 53# install install libraries or executables
58# link create a library or an executable 54# link create a library or an executable
59# uninstall remove libraries from an installed directory 55# uninstall remove libraries from an installed directory
60# 56#
61# MODE-ARGS vary depending on the MODE. When passed as first option, 57# MODE-ARGS vary depending on the MODE.
62# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
63# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 58# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
64# 59#
65# When reporting a bug, please describe a test case to reproduce it and 60# When reporting a bug, please describe a test case to reproduce it and
66# include the following information: 61# include the following information:
67# 62#
68# host-triplet: $host 63# host-triplet: $host
69# shell: $SHELL 64# shell: $SHELL
70# compiler: $LTCC 65# compiler: $LTCC
71# compiler flags: $LTCFLAGS 66# compiler flags: $LTCFLAGS
72# linker: $LD (gnu? $with_gnu_ld) 67# linker: $LD (gnu? $with_gnu_ld)
73# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1 68# $progname: (GNU libtool) 2.2.6b Debian-2.2.6b-2
74# automake: $automake_version 69# automake: $automake_version
75# autoconf: $autoconf_version 70# autoconf: $autoconf_version
76# 71#
77# Report bugs to <bug-libtool@gnu.org>. 72# Report bugs to <bug-libtool@gnu.org>.
78# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
79# General help using GNU software: <http://www.gnu.org/gethelp/>.
80 73
81PROGRAM=libtool 74PROGRAM=ltmain.sh
82PACKAGE=libtool 75PACKAGE=libtool
83VERSION="2.4.2 Debian-2.4.2-1" 76VERSION="2.2.6b Debian-2.2.6b-2"
84TIMESTAMP="" 77TIMESTAMP=""
85package_revision=1.3337 78package_revision=1.3017
86 79
87# Be Bourne compatible 80# Be Bourne compatible
88if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 81if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -98,15 +91,10 @@ fi
98BIN_SH=xpg4; export BIN_SH # for Tru64 91BIN_SH=xpg4; export BIN_SH # for Tru64
99DUALCASE=1; export DUALCASE # for MKS sh 92DUALCASE=1; export DUALCASE # for MKS sh
100 93
101# A function that is used when there is no print builtin or printf.
102func_fallback_echo ()
103{
104 eval 'cat <<_LTECHO_EOF
105$1
106_LTECHO_EOF'
107}
108
109# NLS nuisances: We save the old values to restore during execute mode. 94# NLS nuisances: We save the old values to restore during execute mode.
95# Only set LANG and LC_ALL to C if already set.
96# These must not be set unconditionally because not all systems understand
97# e.g. LANG=C (notably SCO).
110lt_user_locale= 98lt_user_locale=
111lt_safe_locale= 99lt_safe_locale=
112for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 100for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
@@ -119,28 +107,24 @@ do
119 lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 107 lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
120 fi" 108 fi"
121done 109done
122LC_ALL=C
123LANGUAGE=C
124export LANGUAGE LC_ALL
125 110
126$lt_unset CDPATH 111$lt_unset CDPATH
127 112
128 113
129# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
130# is ksh but when the shell is invoked as "sh" and the current value of
131# the _XPG environment variable is not equal to 1 (one), the special
132# positional parameter $0, within a function call, is the name of the
133# function.
134progpath="$0"
135 114
136 115
137 116
138: ${CP="cp -f"} 117: ${CP="cp -f"}
139test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 118: ${ECHO="echo"}
119: ${EGREP="/bin/grep -E"}
120: ${FGREP="/bin/grep -F"}
121: ${GREP="/bin/grep"}
122: ${LN_S="ln -s"}
140: ${MAKE="make"} 123: ${MAKE="make"}
141: ${MKDIR="mkdir"} 124: ${MKDIR="mkdir"}
142: ${MV="mv -f"} 125: ${MV="mv -f"}
143: ${RM="rm -f"} 126: ${RM="rm -f"}
127: ${SED="/bin/sed"}
144: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 128: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
145: ${Xsed="$SED -e 1s/^X//"} 129: ${Xsed="$SED -e 1s/^X//"}
146 130
@@ -160,27 +144,6 @@ IFS=" $lt_nl"
160dirname="s,/[^/]*$,," 144dirname="s,/[^/]*$,,"
161basename="s,^.*/,," 145basename="s,^.*/,,"
162 146
163# func_dirname file append nondir_replacement
164# Compute the dirname of FILE. If nonempty, add APPEND to the result,
165# otherwise set result to NONDIR_REPLACEMENT.
166func_dirname ()
167{
168 func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
169 if test "X$func_dirname_result" = "X${1}"; then
170 func_dirname_result="${3}"
171 else
172 func_dirname_result="$func_dirname_result${2}"
173 fi
174} # func_dirname may be replaced by extended shell implementation
175
176
177# func_basename file
178func_basename ()
179{
180 func_basename_result=`$ECHO "${1}" | $SED "$basename"`
181} # func_basename may be replaced by extended shell implementation
182
183
184# func_dirname_and_basename file append nondir_replacement 147# func_dirname_and_basename file append nondir_replacement
185# perform func_basename and func_dirname in a single function 148# perform func_basename and func_dirname in a single function
186# call: 149# call:
@@ -195,183 +158,33 @@ func_basename ()
195# those functions but instead duplicate the functionality here. 158# those functions but instead duplicate the functionality here.
196func_dirname_and_basename () 159func_dirname_and_basename ()
197{ 160{
198 # Extract subdirectory from the argument. 161 # Extract subdirectory from the argument.
199 func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 162 func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
200 if test "X$func_dirname_result" = "X${1}"; then 163 if test "X$func_dirname_result" = "X${1}"; then
201 func_dirname_result="${3}" 164 func_dirname_result="${3}"
202 else 165 else
203 func_dirname_result="$func_dirname_result${2}" 166 func_dirname_result="$func_dirname_result${2}"
204 fi 167 fi
205 func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 168 func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
206} # func_dirname_and_basename may be replaced by extended shell implementation
207
208
209# func_stripname prefix suffix name
210# strip PREFIX and SUFFIX off of NAME.
211# PREFIX and SUFFIX must not contain globbing or regex special
212# characters, hashes, percent signs, but SUFFIX may contain a leading
213# dot (in which case that matches only a dot).
214# func_strip_suffix prefix name
215func_stripname ()
216{
217 case ${2} in
218 .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
219 *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
220 esac
221} # func_stripname may be replaced by extended shell implementation
222
223
224# These SED scripts presuppose an absolute path with a trailing slash.
225pathcar='s,^/\([^/]*\).*$,\1,'
226pathcdr='s,^/[^/]*,,'
227removedotparts=':dotsl
228 s@/\./@/@g
229 t dotsl
230 s,/\.$,/,'
231collapseslashes='s@/\{1,\}@/@g'
232finalslash='s,/*$,/,'
233
234# func_normal_abspath PATH
235# Remove doubled-up and trailing slashes, "." path components,
236# and cancel out any ".." path components in PATH after making
237# it an absolute path.
238# value returned in "$func_normal_abspath_result"
239func_normal_abspath ()
240{
241 # Start from root dir and reassemble the path.
242 func_normal_abspath_result=
243 func_normal_abspath_tpath=$1
244 func_normal_abspath_altnamespace=
245 case $func_normal_abspath_tpath in
246 "")
247 # Empty path, that just means $cwd.
248 func_stripname '' '/' "`pwd`"
249 func_normal_abspath_result=$func_stripname_result
250 return
251 ;;
252 # The next three entries are used to spot a run of precisely
253 # two leading slashes without using negated character classes;
254 # we take advantage of case's first-match behaviour.
255 ///*)
256 # Unusual form of absolute path, do nothing.
257 ;;
258 //*)
259 # Not necessarily an ordinary path; POSIX reserves leading '//'
260 # and for example Cygwin uses it to access remote file shares
261 # over CIFS/SMB, so we conserve a leading double slash if found.
262 func_normal_abspath_altnamespace=/
263 ;;
264 /*)
265 # Absolute path, do nothing.
266 ;;
267 *)
268 # Relative path, prepend $cwd.
269 func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
270 ;;
271 esac
272 # Cancel out all the simple stuff to save iterations. We also want
273 # the path to end with a slash for ease of parsing, so make sure
274 # there is one (and only one) here.
275 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
276 -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
277 while :; do
278 # Processed it all yet?
279 if test "$func_normal_abspath_tpath" = / ; then
280 # If we ascended to the root using ".." the result may be empty now.
281 if test -z "$func_normal_abspath_result" ; then
282 func_normal_abspath_result=/
283 fi
284 break
285 fi
286 func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
287 -e "$pathcar"`
288 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
289 -e "$pathcdr"`
290 # Figure out what to do with it
291 case $func_normal_abspath_tcomponent in
292 "")
293 # Trailing empty path component, ignore it.
294 ;;
295 ..)
296 # Parent dir; strip last assembled component from result.
297 func_dirname "$func_normal_abspath_result"
298 func_normal_abspath_result=$func_dirname_result
299 ;;
300 *)
301 # Actual path component, append it.
302 func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
303 ;;
304 esac
305 done
306 # Restore leading double-slash if one was found on entry.
307 func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
308} 169}
309 170
310# func_relative_path SRCDIR DSTDIR 171# Generated shell functions inserted here.
311# generates a relative path from SRCDIR to DSTDIR, with a trailing
312# slash if non-empty, suitable for immediately appending a filename
313# without needing to append a separator.
314# value returned in "$func_relative_path_result"
315func_relative_path ()
316{
317 func_relative_path_result=
318 func_normal_abspath "$1"
319 func_relative_path_tlibdir=$func_normal_abspath_result
320 func_normal_abspath "$2"
321 func_relative_path_tbindir=$func_normal_abspath_result
322
323 # Ascend the tree starting from libdir
324 while :; do
325 # check if we have found a prefix of bindir
326 case $func_relative_path_tbindir in
327 $func_relative_path_tlibdir)
328 # found an exact match
329 func_relative_path_tcancelled=
330 break
331 ;;
332 $func_relative_path_tlibdir*)
333 # found a matching prefix
334 func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
335 func_relative_path_tcancelled=$func_stripname_result
336 if test -z "$func_relative_path_result"; then
337 func_relative_path_result=.
338 fi
339 break
340 ;;
341 *)
342 func_dirname $func_relative_path_tlibdir
343 func_relative_path_tlibdir=${func_dirname_result}
344 if test "x$func_relative_path_tlibdir" = x ; then
345 # Have to descend all the way to the root!
346 func_relative_path_result=../$func_relative_path_result
347 func_relative_path_tcancelled=$func_relative_path_tbindir
348 break
349 fi
350 func_relative_path_result=../$func_relative_path_result
351 ;;
352 esac
353 done
354
355 # Now calculate path; take care to avoid doubling-up slashes.
356 func_stripname '' '/' "$func_relative_path_result"
357 func_relative_path_result=$func_stripname_result
358 func_stripname '/' '/' "$func_relative_path_tcancelled"
359 if test "x$func_stripname_result" != x ; then
360 func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
361 fi
362 172
363 # Normalisation. If bindir is libdir, return empty string, 173# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
364 # else relative path ending with a slash; either way, target 174# is ksh but when the shell is invoked as "sh" and the current value of
365 # file name can be directly appended. 175# the _XPG environment variable is not equal to 1 (one), the special
366 if test ! -z "$func_relative_path_result"; then 176# positional parameter $0, within a function call, is the name of the
367 func_stripname './' '' "$func_relative_path_result/" 177# function.
368 func_relative_path_result=$func_stripname_result 178progpath="$0"
369 fi
370}
371 179
372# The name of this program: 180# The name of this program:
181# In the unlikely event $progname began with a '-', it would play havoc with
182# func_echo (imagine progname=-n), so we prepend ./ in that case:
373func_dirname_and_basename "$progpath" 183func_dirname_and_basename "$progpath"
374progname=$func_basename_result 184progname=$func_basename_result
185case $progname in
186 -*) progname=./$progname ;;
187esac
375 188
376# Make sure we have an absolute path for reexecution: 189# Make sure we have an absolute path for reexecution:
377case $progpath in 190case $progpath in
@@ -383,7 +196,7 @@ case $progpath in
383 ;; 196 ;;
384 *) 197 *)
385 save_IFS="$IFS" 198 save_IFS="$IFS"
386 IFS=${PATH_SEPARATOR-:} 199 IFS=:
387 for progdir in $PATH; do 200 for progdir in $PATH; do
388 IFS="$save_IFS" 201 IFS="$save_IFS"
389 test -x "$progdir/$progname" && break 202 test -x "$progdir/$progname" && break
@@ -402,15 +215,6 @@ sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
402# Same as above, but do not quote variable references. 215# Same as above, but do not quote variable references.
403double_quote_subst='s/\(["`\\]\)/\\\1/g' 216double_quote_subst='s/\(["`\\]\)/\\\1/g'
404 217
405# Sed substitution that turns a string into a regex matching for the
406# string literally.
407sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
408
409# Sed substitution that converts a w32 file name or path
410# which contains forward slashes, into one that contains
411# (escaped) backslashes. A very naive implementation.
412lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
413
414# Re-`\' parameter expansions in output of double_quote_subst that were 218# Re-`\' parameter expansions in output of double_quote_subst that were
415# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 219# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
416# in input to double_quote_subst, that '$' was protected from expansion. 220# in input to double_quote_subst, that '$' was protected from expansion.
@@ -439,7 +243,7 @@ opt_warning=:
439# name if it has been set yet. 243# name if it has been set yet.
440func_echo () 244func_echo ()
441{ 245{
442 $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 246 $ECHO "$progname${mode+: }$mode: $*"
443} 247}
444 248
445# func_verbose arg... 249# func_verbose arg...
@@ -454,25 +258,18 @@ func_verbose ()
454 : 258 :
455} 259}
456 260
457# func_echo_all arg...
458# Invoke $ECHO with all args, space-separated.
459func_echo_all ()
460{
461 $ECHO "$*"
462}
463
464# func_error arg... 261# func_error arg...
465# Echo program name prefixed message to standard error. 262# Echo program name prefixed message to standard error.
466func_error () 263func_error ()
467{ 264{
468 $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 265 $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
469} 266}
470 267
471# func_warning arg... 268# func_warning arg...
472# Echo program name prefixed warning message to standard error. 269# Echo program name prefixed warning message to standard error.
473func_warning () 270func_warning ()
474{ 271{
475 $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 272 $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
476 273
477 # bash bug again: 274 # bash bug again:
478 : 275 :
@@ -529,9 +326,9 @@ func_mkdir_p ()
529 case $my_directory_path in */*) ;; *) break ;; esac 326 case $my_directory_path in */*) ;; *) break ;; esac
530 327
531 # ...otherwise throw away the child directory and loop 328 # ...otherwise throw away the child directory and loop
532 my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 329 my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
533 done 330 done
534 my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 331 my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
535 332
536 save_mkdir_p_IFS="$IFS"; IFS=':' 333 save_mkdir_p_IFS="$IFS"; IFS=':'
537 for my_dir in $my_dir_list; do 334 for my_dir in $my_dir_list; do
@@ -581,7 +378,7 @@ func_mktempdir ()
581 func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 378 func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
582 fi 379 fi
583 380
584 $ECHO "$my_tmpdir" 381 $ECHO "X$my_tmpdir" | $Xsed
585} 382}
586 383
587 384
@@ -595,7 +392,7 @@ func_quote_for_eval ()
595{ 392{
596 case $1 in 393 case $1 in
597 *[\\\`\"\$]*) 394 *[\\\`\"\$]*)
598 func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 395 func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
599 *) 396 *)
600 func_quote_for_eval_unquoted_result="$1" ;; 397 func_quote_for_eval_unquoted_result="$1" ;;
601 esac 398 esac
@@ -622,7 +419,7 @@ func_quote_for_expand ()
622{ 419{
623 case $1 in 420 case $1 in
624 *[\\\`\"]*) 421 *[\\\`\"]*)
625 my_arg=`$ECHO "$1" | $SED \ 422 my_arg=`$ECHO "X$1" | $Xsed \
626 -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 423 -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
627 *) 424 *)
628 my_arg="$1" ;; 425 my_arg="$1" ;;
@@ -691,39 +488,15 @@ func_show_eval_locale ()
691 fi 488 fi
692} 489}
693 490
694# func_tr_sh 491
695# Turn $1 into a string suitable for a shell variable name. 492
696# Result is stored in $func_tr_sh_result. All characters
697# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
698# if $1 begins with a digit, a '_' is prepended as well.
699func_tr_sh ()
700{
701 case $1 in
702 [0-9]* | *[!a-zA-Z0-9_]*)
703 func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
704 ;;
705 * )
706 func_tr_sh_result=$1
707 ;;
708 esac
709}
710 493
711 494
712# func_version 495# func_version
713# Echo version message to standard output and exit. 496# Echo version message to standard output and exit.
714func_version () 497func_version ()
715{ 498{
716 $opt_debug 499 $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
717
718 $SED -n '/(C)/!b go
719 :more
720 /\./!{
721 N
722 s/\n# / /
723 b more
724 }
725 :go
726 /^# '$PROGRAM' (GNU /,/# warranty; / {
727 s/^# // 500 s/^# //
728 s/^# *$// 501 s/^# *$//
729 s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 502 s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
@@ -736,28 +509,22 @@ func_version ()
736# Echo short help message to standard output and exit. 509# Echo short help message to standard output and exit.
737func_usage () 510func_usage ()
738{ 511{
739 $opt_debug 512 $SED -n '/^# Usage:/,/# -h/ {
740
741 $SED -n '/^# Usage:/,/^# *.*--help/ {
742 s/^# // 513 s/^# //
743 s/^# *$// 514 s/^# *$//
744 s/\$progname/'$progname'/ 515 s/\$progname/'$progname'/
745 p 516 p
746 }' < "$progpath" 517 }' < "$progpath"
747 echo 518 $ECHO
748 $ECHO "run \`$progname --help | more' for full usage" 519 $ECHO "run \`$progname --help | more' for full usage"
749 exit $? 520 exit $?
750} 521}
751 522
752# func_help [NOEXIT] 523# func_help
753# Echo long help message to standard output and exit, 524# Echo long help message to standard output and exit.
754# unless 'noexit' is passed as argument.
755func_help () 525func_help ()
756{ 526{
757 $opt_debug
758
759 $SED -n '/^# Usage:/,/# Report bugs to/ { 527 $SED -n '/^# Usage:/,/# Report bugs to/ {
760 :print
761 s/^# // 528 s/^# //
762 s/^# *$// 529 s/^# *$//
763 s*\$progname*'$progname'* 530 s*\$progname*'$progname'*
@@ -767,18 +534,11 @@ func_help ()
767 s*\$LTCFLAGS*'"$LTCFLAGS"'* 534 s*\$LTCFLAGS*'"$LTCFLAGS"'*
768 s*\$LD*'"$LD"'* 535 s*\$LD*'"$LD"'*
769 s/\$with_gnu_ld/'"$with_gnu_ld"'/ 536 s/\$with_gnu_ld/'"$with_gnu_ld"'/
770 s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 537 s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
771 s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 538 s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
772 p 539 p
773 d 540 }' < "$progpath"
774 } 541 exit $?
775 /^# .* home page:/b print
776 /^# General help using/b print
777 ' < "$progpath"
778 ret=$?
779 if test -z "$1"; then
780 exit $ret
781 fi
782} 542}
783 543
784# func_missing_arg argname 544# func_missing_arg argname
@@ -786,106 +546,63 @@ func_help ()
786# exit_cmd. 546# exit_cmd.
787func_missing_arg () 547func_missing_arg ()
788{ 548{
789 $opt_debug 549 func_error "missing argument for $1"
790
791 func_error "missing argument for $1."
792 exit_cmd=exit 550 exit_cmd=exit
793} 551}
794 552
553exit_cmd=:
795 554
796# func_split_short_opt shortopt
797# Set func_split_short_opt_name and func_split_short_opt_arg shell
798# variables after splitting SHORTOPT after the 2nd character.
799func_split_short_opt ()
800{
801 my_sed_short_opt='1s/^\(..\).*$/\1/;q'
802 my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
803
804 func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
805 func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
806} # func_split_short_opt may be replaced by extended shell implementation
807
808
809# func_split_long_opt longopt
810# Set func_split_long_opt_name and func_split_long_opt_arg shell
811# variables after splitting LONGOPT at the `=' sign.
812func_split_long_opt ()
813{
814 my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
815 my_sed_long_arg='1s/^--[^=]*=//'
816
817 func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
818 func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
819} # func_split_long_opt may be replaced by extended shell implementation
820 555
821exit_cmd=:
822 556
823 557
824 558
559# Check that we have a working $ECHO.
560if test "X$1" = X--no-reexec; then
561 # Discard the --no-reexec flag, and continue.
562 shift
563elif test "X$1" = X--fallback-echo; then
564 # Avoid inline document here, it may be left over
565 :
566elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
567 # Yippee, $ECHO works!
568 :
569else
570 # Restart under the correct shell, and then maybe $ECHO will work.
571 exec $SHELL "$progpath" --no-reexec ${1+"$@"}
572fi
825 573
574if test "X$1" = X--fallback-echo; then
575 # used as fallback echo
576 shift
577 cat <<EOF
578$*
579EOF
580 exit $EXIT_SUCCESS
581fi
826 582
827magic="%%%MAGIC variable%%%" 583magic="%%%MAGIC variable%%%"
828magic_exe="%%%MAGIC EXE variable%%%" 584magic_exe="%%%MAGIC EXE variable%%%"
829 585
830# Global variables. 586# Global variables.
587# $mode is unset
831nonopt= 588nonopt=
589execute_dlfiles=
832preserve_args= 590preserve_args=
833lo2o="s/\\.lo\$/.${objext}/" 591lo2o="s/\\.lo\$/.${objext}/"
834o2lo="s/\\.${objext}\$/.lo/" 592o2lo="s/\\.${objext}\$/.lo/"
835extracted_archives= 593extracted_archives=
836extracted_serial=0 594extracted_serial=0
837 595
596opt_dry_run=false
597opt_duplicate_deps=false
598opt_silent=false
599opt_debug=:
600
838# If this variable is set in any of the actions, the command in it 601# If this variable is set in any of the actions, the command in it
839# will be execed at the end. This prevents here-documents from being 602# will be execed at the end. This prevents here-documents from being
840# left over by shells. 603# left over by shells.
841exec_cmd= 604exec_cmd=
842 605
843# func_append var value
844# Append VALUE to the end of shell variable VAR.
845func_append ()
846{
847 eval "${1}=\$${1}\${2}"
848} # func_append may be replaced by extended shell implementation
849
850# func_append_quoted var value
851# Quote VALUE and append to the end of shell variable VAR, separated
852# by a space.
853func_append_quoted ()
854{
855 func_quote_for_eval "${2}"
856 eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
857} # func_append_quoted may be replaced by extended shell implementation
858
859
860# func_arith arithmetic-term...
861func_arith ()
862{
863 func_arith_result=`expr "${@}"`
864} # func_arith may be replaced by extended shell implementation
865
866
867# func_len string
868# STRING may not start with a hyphen.
869func_len ()
870{
871 func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
872} # func_len may be replaced by extended shell implementation
873
874
875# func_lo2o object
876func_lo2o ()
877{
878 func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
879} # func_lo2o may be replaced by extended shell implementation
880
881
882# func_xform libobj-or-source
883func_xform ()
884{
885 func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
886} # func_xform may be replaced by extended shell implementation
887
888
889# func_fatal_configuration arg... 606# func_fatal_configuration arg...
890# Echo program name prefixed message to standard error, followed by 607# Echo program name prefixed message to standard error, followed by
891# a configuration failure hint, and exit. 608# a configuration failure hint, and exit.
@@ -919,16 +636,16 @@ func_config ()
919# Display the features supported by this script. 636# Display the features supported by this script.
920func_features () 637func_features ()
921{ 638{
922 echo "host: $host" 639 $ECHO "host: $host"
923 if test "$build_libtool_libs" = yes; then 640 if test "$build_libtool_libs" = yes; then
924 echo "enable shared libraries" 641 $ECHO "enable shared libraries"
925 else 642 else
926 echo "disable shared libraries" 643 $ECHO "disable shared libraries"
927 fi 644 fi
928 if test "$build_old_libs" = yes; then 645 if test "$build_old_libs" = yes; then
929 echo "enable static libraries" 646 $ECHO "enable static libraries"
930 else 647 else
931 echo "disable static libraries" 648 $ECHO "disable static libraries"
932 fi 649 fi
933 650
934 exit $? 651 exit $?
@@ -975,209 +692,117 @@ func_enable_tag ()
975 esac 692 esac
976} 693}
977 694
978# func_check_version_match 695# Parse options once, thoroughly. This comes as soon as possible in
979# Ensure that we are using m4 macros, and libtool script from the same 696# the script to make things like `libtool --version' happen quickly.
980# release of libtool.
981func_check_version_match ()
982{ 697{
983 if test "$package_revision" != "$macro_revision"; then
984 if test "$VERSION" != "$macro_version"; then
985 if test -z "$macro_version"; then
986 cat >&2 <<_LT_EOF
987$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
988$progname: definition of this LT_INIT comes from an older release.
989$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
990$progname: and run autoconf again.
991_LT_EOF
992 else
993 cat >&2 <<_LT_EOF
994$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
995$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
996$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
997$progname: and run autoconf again.
998_LT_EOF
999 fi
1000 else
1001 cat >&2 <<_LT_EOF
1002$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
1003$progname: but the definition of this LT_INIT comes from revision $macro_revision.
1004$progname: You should recreate aclocal.m4 with macros from revision $package_revision
1005$progname: of $PACKAGE $VERSION and run autoconf again.
1006_LT_EOF
1007 fi
1008
1009 exit $EXIT_MISMATCH
1010 fi
1011}
1012
1013
1014# Shorthand for --mode=foo, only valid as the first argument
1015case $1 in
1016clean|clea|cle|cl)
1017 shift; set dummy --mode clean ${1+"$@"}; shift
1018 ;;
1019compile|compil|compi|comp|com|co|c)
1020 shift; set dummy --mode compile ${1+"$@"}; shift
1021 ;;
1022execute|execut|execu|exec|exe|ex|e)
1023 shift; set dummy --mode execute ${1+"$@"}; shift
1024 ;;
1025finish|finis|fini|fin|fi|f)
1026 shift; set dummy --mode finish ${1+"$@"}; shift
1027 ;;
1028install|instal|insta|inst|ins|in|i)
1029 shift; set dummy --mode install ${1+"$@"}; shift
1030 ;;
1031link|lin|li|l)
1032 shift; set dummy --mode link ${1+"$@"}; shift
1033 ;;
1034uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
1035 shift; set dummy --mode uninstall ${1+"$@"}; shift
1036 ;;
1037esac
1038
1039
1040
1041# Option defaults:
1042opt_debug=:
1043opt_dry_run=false
1044opt_config=false
1045opt_preserve_dup_deps=false
1046opt_features=false
1047opt_finish=false
1048opt_help=false
1049opt_help_all=false
1050opt_silent=:
1051opt_warning=:
1052opt_verbose=:
1053opt_silent=false
1054opt_verbose=false
1055 698
699 # Shorthand for --mode=foo, only valid as the first argument
700 case $1 in
701 clean|clea|cle|cl)
702 shift; set dummy --mode clean ${1+"$@"}; shift
703 ;;
704 compile|compil|compi|comp|com|co|c)
705 shift; set dummy --mode compile ${1+"$@"}; shift
706 ;;
707 execute|execut|execu|exec|exe|ex|e)
708 shift; set dummy --mode execute ${1+"$@"}; shift
709 ;;
710 finish|finis|fini|fin|fi|f)
711 shift; set dummy --mode finish ${1+"$@"}; shift
712 ;;
713 install|instal|insta|inst|ins|in|i)
714 shift; set dummy --mode install ${1+"$@"}; shift
715 ;;
716 link|lin|li|l)
717 shift; set dummy --mode link ${1+"$@"}; shift
718 ;;
719 uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
720 shift; set dummy --mode uninstall ${1+"$@"}; shift
721 ;;
722 esac
1056 723
1057# Parse options once, thoroughly. This comes as soon as possible in the 724 # Parse non-mode specific arguments:
1058# script to make things like `--version' happen as quickly as we can. 725 while test "$#" -gt 0; do
1059{
1060 # this just eases exit handling
1061 while test $# -gt 0; do
1062 opt="$1" 726 opt="$1"
1063 shift 727 shift
728
1064 case $opt in 729 case $opt in
1065 --debug|-x) opt_debug='set -x' 730 --config) func_config ;;
731
732 --debug) preserve_args="$preserve_args $opt"
1066 func_echo "enabling shell trace mode" 733 func_echo "enabling shell trace mode"
734 opt_debug='set -x'
1067 $opt_debug 735 $opt_debug
1068 ;; 736 ;;
1069 --dry-run|--dryrun|-n) 737
1070 opt_dry_run=: 738 -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
1071 ;; 739 execute_dlfiles="$execute_dlfiles $1"
1072 --config)
1073 opt_config=:
1074func_config
1075 ;;
1076 --dlopen|-dlopen)
1077 optarg="$1"
1078 opt_dlopen="${opt_dlopen+$opt_dlopen
1079}$optarg"
1080 shift 740 shift
1081 ;; 741 ;;
1082 --preserve-dup-deps) 742
1083 opt_preserve_dup_deps=: 743 --dry-run | -n) opt_dry_run=: ;;
1084 ;; 744 --features) func_features ;;
1085 --features) 745 --finish) mode="finish" ;;
1086 opt_features=: 746
1087func_features 747 --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
1088 ;; 748 case $1 in
1089 --finish) 749 # Valid mode arguments:
1090 opt_finish=: 750 clean) ;;
1091set dummy --mode finish ${1+"$@"}; shift 751 compile) ;;
1092 ;; 752 execute) ;;
1093 --help) 753 finish) ;;
1094 opt_help=: 754 install) ;;
1095 ;; 755 link) ;;
1096 --help-all) 756 relink) ;;
1097 opt_help_all=: 757 uninstall) ;;
1098opt_help=': help-all' 758
1099 ;; 759 # Catch anything else as an error
1100 --mode) 760 *) func_error "invalid argument for $opt"
1101 test $# = 0 && func_missing_arg $opt && break 761 exit_cmd=exit
1102 optarg="$1" 762 break
1103 opt_mode="$optarg" 763 ;;
1104case $optarg in 764 esac
1105 # Valid mode arguments: 765
1106 clean|compile|execute|finish|install|link|relink|uninstall) ;; 766 mode="$1"
1107
1108 # Catch anything else as an error
1109 *) func_error "invalid argument for $opt"
1110 exit_cmd=exit
1111 break
1112 ;;
1113esac
1114 shift 767 shift
1115 ;; 768 ;;
1116 --no-silent|--no-quiet) 769
1117 opt_silent=false 770 --preserve-dup-deps)
1118func_append preserve_args " $opt" 771 opt_duplicate_deps=: ;;
1119 ;; 772
1120 --no-warning|--no-warn) 773 --quiet|--silent) preserve_args="$preserve_args $opt"
1121 opt_warning=false
1122func_append preserve_args " $opt"
1123 ;;
1124 --no-verbose)
1125 opt_verbose=false
1126func_append preserve_args " $opt"
1127 ;;
1128 --silent|--quiet)
1129 opt_silent=: 774 opt_silent=:
1130func_append preserve_args " $opt"
1131 opt_verbose=false
1132 ;; 775 ;;
1133 --verbose|-v) 776
1134 opt_verbose=: 777 --verbose| -v) preserve_args="$preserve_args $opt"
1135func_append preserve_args " $opt" 778 opt_silent=false
1136opt_silent=false
1137 ;; 779 ;;
1138 --tag) 780
1139 test $# = 0 && func_missing_arg $opt && break 781 --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
1140 optarg="$1" 782 preserve_args="$preserve_args $opt $1"
1141 opt_tag="$optarg" 783 func_enable_tag "$1" # tagname is set here
1142func_append preserve_args " $opt $optarg"
1143func_enable_tag "$optarg"
1144 shift 784 shift
1145 ;; 785 ;;
1146 786
1147 -\?|-h) func_usage ;;
1148 --help) func_help ;;
1149 --version) func_version ;;
1150
1151 # Separate optargs to long options: 787 # Separate optargs to long options:
1152 --*=*) 788 -dlopen=*|--mode=*|--tag=*)
1153 func_split_long_opt "$opt" 789 func_opt_split "$opt"
1154 set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 790 set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
1155 shift 791 shift
1156 ;; 792 ;;
1157 793
1158 # Separate non-argument short options: 794 -\?|-h) func_usage ;;
1159 -\?*|-h*|-n*|-v*) 795 --help) opt_help=: ;;
1160 func_split_short_opt "$opt" 796 --version) func_version ;;
1161 set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
1162 shift
1163 ;;
1164 797
1165 --) break ;; 798 -*) func_fatal_help "unrecognized option \`$opt'" ;;
1166 -*) func_fatal_help "unrecognized option \`$opt'" ;; 799
1167 *) set dummy "$opt" ${1+"$@"}; shift; break ;; 800 *) nonopt="$opt"
801 break
802 ;;
1168 esac 803 esac
1169 done 804 done
1170 805
1171 # Validate options:
1172
1173 # save first non-option argument
1174 if test "$#" -gt 0; then
1175 nonopt="$opt"
1176 shift
1177 fi
1178
1179 # preserve --debug
1180 test "$opt_debug" = : || func_append preserve_args " --debug"
1181 806
1182 case $host in 807 case $host in
1183 *cygwin* | *mingw* | *pw32* | *cegcc*) 808 *cygwin* | *mingw* | *pw32* | *cegcc*)
@@ -1185,44 +810,82 @@ func_enable_tag "$optarg"
1185 opt_duplicate_compiler_generated_deps=: 810 opt_duplicate_compiler_generated_deps=:
1186 ;; 811 ;;
1187 *) 812 *)
1188 opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 813 opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
1189 ;; 814 ;;
1190 esac 815 esac
1191 816
1192 $opt_help || { 817 # Having warned about all mis-specified options, bail out if
1193 # Sanity checks first: 818 # anything was wrong.
1194 func_check_version_match 819 $exit_cmd $EXIT_FAILURE
820}
1195 821
1196 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 822# func_check_version_match
1197 func_fatal_configuration "not configured to build any kind of library" 823# Ensure that we are using m4 macros, and libtool script from the same
824# release of libtool.
825func_check_version_match ()
826{
827 if test "$package_revision" != "$macro_revision"; then
828 if test "$VERSION" != "$macro_version"; then
829 if test -z "$macro_version"; then
830 cat >&2 <<_LT_EOF
831$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
832$progname: definition of this LT_INIT comes from an older release.
833$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
834$progname: and run autoconf again.
835_LT_EOF
836 else
837 cat >&2 <<_LT_EOF
838$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
839$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
840$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
841$progname: and run autoconf again.
842_LT_EOF
843 fi
844 else
845 cat >&2 <<_LT_EOF
846$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
847$progname: but the definition of this LT_INIT comes from revision $macro_revision.
848$progname: You should recreate aclocal.m4 with macros from revision $package_revision
849$progname: of $PACKAGE $VERSION and run autoconf again.
850_LT_EOF
1198 fi 851 fi
1199 852
1200 # Darwin sucks 853 exit $EXIT_MISMATCH
1201 eval std_shrext=\"$shrext_cmds\" 854 fi
855}
1202 856
1203 # Only execute mode is allowed to have -dlopen flags.
1204 if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
1205 func_error "unrecognized option \`-dlopen'"
1206 $ECHO "$help" 1>&2
1207 exit $EXIT_FAILURE
1208 fi
1209 857
1210 # Change the help message to a mode-specific one. 858## ----------- ##
1211 generic_help="$help" 859## Main. ##
1212 help="Try \`$progname --help --mode=$opt_mode' for more information." 860## ----------- ##
1213 }
1214 861
862$opt_help || {
863 # Sanity checks first:
864 func_check_version_match
1215 865
1216 # Bail if the options were screwed 866 if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
1217 $exit_cmd $EXIT_FAILURE 867 func_fatal_configuration "not configured to build any kind of library"
1218} 868 fi
1219 869
870 test -z "$mode" && func_fatal_error "error: you must specify a MODE."
1220 871
1221 872
873 # Darwin sucks
874 eval std_shrext=\"$shrext_cmds\"
875
876
877 # Only execute mode is allowed to have -dlopen flags.
878 if test -n "$execute_dlfiles" && test "$mode" != execute; then
879 func_error "unrecognized option \`-dlopen'"
880 $ECHO "$help" 1>&2
881 exit $EXIT_FAILURE
882 fi
883
884 # Change the help message to a mode-specific one.
885 generic_help="$help"
886 help="Try \`$progname --help --mode=$mode' for more information."
887}
1222 888
1223## ----------- ##
1224## Main. ##
1225## ----------- ##
1226 889
1227# func_lalib_p file 890# func_lalib_p file
1228# True iff FILE is a libtool `.la' library or `.lo' object file. 891# True iff FILE is a libtool `.la' library or `.lo' object file.
@@ -1287,9 +950,12 @@ func_ltwrapper_executable_p ()
1287# temporary ltwrapper_script. 950# temporary ltwrapper_script.
1288func_ltwrapper_scriptname () 951func_ltwrapper_scriptname ()
1289{ 952{
1290 func_dirname_and_basename "$1" "" "." 953 func_ltwrapper_scriptname_result=""
1291 func_stripname '' '.exe' "$func_basename_result" 954 if func_ltwrapper_executable_p "$1"; then
1292 func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 955 func_dirname_and_basename "$1" "" "."
956 func_stripname '' '.exe' "$func_basename_result"
957 func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
958 fi
1293} 959}
1294 960
1295# func_ltwrapper_p file 961# func_ltwrapper_p file
@@ -1335,37 +1001,6 @@ func_source ()
1335} 1001}
1336 1002
1337 1003
1338# func_resolve_sysroot PATH
1339# Replace a leading = in PATH with a sysroot. Store the result into
1340# func_resolve_sysroot_result
1341func_resolve_sysroot ()
1342{
1343 func_resolve_sysroot_result=$1
1344 case $func_resolve_sysroot_result in
1345 =*)
1346 func_stripname '=' '' "$func_resolve_sysroot_result"
1347 func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
1348 ;;
1349 esac
1350}
1351
1352# func_replace_sysroot PATH
1353# If PATH begins with the sysroot, replace it with = and
1354# store the result into func_replace_sysroot_result.
1355func_replace_sysroot ()
1356{
1357 case "$lt_sysroot:$1" in
1358 ?*:"$lt_sysroot"*)
1359 func_stripname "$lt_sysroot" '' "$1"
1360 func_replace_sysroot_result="=$func_stripname_result"
1361 ;;
1362 *)
1363 # Including no sysroot.
1364 func_replace_sysroot_result=$1
1365 ;;
1366 esac
1367}
1368
1369# func_infer_tag arg 1004# func_infer_tag arg
1370# Infer tagged configuration to use if any are available and 1005# Infer tagged configuration to use if any are available and
1371# if one wasn't chosen via the "--tag" command line option. 1006# if one wasn't chosen via the "--tag" command line option.
@@ -1378,15 +1013,13 @@ func_infer_tag ()
1378 if test -n "$available_tags" && test -z "$tagname"; then 1013 if test -n "$available_tags" && test -z "$tagname"; then
1379 CC_quoted= 1014 CC_quoted=
1380 for arg in $CC; do 1015 for arg in $CC; do
1381 func_append_quoted CC_quoted "$arg" 1016 func_quote_for_eval "$arg"
1017 CC_quoted="$CC_quoted $func_quote_for_eval_result"
1382 done 1018 done
1383 CC_expanded=`func_echo_all $CC`
1384 CC_quoted_expanded=`func_echo_all $CC_quoted`
1385 case $@ in 1019 case $@ in
1386 # Blanks in the command may have been stripped by the calling shell, 1020 # Blanks in the command may have been stripped by the calling shell,
1387 # but not from the CC environment variable when configure was run. 1021 # but not from the CC environment variable when configure was run.
1388 " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1022 " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
1389 " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
1390 # Blanks at the start of $base_compile will cause this to fail 1023 # Blanks at the start of $base_compile will cause this to fail
1391 # if we don't check for them as well. 1024 # if we don't check for them as well.
1392 *) 1025 *)
@@ -1397,13 +1030,11 @@ func_infer_tag ()
1397 CC_quoted= 1030 CC_quoted=
1398 for arg in $CC; do 1031 for arg in $CC; do
1399 # Double-quote args containing other shell metacharacters. 1032 # Double-quote args containing other shell metacharacters.
1400 func_append_quoted CC_quoted "$arg" 1033 func_quote_for_eval "$arg"
1034 CC_quoted="$CC_quoted $func_quote_for_eval_result"
1401 done 1035 done
1402 CC_expanded=`func_echo_all $CC`
1403 CC_quoted_expanded=`func_echo_all $CC_quoted`
1404 case "$@ " in 1036 case "$@ " in
1405 " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1037 " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
1406 " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
1407 # The compiler in the base compile command matches 1038 # The compiler in the base compile command matches
1408 # the one in the tagged configuration. 1039 # the one in the tagged configuration.
1409 # Assume this is the tagged configuration we want. 1040 # Assume this is the tagged configuration we want.
@@ -1466,486 +1097,6 @@ EOF
1466 } 1097 }
1467} 1098}
1468 1099
1469
1470##################################################
1471# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
1472##################################################
1473
1474# func_convert_core_file_wine_to_w32 ARG
1475# Helper function used by file name conversion functions when $build is *nix,
1476# and $host is mingw, cygwin, or some other w32 environment. Relies on a
1477# correctly configured wine environment available, with the winepath program
1478# in $build's $PATH.
1479#
1480# ARG is the $build file name to be converted to w32 format.
1481# Result is available in $func_convert_core_file_wine_to_w32_result, and will
1482# be empty on error (or when ARG is empty)
1483func_convert_core_file_wine_to_w32 ()
1484{
1485 $opt_debug
1486 func_convert_core_file_wine_to_w32_result="$1"
1487 if test -n "$1"; then
1488 # Unfortunately, winepath does not exit with a non-zero error code, so we
1489 # are forced to check the contents of stdout. On the other hand, if the
1490 # command is not found, the shell will set an exit code of 127 and print
1491 # *an error message* to stdout. So we must check for both error code of
1492 # zero AND non-empty stdout, which explains the odd construction:
1493 func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
1494 if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
1495 func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
1496 $SED -e "$lt_sed_naive_backslashify"`
1497 else
1498 func_convert_core_file_wine_to_w32_result=
1499 fi
1500 fi
1501}
1502# end: func_convert_core_file_wine_to_w32
1503
1504
1505# func_convert_core_path_wine_to_w32 ARG
1506# Helper function used by path conversion functions when $build is *nix, and
1507# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
1508# configured wine environment available, with the winepath program in $build's
1509# $PATH. Assumes ARG has no leading or trailing path separator characters.
1510#
1511# ARG is path to be converted from $build format to win32.
1512# Result is available in $func_convert_core_path_wine_to_w32_result.
1513# Unconvertible file (directory) names in ARG are skipped; if no directory names
1514# are convertible, then the result may be empty.
1515func_convert_core_path_wine_to_w32 ()
1516{
1517 $opt_debug
1518 # unfortunately, winepath doesn't convert paths, only file names
1519 func_convert_core_path_wine_to_w32_result=""
1520 if test -n "$1"; then
1521 oldIFS=$IFS
1522 IFS=:
1523 for func_convert_core_path_wine_to_w32_f in $1; do
1524 IFS=$oldIFS
1525 func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
1526 if test -n "$func_convert_core_file_wine_to_w32_result" ; then
1527 if test -z "$func_convert_core_path_wine_to_w32_result"; then
1528 func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
1529 else
1530 func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
1531 fi
1532 fi
1533 done
1534 IFS=$oldIFS
1535 fi
1536}
1537# end: func_convert_core_path_wine_to_w32
1538
1539
1540# func_cygpath ARGS...
1541# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
1542# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
1543# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
1544# (2), returns the Cygwin file name or path in func_cygpath_result (input
1545# file name or path is assumed to be in w32 format, as previously converted
1546# from $build's *nix or MSYS format). In case (3), returns the w32 file name
1547# or path in func_cygpath_result (input file name or path is assumed to be in
1548# Cygwin format). Returns an empty string on error.
1549#
1550# ARGS are passed to cygpath, with the last one being the file name or path to
1551# be converted.
1552#
1553# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
1554# environment variable; do not put it in $PATH.
1555func_cygpath ()
1556{
1557 $opt_debug
1558 if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
1559 func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
1560 if test "$?" -ne 0; then
1561 # on failure, ensure result is empty
1562 func_cygpath_result=
1563 fi
1564 else
1565 func_cygpath_result=
1566 func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
1567 fi
1568}
1569#end: func_cygpath
1570
1571
1572# func_convert_core_msys_to_w32 ARG
1573# Convert file name or path ARG from MSYS format to w32 format. Return
1574# result in func_convert_core_msys_to_w32_result.
1575func_convert_core_msys_to_w32 ()
1576{
1577 $opt_debug
1578 # awkward: cmd appends spaces to result
1579 func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
1580 $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
1581}
1582#end: func_convert_core_msys_to_w32
1583
1584
1585# func_convert_file_check ARG1 ARG2
1586# Verify that ARG1 (a file name in $build format) was converted to $host
1587# format in ARG2. Otherwise, emit an error message, but continue (resetting
1588# func_to_host_file_result to ARG1).
1589func_convert_file_check ()
1590{
1591 $opt_debug
1592 if test -z "$2" && test -n "$1" ; then
1593 func_error "Could not determine host file name corresponding to"
1594 func_error " \`$1'"
1595 func_error "Continuing, but uninstalled executables may not work."
1596 # Fallback:
1597 func_to_host_file_result="$1"
1598 fi
1599}
1600# end func_convert_file_check
1601
1602
1603# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
1604# Verify that FROM_PATH (a path in $build format) was converted to $host
1605# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
1606# func_to_host_file_result to a simplistic fallback value (see below).
1607func_convert_path_check ()
1608{
1609 $opt_debug
1610 if test -z "$4" && test -n "$3"; then
1611 func_error "Could not determine the host path corresponding to"
1612 func_error " \`$3'"
1613 func_error "Continuing, but uninstalled executables may not work."
1614 # Fallback. This is a deliberately simplistic "conversion" and
1615 # should not be "improved". See libtool.info.
1616 if test "x$1" != "x$2"; then
1617 lt_replace_pathsep_chars="s|$1|$2|g"
1618 func_to_host_path_result=`echo "$3" |
1619 $SED -e "$lt_replace_pathsep_chars"`
1620 else
1621 func_to_host_path_result="$3"
1622 fi
1623 fi
1624}
1625# end func_convert_path_check
1626
1627
1628# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
1629# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
1630# and appending REPL if ORIG matches BACKPAT.
1631func_convert_path_front_back_pathsep ()
1632{
1633 $opt_debug
1634 case $4 in
1635 $1 ) func_to_host_path_result="$3$func_to_host_path_result"
1636 ;;
1637 esac
1638 case $4 in
1639 $2 ) func_append func_to_host_path_result "$3"
1640 ;;
1641 esac
1642}
1643# end func_convert_path_front_back_pathsep
1644
1645
1646##################################################
1647# $build to $host FILE NAME CONVERSION FUNCTIONS #
1648##################################################
1649# invoked via `$to_host_file_cmd ARG'
1650#
1651# In each case, ARG is the path to be converted from $build to $host format.
1652# Result will be available in $func_to_host_file_result.
1653
1654
1655# func_to_host_file ARG
1656# Converts the file name ARG from $build format to $host format. Return result
1657# in func_to_host_file_result.
1658func_to_host_file ()
1659{
1660 $opt_debug
1661 $to_host_file_cmd "$1"
1662}
1663# end func_to_host_file
1664
1665
1666# func_to_tool_file ARG LAZY
1667# converts the file name ARG from $build format to toolchain format. Return
1668# result in func_to_tool_file_result. If the conversion in use is listed
1669# in (the comma separated) LAZY, no conversion takes place.
1670func_to_tool_file ()
1671{
1672 $opt_debug
1673 case ,$2, in
1674 *,"$to_tool_file_cmd",*)
1675 func_to_tool_file_result=$1
1676 ;;
1677 *)
1678 $to_tool_file_cmd "$1"
1679 func_to_tool_file_result=$func_to_host_file_result
1680 ;;
1681 esac
1682}
1683# end func_to_tool_file
1684
1685
1686# func_convert_file_noop ARG
1687# Copy ARG to func_to_host_file_result.
1688func_convert_file_noop ()
1689{
1690 func_to_host_file_result="$1"
1691}
1692# end func_convert_file_noop
1693
1694
1695# func_convert_file_msys_to_w32 ARG
1696# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
1697# conversion to w32 is not available inside the cwrapper. Returns result in
1698# func_to_host_file_result.
1699func_convert_file_msys_to_w32 ()
1700{
1701 $opt_debug
1702 func_to_host_file_result="$1"
1703 if test -n "$1"; then
1704 func_convert_core_msys_to_w32 "$1"
1705 func_to_host_file_result="$func_convert_core_msys_to_w32_result"
1706 fi
1707 func_convert_file_check "$1" "$func_to_host_file_result"
1708}
1709# end func_convert_file_msys_to_w32
1710
1711
1712# func_convert_file_cygwin_to_w32 ARG
1713# Convert file name ARG from Cygwin to w32 format. Returns result in
1714# func_to_host_file_result.
1715func_convert_file_cygwin_to_w32 ()
1716{
1717 $opt_debug
1718 func_to_host_file_result="$1"
1719 if test -n "$1"; then
1720 # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
1721 # LT_CYGPATH in this case.
1722 func_to_host_file_result=`cygpath -m "$1"`
1723 fi
1724 func_convert_file_check "$1" "$func_to_host_file_result"
1725}
1726# end func_convert_file_cygwin_to_w32
1727
1728
1729# func_convert_file_nix_to_w32 ARG
1730# Convert file name ARG from *nix to w32 format. Requires a wine environment
1731# and a working winepath. Returns result in func_to_host_file_result.
1732func_convert_file_nix_to_w32 ()
1733{
1734 $opt_debug
1735 func_to_host_file_result="$1"
1736 if test -n "$1"; then
1737 func_convert_core_file_wine_to_w32 "$1"
1738 func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
1739 fi
1740 func_convert_file_check "$1" "$func_to_host_file_result"
1741}
1742# end func_convert_file_nix_to_w32
1743
1744
1745# func_convert_file_msys_to_cygwin ARG
1746# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
1747# Returns result in func_to_host_file_result.
1748func_convert_file_msys_to_cygwin ()
1749{
1750 $opt_debug
1751 func_to_host_file_result="$1"
1752 if test -n "$1"; then
1753 func_convert_core_msys_to_w32 "$1"
1754 func_cygpath -u "$func_convert_core_msys_to_w32_result"
1755 func_to_host_file_result="$func_cygpath_result"
1756 fi
1757 func_convert_file_check "$1" "$func_to_host_file_result"
1758}
1759# end func_convert_file_msys_to_cygwin
1760
1761
1762# func_convert_file_nix_to_cygwin ARG
1763# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed
1764# in a wine environment, working winepath, and LT_CYGPATH set. Returns result
1765# in func_to_host_file_result.
1766func_convert_file_nix_to_cygwin ()
1767{
1768 $opt_debug
1769 func_to_host_file_result="$1"
1770 if test -n "$1"; then
1771 # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
1772 func_convert_core_file_wine_to_w32 "$1"
1773 func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
1774 func_to_host_file_result="$func_cygpath_result"
1775 fi
1776 func_convert_file_check "$1" "$func_to_host_file_result"
1777}
1778# end func_convert_file_nix_to_cygwin
1779
1780
1781#############################################
1782# $build to $host PATH CONVERSION FUNCTIONS #
1783#############################################
1784# invoked via `$to_host_path_cmd ARG'
1785#
1786# In each case, ARG is the path to be converted from $build to $host format.
1787# The result will be available in $func_to_host_path_result.
1788#
1789# Path separators are also converted from $build format to $host format. If
1790# ARG begins or ends with a path separator character, it is preserved (but
1791# converted to $host format) on output.
1792#
1793# All path conversion functions are named using the following convention:
1794# file name conversion function : func_convert_file_X_to_Y ()
1795# path conversion function : func_convert_path_X_to_Y ()
1796# where, for any given $build/$host combination the 'X_to_Y' value is the
1797# same. If conversion functions are added for new $build/$host combinations,
1798# the two new functions must follow this pattern, or func_init_to_host_path_cmd
1799# will break.
1800
1801
1802# func_init_to_host_path_cmd
1803# Ensures that function "pointer" variable $to_host_path_cmd is set to the
1804# appropriate value, based on the value of $to_host_file_cmd.
1805to_host_path_cmd=
1806func_init_to_host_path_cmd ()
1807{
1808 $opt_debug
1809 if test -z "$to_host_path_cmd"; then
1810 func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
1811 to_host_path_cmd="func_convert_path_${func_stripname_result}"
1812 fi
1813}
1814
1815
1816# func_to_host_path ARG
1817# Converts the path ARG from $build format to $host format. Return result
1818# in func_to_host_path_result.
1819func_to_host_path ()
1820{
1821 $opt_debug
1822 func_init_to_host_path_cmd
1823 $to_host_path_cmd "$1"
1824}
1825# end func_to_host_path
1826
1827
1828# func_convert_path_noop ARG
1829# Copy ARG to func_to_host_path_result.
1830func_convert_path_noop ()
1831{
1832 func_to_host_path_result="$1"
1833}
1834# end func_convert_path_noop
1835
1836
1837# func_convert_path_msys_to_w32 ARG
1838# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
1839# conversion to w32 is not available inside the cwrapper. Returns result in
1840# func_to_host_path_result.
1841func_convert_path_msys_to_w32 ()
1842{
1843 $opt_debug
1844 func_to_host_path_result="$1"
1845 if test -n "$1"; then
1846 # Remove leading and trailing path separator characters from ARG. MSYS
1847 # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
1848 # and winepath ignores them completely.
1849 func_stripname : : "$1"
1850 func_to_host_path_tmp1=$func_stripname_result
1851 func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1852 func_to_host_path_result="$func_convert_core_msys_to_w32_result"
1853 func_convert_path_check : ";" \
1854 "$func_to_host_path_tmp1" "$func_to_host_path_result"
1855 func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1856 fi
1857}
1858# end func_convert_path_msys_to_w32
1859
1860
1861# func_convert_path_cygwin_to_w32 ARG
1862# Convert path ARG from Cygwin to w32 format. Returns result in
1863# func_to_host_file_result.
1864func_convert_path_cygwin_to_w32 ()
1865{
1866 $opt_debug
1867 func_to_host_path_result="$1"
1868 if test -n "$1"; then
1869 # See func_convert_path_msys_to_w32:
1870 func_stripname : : "$1"
1871 func_to_host_path_tmp1=$func_stripname_result
1872 func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
1873 func_convert_path_check : ";" \
1874 "$func_to_host_path_tmp1" "$func_to_host_path_result"
1875 func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1876 fi
1877}
1878# end func_convert_path_cygwin_to_w32
1879
1880
1881# func_convert_path_nix_to_w32 ARG
1882# Convert path ARG from *nix to w32 format. Requires a wine environment and
1883# a working winepath. Returns result in func_to_host_file_result.
1884func_convert_path_nix_to_w32 ()
1885{
1886 $opt_debug
1887 func_to_host_path_result="$1"
1888 if test -n "$1"; then
1889 # See func_convert_path_msys_to_w32:
1890 func_stripname : : "$1"
1891 func_to_host_path_tmp1=$func_stripname_result
1892 func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1893 func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
1894 func_convert_path_check : ";" \
1895 "$func_to_host_path_tmp1" "$func_to_host_path_result"
1896 func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
1897 fi
1898}
1899# end func_convert_path_nix_to_w32
1900
1901
1902# func_convert_path_msys_to_cygwin ARG
1903# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set.
1904# Returns result in func_to_host_file_result.
1905func_convert_path_msys_to_cygwin ()
1906{
1907 $opt_debug
1908 func_to_host_path_result="$1"
1909 if test -n "$1"; then
1910 # See func_convert_path_msys_to_w32:
1911 func_stripname : : "$1"
1912 func_to_host_path_tmp1=$func_stripname_result
1913 func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
1914 func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
1915 func_to_host_path_result="$func_cygpath_result"
1916 func_convert_path_check : : \
1917 "$func_to_host_path_tmp1" "$func_to_host_path_result"
1918 func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1919 fi
1920}
1921# end func_convert_path_msys_to_cygwin
1922
1923
1924# func_convert_path_nix_to_cygwin ARG
1925# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a
1926# a wine environment, working winepath, and LT_CYGPATH set. Returns result in
1927# func_to_host_file_result.
1928func_convert_path_nix_to_cygwin ()
1929{
1930 $opt_debug
1931 func_to_host_path_result="$1"
1932 if test -n "$1"; then
1933 # Remove leading and trailing path separator characters from
1934 # ARG. msys behavior is inconsistent here, cygpath turns them
1935 # into '.;' and ';.', and winepath ignores them completely.
1936 func_stripname : : "$1"
1937 func_to_host_path_tmp1=$func_stripname_result
1938 func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
1939 func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
1940 func_to_host_path_result="$func_cygpath_result"
1941 func_convert_path_check : : \
1942 "$func_to_host_path_tmp1" "$func_to_host_path_result"
1943 func_convert_path_front_back_pathsep ":*" "*:" : "$1"
1944 fi
1945}
1946# end func_convert_path_nix_to_cygwin
1947
1948
1949# func_mode_compile arg... 1100# func_mode_compile arg...
1950func_mode_compile () 1101func_mode_compile ()
1951{ 1102{
@@ -1986,12 +1137,12 @@ func_mode_compile ()
1986 ;; 1137 ;;
1987 1138
1988 -pie | -fpie | -fPIE) 1139 -pie | -fpie | -fPIE)
1989 func_append pie_flag " $arg" 1140 pie_flag="$pie_flag $arg"
1990 continue 1141 continue
1991 ;; 1142 ;;
1992 1143
1993 -shared | -static | -prefer-pic | -prefer-non-pic) 1144 -shared | -static | -prefer-pic | -prefer-non-pic)
1994 func_append later " $arg" 1145 later="$later $arg"
1995 continue 1146 continue
1996 ;; 1147 ;;
1997 1148
@@ -2012,14 +1163,15 @@ func_mode_compile ()
2012 save_ifs="$IFS"; IFS=',' 1163 save_ifs="$IFS"; IFS=','
2013 for arg in $args; do 1164 for arg in $args; do
2014 IFS="$save_ifs" 1165 IFS="$save_ifs"
2015 func_append_quoted lastarg "$arg" 1166 func_quote_for_eval "$arg"
1167 lastarg="$lastarg $func_quote_for_eval_result"
2016 done 1168 done
2017 IFS="$save_ifs" 1169 IFS="$save_ifs"
2018 func_stripname ' ' '' "$lastarg" 1170 func_stripname ' ' '' "$lastarg"
2019 lastarg=$func_stripname_result 1171 lastarg=$func_stripname_result
2020 1172
2021 # Add the arguments to base_compile. 1173 # Add the arguments to base_compile.
2022 func_append base_compile " $lastarg" 1174 base_compile="$base_compile $lastarg"
2023 continue 1175 continue
2024 ;; 1176 ;;
2025 1177
@@ -2035,7 +1187,8 @@ func_mode_compile ()
2035 esac # case $arg_mode 1187 esac # case $arg_mode
2036 1188
2037 # Aesthetically quote the previous argument. 1189 # Aesthetically quote the previous argument.
2038 func_append_quoted base_compile "$lastarg" 1190 func_quote_for_eval "$lastarg"
1191 base_compile="$base_compile $func_quote_for_eval_result"
2039 done # for arg 1192 done # for arg
2040 1193
2041 case $arg_mode in 1194 case $arg_mode in
@@ -2060,7 +1213,7 @@ func_mode_compile ()
2060 *.[cCFSifmso] | \ 1213 *.[cCFSifmso] | \
2061 *.ada | *.adb | *.ads | *.asm | \ 1214 *.ada | *.adb | *.ads | *.asm | \
2062 *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 1215 *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
2063 *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 1216 *.[fF][09]? | *.for | *.java | *.obj | *.sx)
2064 func_xform "$libobj" 1217 func_xform "$libobj"
2065 libobj=$func_xform_result 1218 libobj=$func_xform_result
2066 ;; 1219 ;;
@@ -2135,7 +1288,7 @@ func_mode_compile ()
2135 # Calculate the filename of the output object if compiler does 1288 # Calculate the filename of the output object if compiler does
2136 # not support -o with -c 1289 # not support -o with -c
2137 if test "$compiler_c_o" = no; then 1290 if test "$compiler_c_o" = no; then
2138 output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 1291 output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
2139 lockfile="$output_obj.lock" 1292 lockfile="$output_obj.lock"
2140 else 1293 else
2141 output_obj= 1294 output_obj=
@@ -2166,16 +1319,17 @@ compiler."
2166 $opt_dry_run || $RM $removelist 1319 $opt_dry_run || $RM $removelist
2167 exit $EXIT_FAILURE 1320 exit $EXIT_FAILURE
2168 fi 1321 fi
2169 func_append removelist " $output_obj" 1322 removelist="$removelist $output_obj"
2170 $ECHO "$srcfile" > "$lockfile" 1323 $ECHO "$srcfile" > "$lockfile"
2171 fi 1324 fi
2172 1325
2173 $opt_dry_run || $RM $removelist 1326 $opt_dry_run || $RM $removelist
2174 func_append removelist " $lockfile" 1327 removelist="$removelist $lockfile"
2175 trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 1328 trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
2176 1329
2177 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 1330 if test -n "$fix_srcfile_path"; then
2178 srcfile=$func_to_tool_file_result 1331 eval srcfile=\"$fix_srcfile_path\"
1332 fi
2179 func_quote_for_eval "$srcfile" 1333 func_quote_for_eval "$srcfile"
2180 qsrcfile=$func_quote_for_eval_result 1334 qsrcfile=$func_quote_for_eval_result
2181 1335
@@ -2195,7 +1349,7 @@ compiler."
2195 1349
2196 if test -z "$output_obj"; then 1350 if test -z "$output_obj"; then
2197 # Place PIC objects in $objdir 1351 # Place PIC objects in $objdir
2198 func_append command " -o $lobj" 1352 command="$command -o $lobj"
2199 fi 1353 fi
2200 1354
2201 func_show_eval_locale "$command" \ 1355 func_show_eval_locale "$command" \
@@ -2242,11 +1396,11 @@ compiler."
2242 command="$base_compile $qsrcfile $pic_flag" 1396 command="$base_compile $qsrcfile $pic_flag"
2243 fi 1397 fi
2244 if test "$compiler_c_o" = yes; then 1398 if test "$compiler_c_o" = yes; then
2245 func_append command " -o $obj" 1399 command="$command -o $obj"
2246 fi 1400 fi
2247 1401
2248 # Suppress compiler output if we already did a PIC compilation. 1402 # Suppress compiler output if we already did a PIC compilation.
2249 func_append command "$suppress_output" 1403 command="$command$suppress_output"
2250 func_show_eval_locale "$command" \ 1404 func_show_eval_locale "$command" \
2251 '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1405 '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
2252 1406
@@ -2291,13 +1445,13 @@ compiler."
2291} 1445}
2292 1446
2293$opt_help || { 1447$opt_help || {
2294 test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 1448test "$mode" = compile && func_mode_compile ${1+"$@"}
2295} 1449}
2296 1450
2297func_mode_help () 1451func_mode_help ()
2298{ 1452{
2299 # We need to display help for each of the modes. 1453 # We need to display help for each of the modes.
2300 case $opt_mode in 1454 case $mode in
2301 "") 1455 "")
2302 # Generic help is extracted from the usage comments 1456 # Generic help is extracted from the usage comments
2303 # at the start of this file. 1457 # at the start of this file.
@@ -2328,11 +1482,10 @@ This mode accepts the following additional options:
2328 1482
2329 -o OUTPUT-FILE set the output file name to OUTPUT-FILE 1483 -o OUTPUT-FILE set the output file name to OUTPUT-FILE
2330 -no-suppress do not suppress compiler output for multiple passes 1484 -no-suppress do not suppress compiler output for multiple passes
2331 -prefer-pic try to build PIC objects only 1485 -prefer-pic try to building PIC objects only
2332 -prefer-non-pic try to build non-PIC objects only 1486 -prefer-non-pic try to building non-PIC objects only
2333 -shared do not build a \`.o' file suitable for static linking 1487 -shared do not build a \`.o' file suitable for static linking
2334 -static only build a \`.o' file suitable for static linking 1488 -static only build a \`.o' file suitable for static linking
2335 -Wc,FLAG pass FLAG directly to the compiler
2336 1489
2337COMPILE-COMMAND is a command to be used in creating a \`standard' object file 1490COMPILE-COMMAND is a command to be used in creating a \`standard' object file
2338from the given SOURCEFILE. 1491from the given SOURCEFILE.
@@ -2385,7 +1538,7 @@ either the \`install' or \`cp' program.
2385 1538
2386The following components of INSTALL-COMMAND are treated specially: 1539The following components of INSTALL-COMMAND are treated specially:
2387 1540
2388 -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 1541 -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
2389 1542
2390The rest of the components are interpreted as arguments to that command (only 1543The rest of the components are interpreted as arguments to that command (only
2391BSD-compatible install options are recognized)." 1544BSD-compatible install options are recognized)."
@@ -2405,8 +1558,6 @@ The following components of LINK-COMMAND are treated specially:
2405 1558
2406 -all-static do not do any dynamic linking at all 1559 -all-static do not do any dynamic linking at all
2407 -avoid-version do not add a version suffix if possible 1560 -avoid-version do not add a version suffix if possible
2408 -bindir BINDIR specify path to binaries directory (for systems where
2409 libraries must be found in the PATH setting at runtime)
2410 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 1561 -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
2411 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 1562 -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
2412 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 1563 -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
@@ -2435,11 +1586,6 @@ The following components of LINK-COMMAND are treated specially:
2435 -version-info CURRENT[:REVISION[:AGE]] 1586 -version-info CURRENT[:REVISION[:AGE]]
2436 specify library version info [each variable defaults to 0] 1587 specify library version info [each variable defaults to 0]
2437 -weak LIBNAME declare that the target provides the LIBNAME interface 1588 -weak LIBNAME declare that the target provides the LIBNAME interface
2438 -Wc,FLAG
2439 -Xcompiler FLAG pass linker-specific FLAG directly to the compiler
2440 -Wl,FLAG
2441 -Xlinker FLAG pass linker-specific FLAG directly to the linker
2442 -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC)
2443 1589
2444All other options (arguments beginning with \`-') are ignored. 1590All other options (arguments beginning with \`-') are ignored.
2445 1591
@@ -2473,44 +1619,18 @@ Otherwise, only FILE itself is deleted using RM."
2473 ;; 1619 ;;
2474 1620
2475 *) 1621 *)
2476 func_fatal_help "invalid operation mode \`$opt_mode'" 1622 func_fatal_help "invalid operation mode \`$mode'"
2477 ;; 1623 ;;
2478 esac 1624 esac
2479 1625
2480 echo 1626 $ECHO
2481 $ECHO "Try \`$progname --help' for more information about other modes." 1627 $ECHO "Try \`$progname --help' for more information about other modes."
1628
1629 exit $?
2482} 1630}
2483 1631
2484# Now that we've collected a possible --mode arg, show help if necessary 1632 # Now that we've collected a possible --mode arg, show help if necessary
2485if $opt_help; then 1633 $opt_help && func_mode_help
2486 if test "$opt_help" = :; then
2487 func_mode_help
2488 else
2489 {
2490 func_help noexit
2491 for opt_mode in compile link execute install finish uninstall clean; do
2492 func_mode_help
2493 done
2494 } | sed -n '1p; 2,$s/^Usage:/ or: /p'
2495 {
2496 func_help noexit
2497 for opt_mode in compile link execute install finish uninstall clean; do
2498 echo
2499 func_mode_help
2500 done
2501 } |
2502 sed '1d
2503 /^When reporting/,/^Report/{
2504 H
2505 d
2506 }
2507 $x
2508 /information about other modes/d
2509 /more detailed .*MODE/d
2510 s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
2511 fi
2512 exit $?
2513fi
2514 1634
2515 1635
2516# func_mode_execute arg... 1636# func_mode_execute arg...
@@ -2523,16 +1643,13 @@ func_mode_execute ()
2523 func_fatal_help "you must specify a COMMAND" 1643 func_fatal_help "you must specify a COMMAND"
2524 1644
2525 # Handle -dlopen flags immediately. 1645 # Handle -dlopen flags immediately.
2526 for file in $opt_dlopen; do 1646 for file in $execute_dlfiles; do
2527 test -f "$file" \ 1647 test -f "$file" \
2528 || func_fatal_help "\`$file' is not a file" 1648 || func_fatal_help "\`$file' is not a file"
2529 1649
2530 dir= 1650 dir=
2531 case $file in 1651 case $file in
2532 *.la) 1652 *.la)
2533 func_resolve_sysroot "$file"
2534 file=$func_resolve_sysroot_result
2535
2536 # Check to see that this really is a libtool archive. 1653 # Check to see that this really is a libtool archive.
2537 func_lalib_unsafe_p "$file" \ 1654 func_lalib_unsafe_p "$file" \
2538 || func_fatal_help "\`$lib' is not a valid libtool archive" 1655 || func_fatal_help "\`$lib' is not a valid libtool archive"
@@ -2554,7 +1671,7 @@ func_mode_execute ()
2554 dir="$func_dirname_result" 1671 dir="$func_dirname_result"
2555 1672
2556 if test -f "$dir/$objdir/$dlname"; then 1673 if test -f "$dir/$objdir/$dlname"; then
2557 func_append dir "/$objdir" 1674 dir="$dir/$objdir"
2558 else 1675 else
2559 if test ! -f "$dir/$dlname"; then 1676 if test ! -f "$dir/$dlname"; then
2560 func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1677 func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
@@ -2595,7 +1712,7 @@ func_mode_execute ()
2595 for file 1712 for file
2596 do 1713 do
2597 case $file in 1714 case $file in
2598 -* | *.la | *.lo ) ;; 1715 -*) ;;
2599 *) 1716 *)
2600 # Do a test to see if this is really a libtool program. 1717 # Do a test to see if this is really a libtool program.
2601 if func_ltwrapper_script_p "$file"; then 1718 if func_ltwrapper_script_p "$file"; then
@@ -2611,7 +1728,8 @@ func_mode_execute ()
2611 ;; 1728 ;;
2612 esac 1729 esac
2613 # Quote arguments (to preserve shell metacharacters). 1730 # Quote arguments (to preserve shell metacharacters).
2614 func_append_quoted args "$file" 1731 func_quote_for_eval "$file"
1732 args="$args $func_quote_for_eval_result"
2615 done 1733 done
2616 1734
2617 if test "X$opt_dry_run" = Xfalse; then 1735 if test "X$opt_dry_run" = Xfalse; then
@@ -2636,66 +1754,29 @@ func_mode_execute ()
2636 # Display what would be done. 1754 # Display what would be done.
2637 if test -n "$shlibpath_var"; then 1755 if test -n "$shlibpath_var"; then
2638 eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 1756 eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
2639 echo "export $shlibpath_var" 1757 $ECHO "export $shlibpath_var"
2640 fi 1758 fi
2641 $ECHO "$cmd$args" 1759 $ECHO "$cmd$args"
2642 exit $EXIT_SUCCESS 1760 exit $EXIT_SUCCESS
2643 fi 1761 fi
2644} 1762}
2645 1763
2646test "$opt_mode" = execute && func_mode_execute ${1+"$@"} 1764test "$mode" = execute && func_mode_execute ${1+"$@"}
2647 1765
2648 1766
2649# func_mode_finish arg... 1767# func_mode_finish arg...
2650func_mode_finish () 1768func_mode_finish ()
2651{ 1769{
2652 $opt_debug 1770 $opt_debug
2653 libs= 1771 libdirs="$nonopt"
2654 libdirs=
2655 admincmds= 1772 admincmds=
2656 1773
2657 for opt in "$nonopt" ${1+"$@"}
2658 do
2659 if test -d "$opt"; then
2660 func_append libdirs " $opt"
2661
2662 elif test -f "$opt"; then
2663 if func_lalib_unsafe_p "$opt"; then
2664 func_append libs " $opt"
2665 else
2666 func_warning "\`$opt' is not a valid libtool archive"
2667 fi
2668
2669 else
2670 func_fatal_error "invalid argument \`$opt'"
2671 fi
2672 done
2673
2674 if test -n "$libs"; then
2675 if test -n "$lt_sysroot"; then
2676 sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
2677 sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
2678 else
2679 sysroot_cmd=
2680 fi
2681
2682 # Remove sysroot references
2683 if $opt_dry_run; then
2684 for lib in $libs; do
2685 echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
2686 done
2687 else
2688 tmpdir=`func_mktempdir`
2689 for lib in $libs; do
2690 sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
2691 > $tmpdir/tmp-la
2692 mv -f $tmpdir/tmp-la $lib
2693 done
2694 ${RM}r "$tmpdir"
2695 fi
2696 fi
2697
2698 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 1774 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
1775 for dir
1776 do
1777 libdirs="$libdirs $dir"
1778 done
1779
2699 for libdir in $libdirs; do 1780 for libdir in $libdirs; do
2700 if test -n "$finish_cmds"; then 1781 if test -n "$finish_cmds"; then
2701 # Do each command in the finish commands. 1782 # Do each command in the finish commands.
@@ -2705,7 +1786,7 @@ func_mode_finish ()
2705 if test -n "$finish_eval"; then 1786 if test -n "$finish_eval"; then
2706 # Do the single finish_eval. 1787 # Do the single finish_eval.
2707 eval cmds=\"$finish_eval\" 1788 eval cmds=\"$finish_eval\"
2708 $opt_dry_run || eval "$cmds" || func_append admincmds " 1789 $opt_dry_run || eval "$cmds" || admincmds="$admincmds
2709 $cmds" 1790 $cmds"
2710 fi 1791 fi
2711 done 1792 done
@@ -2714,55 +1795,53 @@ func_mode_finish ()
2714 # Exit here if they wanted silent mode. 1795 # Exit here if they wanted silent mode.
2715 $opt_silent && exit $EXIT_SUCCESS 1796 $opt_silent && exit $EXIT_SUCCESS
2716 1797
2717 if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 1798 $ECHO "X----------------------------------------------------------------------" | $Xsed
2718 echo "----------------------------------------------------------------------" 1799 $ECHO "Libraries have been installed in:"
2719 echo "Libraries have been installed in:" 1800 for libdir in $libdirs; do
2720 for libdir in $libdirs; do 1801 $ECHO " $libdir"
2721 $ECHO " $libdir" 1802 done
2722 done 1803 $ECHO
2723 echo 1804 $ECHO "If you ever happen to want to link against installed libraries"
2724 echo "If you ever happen to want to link against installed libraries" 1805 $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
2725 echo "in a given directory, LIBDIR, you must either use libtool, and" 1806 $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
2726 echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 1807 $ECHO "flag during linking and do at least one of the following:"
2727 echo "flag during linking and do at least one of the following:" 1808 if test -n "$shlibpath_var"; then
2728 if test -n "$shlibpath_var"; then 1809 $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
2729 echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 1810 $ECHO " during execution"
2730 echo " during execution" 1811 fi
2731 fi 1812 if test -n "$runpath_var"; then
2732 if test -n "$runpath_var"; then 1813 $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
2733 echo " - add LIBDIR to the \`$runpath_var' environment variable" 1814 $ECHO " during linking"
2734 echo " during linking" 1815 fi
2735 fi 1816 if test -n "$hardcode_libdir_flag_spec"; then
2736 if test -n "$hardcode_libdir_flag_spec"; then 1817 libdir=LIBDIR
2737 libdir=LIBDIR 1818 eval flag=\"$hardcode_libdir_flag_spec\"
2738 eval flag=\"$hardcode_libdir_flag_spec\"
2739
2740 $ECHO " - use the \`$flag' linker flag"
2741 fi
2742 if test -n "$admincmds"; then
2743 $ECHO " - have your system administrator run these commands:$admincmds"
2744 fi
2745 if test -f /etc/ld.so.conf; then
2746 echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
2747 fi
2748 echo
2749 1819
2750 echo "See any operating system documentation about shared libraries for" 1820 $ECHO " - use the \`$flag' linker flag"
2751 case $host in 1821 fi
2752 solaris2.[6789]|solaris2.1[0-9]) 1822 if test -n "$admincmds"; then
2753 echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 1823 $ECHO " - have your system administrator run these commands:$admincmds"
2754 echo "pages."
2755 ;;
2756 *)
2757 echo "more information, such as the ld(1) and ld.so(8) manual pages."
2758 ;;
2759 esac
2760 echo "----------------------------------------------------------------------"
2761 fi 1824 fi
1825 if test -f /etc/ld.so.conf; then
1826 $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
1827 fi
1828 $ECHO
1829
1830 $ECHO "See any operating system documentation about shared libraries for"
1831 case $host in
1832 solaris2.[6789]|solaris2.1[0-9])
1833 $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
1834 $ECHO "pages."
1835 ;;
1836 *)
1837 $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
1838 ;;
1839 esac
1840 $ECHO "X----------------------------------------------------------------------" | $Xsed
2762 exit $EXIT_SUCCESS 1841 exit $EXIT_SUCCESS
2763} 1842}
2764 1843
2765test "$opt_mode" = finish && func_mode_finish ${1+"$@"} 1844test "$mode" = finish && func_mode_finish ${1+"$@"}
2766 1845
2767 1846
2768# func_mode_install arg... 1847# func_mode_install arg...
@@ -2773,7 +1852,7 @@ func_mode_install ()
2773 # install_prog (especially on Windows NT). 1852 # install_prog (especially on Windows NT).
2774 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 1853 if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
2775 # Allow the use of GNU shtool's install command. 1854 # Allow the use of GNU shtool's install command.
2776 case $nonopt in *shtool*) :;; *) false;; esac; then 1855 $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
2777 # Aesthetically quote it. 1856 # Aesthetically quote it.
2778 func_quote_for_eval "$nonopt" 1857 func_quote_for_eval "$nonopt"
2779 install_prog="$func_quote_for_eval_result " 1858 install_prog="$func_quote_for_eval_result "
@@ -2787,12 +1866,7 @@ func_mode_install ()
2787 # The real first argument should be the name of the installation program. 1866 # The real first argument should be the name of the installation program.
2788 # Aesthetically quote it. 1867 # Aesthetically quote it.
2789 func_quote_for_eval "$arg" 1868 func_quote_for_eval "$arg"
2790 func_append install_prog "$func_quote_for_eval_result" 1869 install_prog="$install_prog$func_quote_for_eval_result"
2791 install_shared_prog=$install_prog
2792 case " $install_prog " in
2793 *[\\\ /]cp\ *) install_cp=: ;;
2794 *) install_cp=false ;;
2795 esac
2796 1870
2797 # We need to accept at least all the BSD install flags. 1871 # We need to accept at least all the BSD install flags.
2798 dest= 1872 dest=
@@ -2802,12 +1876,10 @@ func_mode_install ()
2802 install_type= 1876 install_type=
2803 isdir=no 1877 isdir=no
2804 stripme= 1878 stripme=
2805 no_mode=:
2806 for arg 1879 for arg
2807 do 1880 do
2808 arg2=
2809 if test -n "$dest"; then 1881 if test -n "$dest"; then
2810 func_append files " $dest" 1882 files="$files $dest"
2811 dest=$arg 1883 dest=$arg
2812 continue 1884 continue
2813 fi 1885 fi
@@ -2815,9 +1887,10 @@ func_mode_install ()
2815 case $arg in 1887 case $arg in
2816 -d) isdir=yes ;; 1888 -d) isdir=yes ;;
2817 -f) 1889 -f)
2818 if $install_cp; then :; else 1890 case " $install_prog " in
2819 prev=$arg 1891 *[\\\ /]cp\ *) ;;
2820 fi 1892 *) prev=$arg ;;
1893 esac
2821 ;; 1894 ;;
2822 -g | -m | -o) 1895 -g | -m | -o)
2823 prev=$arg 1896 prev=$arg
@@ -2831,10 +1904,6 @@ func_mode_install ()
2831 *) 1904 *)
2832 # If the previous option needed an argument, then skip it. 1905 # If the previous option needed an argument, then skip it.
2833 if test -n "$prev"; then 1906 if test -n "$prev"; then
2834 if test "x$prev" = x-m && test -n "$install_override_mode"; then
2835 arg2=$install_override_mode
2836 no_mode=false
2837 fi
2838 prev= 1907 prev=
2839 else 1908 else
2840 dest=$arg 1909 dest=$arg
@@ -2845,11 +1914,7 @@ func_mode_install ()
2845 1914
2846 # Aesthetically quote the argument. 1915 # Aesthetically quote the argument.
2847 func_quote_for_eval "$arg" 1916 func_quote_for_eval "$arg"
2848 func_append install_prog " $func_quote_for_eval_result" 1917 install_prog="$install_prog $func_quote_for_eval_result"
2849 if test -n "$arg2"; then
2850 func_quote_for_eval "$arg2"
2851 fi
2852 func_append install_shared_prog " $func_quote_for_eval_result"
2853 done 1918 done
2854 1919
2855 test -z "$install_prog" && \ 1920 test -z "$install_prog" && \
@@ -2858,13 +1923,6 @@ func_mode_install ()
2858 test -n "$prev" && \ 1923 test -n "$prev" && \
2859 func_fatal_help "the \`$prev' option requires an argument" 1924 func_fatal_help "the \`$prev' option requires an argument"
2860 1925
2861 if test -n "$install_override_mode" && $no_mode; then
2862 if $install_cp; then :; else
2863 func_quote_for_eval "$install_override_mode"
2864 func_append install_shared_prog " -m $func_quote_for_eval_result"
2865 fi
2866 fi
2867
2868 if test -z "$files"; then 1926 if test -z "$files"; then
2869 if test -z "$dest"; then 1927 if test -z "$dest"; then
2870 func_fatal_help "no file or destination specified" 1928 func_fatal_help "no file or destination specified"
@@ -2919,13 +1977,10 @@ func_mode_install ()
2919 case $file in 1977 case $file in
2920 *.$libext) 1978 *.$libext)
2921 # Do the static libraries later. 1979 # Do the static libraries later.
2922 func_append staticlibs " $file" 1980 staticlibs="$staticlibs $file"
2923 ;; 1981 ;;
2924 1982
2925 *.la) 1983 *.la)
2926 func_resolve_sysroot "$file"
2927 file=$func_resolve_sysroot_result
2928
2929 # Check to see that this really is a libtool archive. 1984 # Check to see that this really is a libtool archive.
2930 func_lalib_unsafe_p "$file" \ 1985 func_lalib_unsafe_p "$file" \
2931 || func_fatal_help "\`$file' is not a valid libtool archive" 1986 || func_fatal_help "\`$file' is not a valid libtool archive"
@@ -2939,23 +1994,23 @@ func_mode_install ()
2939 if test "X$destdir" = "X$libdir"; then 1994 if test "X$destdir" = "X$libdir"; then
2940 case "$current_libdirs " in 1995 case "$current_libdirs " in
2941 *" $libdir "*) ;; 1996 *" $libdir "*) ;;
2942 *) func_append current_libdirs " $libdir" ;; 1997 *) current_libdirs="$current_libdirs $libdir" ;;
2943 esac 1998 esac
2944 else 1999 else
2945 # Note the libdir as a future libdir. 2000 # Note the libdir as a future libdir.
2946 case "$future_libdirs " in 2001 case "$future_libdirs " in
2947 *" $libdir "*) ;; 2002 *" $libdir "*) ;;
2948 *) func_append future_libdirs " $libdir" ;; 2003 *) future_libdirs="$future_libdirs $libdir" ;;
2949 esac 2004 esac
2950 fi 2005 fi
2951 2006
2952 func_dirname "$file" "/" "" 2007 func_dirname "$file" "/" ""
2953 dir="$func_dirname_result" 2008 dir="$func_dirname_result"
2954 func_append dir "$objdir" 2009 dir="$dir$objdir"
2955 2010
2956 if test -n "$relink_command"; then 2011 if test -n "$relink_command"; then
2957 # Determine the prefix the user has applied to our future dir. 2012 # Determine the prefix the user has applied to our future dir.
2958 inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 2013 inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
2959 2014
2960 # Don't allow the user to place us outside of our expected 2015 # Don't allow the user to place us outside of our expected
2961 # location b/c this prevents finding dependent libraries that 2016 # location b/c this prevents finding dependent libraries that
@@ -2968,9 +2023,9 @@ func_mode_install ()
2968 2023
2969 if test -n "$inst_prefix_dir"; then 2024 if test -n "$inst_prefix_dir"; then
2970 # Stick the inst_prefix_dir data into the link command. 2025 # Stick the inst_prefix_dir data into the link command.
2971 relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2026 relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
2972 else 2027 else
2973 relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2028 relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
2974 fi 2029 fi
2975 2030
2976 func_warning "relinking \`$file'" 2031 func_warning "relinking \`$file'"
@@ -2988,7 +2043,7 @@ func_mode_install ()
2988 test -n "$relink_command" && srcname="$realname"T 2043 test -n "$relink_command" && srcname="$realname"T
2989 2044
2990 # Install the shared library and build the symlinks. 2045 # Install the shared library and build the symlinks.
2991 func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 2046 func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
2992 'exit $?' 2047 'exit $?'
2993 tstripme="$stripme" 2048 tstripme="$stripme"
2994 case $host_os in 2049 case $host_os in
@@ -3028,7 +2083,7 @@ func_mode_install ()
3028 func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 2083 func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
3029 2084
3030 # Maybe install the static library, too. 2085 # Maybe install the static library, too.
3031 test -n "$old_library" && func_append staticlibs " $dir/$old_library" 2086 test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
3032 ;; 2087 ;;
3033 2088
3034 *.lo) 2089 *.lo)
@@ -3128,7 +2183,7 @@ func_mode_install ()
3128 if test -f "$lib"; then 2183 if test -f "$lib"; then
3129 func_source "$lib" 2184 func_source "$lib"
3130 fi 2185 fi
3131 libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 2186 libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
3132 if test -n "$libdir" && test ! -f "$libfile"; then 2187 if test -n "$libdir" && test ! -f "$libfile"; then
3133 func_warning "\`$lib' has not been installed in \`$libdir'" 2188 func_warning "\`$lib' has not been installed in \`$libdir'"
3134 finalize=no 2189 finalize=no
@@ -3147,7 +2202,7 @@ func_mode_install ()
3147 file="$func_basename_result" 2202 file="$func_basename_result"
3148 outputname="$tmpdir/$file" 2203 outputname="$tmpdir/$file"
3149 # Replace the output file specification. 2204 # Replace the output file specification.
3150 relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 2205 relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
3151 2206
3152 $opt_silent || { 2207 $opt_silent || {
3153 func_quote_for_expand "$relink_command" 2208 func_quote_for_expand "$relink_command"
@@ -3166,7 +2221,7 @@ func_mode_install ()
3166 } 2221 }
3167 else 2222 else
3168 # Install the binary that we compiled earlier. 2223 # Install the binary that we compiled earlier.
3169 file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 2224 file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
3170 fi 2225 fi
3171 fi 2226 fi
3172 2227
@@ -3202,13 +2257,11 @@ func_mode_install ()
3202 2257
3203 # Set up the ranlib parameters. 2258 # Set up the ranlib parameters.
3204 oldlib="$destdir/$name" 2259 oldlib="$destdir/$name"
3205 func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
3206 tool_oldlib=$func_to_tool_file_result
3207 2260
3208 func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 2261 func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
3209 2262
3210 if test -n "$stripme" && test -n "$old_striplib"; then 2263 if test -n "$stripme" && test -n "$old_striplib"; then
3211 func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 2264 func_show_eval "$old_striplib $oldlib" 'exit $?'
3212 fi 2265 fi
3213 2266
3214 # Do each command in the postinstall commands. 2267 # Do each command in the postinstall commands.
@@ -3227,7 +2280,7 @@ func_mode_install ()
3227 fi 2280 fi
3228} 2281}
3229 2282
3230test "$opt_mode" = install && func_mode_install ${1+"$@"} 2283test "$mode" = install && func_mode_install ${1+"$@"}
3231 2284
3232 2285
3233# func_generate_dlsyms outputname originator pic_p 2286# func_generate_dlsyms outputname originator pic_p
@@ -3270,22 +2323,6 @@ func_generate_dlsyms ()
3270extern \"C\" { 2323extern \"C\" {
3271#endif 2324#endif
3272 2325
3273#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
3274#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
3275#endif
3276
3277/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */
3278#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
3279/* DATA imports from DLLs on WIN32 con't be const, because runtime
3280 relocations are performed -- see ld's documentation on pseudo-relocs. */
3281# define LT_DLSYM_CONST
3282#elif defined(__osf__)
3283/* This system does not cope well with relocations in const data. */
3284# define LT_DLSYM_CONST
3285#else
3286# define LT_DLSYM_CONST const
3287#endif
3288
3289/* External symbol declarations for the compiler. */\ 2326/* External symbol declarations for the compiler. */\
3290" 2327"
3291 2328
@@ -3295,11 +2332,10 @@ extern \"C\" {
3295 $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 2332 $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
3296 2333
3297 # Add our own program objects to the symbol list. 2334 # Add our own program objects to the symbol list.
3298 progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 2335 progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
3299 for progfile in $progfiles; do 2336 for progfile in $progfiles; do
3300 func_to_tool_file "$progfile" func_convert_file_msys_to_w32 2337 func_verbose "extracting global C symbols from \`$progfile'"
3301 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 2338 $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
3302 $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
3303 done 2339 done
3304 2340
3305 if test -n "$exclude_expsyms"; then 2341 if test -n "$exclude_expsyms"; then
@@ -3335,7 +2371,7 @@ extern \"C\" {
3335 eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 2371 eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
3336 eval '$MV "$nlist"T "$nlist"' 2372 eval '$MV "$nlist"T "$nlist"'
3337 case $host in 2373 case $host in
3338 *cygwin* | *mingw* | *cegcc* ) 2374 *cygwin | *mingw* | *cegcc* )
3339 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 2375 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
3340 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 2376 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
3341 ;; 2377 ;;
@@ -3348,52 +2384,10 @@ extern \"C\" {
3348 func_verbose "extracting global C symbols from \`$dlprefile'" 2384 func_verbose "extracting global C symbols from \`$dlprefile'"
3349 func_basename "$dlprefile" 2385 func_basename "$dlprefile"
3350 name="$func_basename_result" 2386 name="$func_basename_result"
3351 case $host in 2387 $opt_dry_run || {
3352 *cygwin* | *mingw* | *cegcc* ) 2388 eval '$ECHO ": $name " >> "$nlist"'
3353 # if an import library, we need to obtain dlname 2389 eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3354 if func_win32_import_lib_p "$dlprefile"; then 2390 }
3355 func_tr_sh "$dlprefile"
3356 eval "curr_lafile=\$libfile_$func_tr_sh_result"
3357 dlprefile_dlbasename=""
3358 if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
3359 # Use subshell, to avoid clobbering current variable values
3360 dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
3361 if test -n "$dlprefile_dlname" ; then
3362 func_basename "$dlprefile_dlname"
3363 dlprefile_dlbasename="$func_basename_result"
3364 else
3365 # no lafile. user explicitly requested -dlpreopen <import library>.
3366 $sharedlib_from_linklib_cmd "$dlprefile"
3367 dlprefile_dlbasename=$sharedlib_from_linklib_result
3368 fi
3369 fi
3370 $opt_dry_run || {
3371 if test -n "$dlprefile_dlbasename" ; then
3372 eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
3373 else
3374 func_warning "Could not compute DLL name from $name"
3375 eval '$ECHO ": $name " >> "$nlist"'
3376 fi
3377 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3378 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
3379 $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
3380 }
3381 else # not an import lib
3382 $opt_dry_run || {
3383 eval '$ECHO ": $name " >> "$nlist"'
3384 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3385 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3386 }
3387 fi
3388 ;;
3389 *)
3390 $opt_dry_run || {
3391 eval '$ECHO ": $name " >> "$nlist"'
3392 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
3393 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
3394 }
3395 ;;
3396 esac
3397 done 2391 done
3398 2392
3399 $opt_dry_run || { 2393 $opt_dry_run || {
@@ -3421,19 +2415,36 @@ extern \"C\" {
3421 if test -f "$nlist"S; then 2415 if test -f "$nlist"S; then
3422 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 2416 eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
3423 else 2417 else
3424 echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 2418 $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
3425 fi 2419 fi
3426 2420
3427 echo >> "$output_objdir/$my_dlsyms" "\ 2421 $ECHO >> "$output_objdir/$my_dlsyms" "\
3428 2422
3429/* The mapping between symbol names and symbols. */ 2423/* The mapping between symbol names and symbols. */
3430typedef struct { 2424typedef struct {
3431 const char *name; 2425 const char *name;
3432 void *address; 2426 void *address;
3433} lt_dlsymlist; 2427} lt_dlsymlist;
3434extern LT_DLSYM_CONST lt_dlsymlist 2428"
2429 case $host in
2430 *cygwin* | *mingw* | *cegcc* )
2431 $ECHO >> "$output_objdir/$my_dlsyms" "\
2432/* DATA imports from DLLs on WIN32 con't be const, because
2433 runtime relocations are performed -- see ld's documentation
2434 on pseudo-relocs. */"
2435 lt_dlsym_const= ;;
2436 *osf5*)
2437 echo >> "$output_objdir/$my_dlsyms" "\
2438/* This system does not cope well with relocations in const data */"
2439 lt_dlsym_const= ;;
2440 *)
2441 lt_dlsym_const=const ;;
2442 esac
2443
2444 $ECHO >> "$output_objdir/$my_dlsyms" "\
2445extern $lt_dlsym_const lt_dlsymlist
3435lt_${my_prefix}_LTX_preloaded_symbols[]; 2446lt_${my_prefix}_LTX_preloaded_symbols[];
3436LT_DLSYM_CONST lt_dlsymlist 2447$lt_dlsym_const lt_dlsymlist
3437lt_${my_prefix}_LTX_preloaded_symbols[] = 2448lt_${my_prefix}_LTX_preloaded_symbols[] =
3438{\ 2449{\
3439 { \"$my_originator\", (void *) 0 }," 2450 { \"$my_originator\", (void *) 0 },"
@@ -3446,7 +2457,7 @@ lt_${my_prefix}_LTX_preloaded_symbols[] =
3446 eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 2457 eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
3447 ;; 2458 ;;
3448 esac 2459 esac
3449 echo >> "$output_objdir/$my_dlsyms" "\ 2460 $ECHO >> "$output_objdir/$my_dlsyms" "\
3450 {0, (void *) 0} 2461 {0, (void *) 0}
3451}; 2462};
3452 2463
@@ -3473,7 +2484,7 @@ static const void *lt_preloaded_setup() {
3473 # linked before any other PIC object. But we must not use 2484 # linked before any other PIC object. But we must not use
3474 # pic_flag when linking with -static. The problem exists in 2485 # pic_flag when linking with -static. The problem exists in
3475 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 2486 # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
3476 *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 2487 *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
3477 pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 2488 pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
3478 *-*-hpux*) 2489 *-*-hpux*)
3479 pic_flag_for_symtable=" $pic_flag" ;; 2490 pic_flag_for_symtable=" $pic_flag" ;;
@@ -3489,7 +2500,7 @@ static const void *lt_preloaded_setup() {
3489 for arg in $LTCFLAGS; do 2500 for arg in $LTCFLAGS; do
3490 case $arg in 2501 case $arg in
3491 -pie | -fpie | -fPIE) ;; 2502 -pie | -fpie | -fPIE) ;;
3492 *) func_append symtab_cflags " $arg" ;; 2503 *) symtab_cflags="$symtab_cflags $arg" ;;
3493 esac 2504 esac
3494 done 2505 done
3495 2506
@@ -3504,16 +2515,16 @@ static const void *lt_preloaded_setup() {
3504 case $host in 2515 case $host in
3505 *cygwin* | *mingw* | *cegcc* ) 2516 *cygwin* | *mingw* | *cegcc* )
3506 if test -f "$output_objdir/$my_outputname.def"; then 2517 if test -f "$output_objdir/$my_outputname.def"; then
3507 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 2518 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3508 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 2519 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
3509 else 2520 else
3510 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 2521 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
3511 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 2522 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
3512 fi 2523 fi
3513 ;; 2524 ;;
3514 *) 2525 *)
3515 compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 2526 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
3516 finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 2527 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
3517 ;; 2528 ;;
3518 esac 2529 esac
3519 ;; 2530 ;;
@@ -3527,8 +2538,8 @@ static const void *lt_preloaded_setup() {
3527 # really was required. 2538 # really was required.
3528 2539
3529 # Nullify the symbol file. 2540 # Nullify the symbol file.
3530 compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 2541 compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
3531 finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 2542 finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
3532 fi 2543 fi
3533} 2544}
3534 2545
@@ -3538,7 +2549,6 @@ static const void *lt_preloaded_setup() {
3538# Need a lot of goo to handle *both* DLLs and import libs 2549# Need a lot of goo to handle *both* DLLs and import libs
3539# Has to be a shell function in order to 'eat' the argument 2550# Has to be a shell function in order to 'eat' the argument
3540# that is supplied when $file_magic_command is called. 2551# that is supplied when $file_magic_command is called.
3541# Despite the name, also deal with 64 bit binaries.
3542func_win32_libid () 2552func_win32_libid ()
3543{ 2553{
3544 $opt_debug 2554 $opt_debug
@@ -3549,11 +2559,9 @@ func_win32_libid ()
3549 win32_libid_type="x86 archive import" 2559 win32_libid_type="x86 archive import"
3550 ;; 2560 ;;
3551 *ar\ archive*) # could be an import, or static 2561 *ar\ archive*) # could be an import, or static
3552 # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
3553 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 2562 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
3554 $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 2563 $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
3555 func_to_tool_file "$1" func_convert_file_msys_to_w32 2564 win32_nmres=`eval $NM -f posix -A $1 |
3556 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
3557 $SED -n -e ' 2565 $SED -n -e '
3558 1,100{ 2566 1,100{
3559 / I /{ 2567 / I /{
@@ -3582,131 +2590,6 @@ func_win32_libid ()
3582 $ECHO "$win32_libid_type" 2590 $ECHO "$win32_libid_type"
3583} 2591}
3584 2592
3585# func_cygming_dll_for_implib ARG
3586#
3587# Platform-specific function to extract the
3588# name of the DLL associated with the specified
3589# import library ARG.
3590# Invoked by eval'ing the libtool variable
3591# $sharedlib_from_linklib_cmd
3592# Result is available in the variable
3593# $sharedlib_from_linklib_result
3594func_cygming_dll_for_implib ()
3595{
3596 $opt_debug
3597 sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
3598}
3599
3600# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
3601#
3602# The is the core of a fallback implementation of a
3603# platform-specific function to extract the name of the
3604# DLL associated with the specified import library LIBNAME.
3605#
3606# SECTION_NAME is either .idata$6 or .idata$7, depending
3607# on the platform and compiler that created the implib.
3608#
3609# Echos the name of the DLL associated with the
3610# specified import library.
3611func_cygming_dll_for_implib_fallback_core ()
3612{
3613 $opt_debug
3614 match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
3615 $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
3616 $SED '/^Contents of section '"$match_literal"':/{
3617 # Place marker at beginning of archive member dllname section
3618 s/.*/====MARK====/
3619 p
3620 d
3621 }
3622 # These lines can sometimes be longer than 43 characters, but
3623 # are always uninteresting
3624 /:[ ]*file format pe[i]\{,1\}-/d
3625 /^In archive [^:]*:/d
3626 # Ensure marker is printed
3627 /^====MARK====/p
3628 # Remove all lines with less than 43 characters
3629 /^.\{43\}/!d
3630 # From remaining lines, remove first 43 characters
3631 s/^.\{43\}//' |
3632 $SED -n '
3633 # Join marker and all lines until next marker into a single line
3634 /^====MARK====/ b para
3635 H
3636 $ b para
3637 b
3638 :para
3639 x
3640 s/\n//g
3641 # Remove the marker
3642 s/^====MARK====//
3643 # Remove trailing dots and whitespace
3644 s/[\. \t]*$//
3645 # Print
3646 /./p' |
3647 # we now have a list, one entry per line, of the stringified
3648 # contents of the appropriate section of all members of the
3649 # archive which possess that section. Heuristic: eliminate
3650 # all those which have a first or second character that is
3651 # a '.' (that is, objdump's representation of an unprintable
3652 # character.) This should work for all archives with less than
3653 # 0x302f exports -- but will fail for DLLs whose name actually
3654 # begins with a literal '.' or a single character followed by
3655 # a '.'.
3656 #
3657 # Of those that remain, print the first one.
3658 $SED -e '/^\./d;/^.\./d;q'
3659}
3660
3661# func_cygming_gnu_implib_p ARG
3662# This predicate returns with zero status (TRUE) if
3663# ARG is a GNU/binutils-style import library. Returns
3664# with nonzero status (FALSE) otherwise.
3665func_cygming_gnu_implib_p ()
3666{
3667 $opt_debug
3668 func_to_tool_file "$1" func_convert_file_msys_to_w32
3669 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)$'`
3670 test -n "$func_cygming_gnu_implib_tmp"
3671}
3672
3673# func_cygming_ms_implib_p ARG
3674# This predicate returns with zero status (TRUE) if
3675# ARG is an MS-style import library. Returns
3676# with nonzero status (FALSE) otherwise.
3677func_cygming_ms_implib_p ()
3678{
3679 $opt_debug
3680 func_to_tool_file "$1" func_convert_file_msys_to_w32
3681 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
3682 test -n "$func_cygming_ms_implib_tmp"
3683}
3684
3685# func_cygming_dll_for_implib_fallback ARG
3686# Platform-specific function to extract the
3687# name of the DLL associated with the specified
3688# import library ARG.
3689#
3690# This fallback implementation is for use when $DLLTOOL
3691# does not support the --identify-strict option.
3692# Invoked by eval'ing the libtool variable
3693# $sharedlib_from_linklib_cmd
3694# Result is available in the variable
3695# $sharedlib_from_linklib_result
3696func_cygming_dll_for_implib_fallback ()
3697{
3698 $opt_debug
3699 if func_cygming_gnu_implib_p "$1" ; then
3700 # binutils import library
3701 sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
3702 elif func_cygming_ms_implib_p "$1" ; then
3703 # ms-generated import library
3704 sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
3705 else
3706 # unknown
3707 sharedlib_from_linklib_result=""
3708 fi
3709}
3710 2593
3711 2594
3712# func_extract_an_archive dir oldlib 2595# func_extract_an_archive dir oldlib
@@ -3715,18 +2598,7 @@ func_extract_an_archive ()
3715 $opt_debug 2598 $opt_debug
3716 f_ex_an_ar_dir="$1"; shift 2599 f_ex_an_ar_dir="$1"; shift
3717 f_ex_an_ar_oldlib="$1" 2600 f_ex_an_ar_oldlib="$1"
3718 if test "$lock_old_archive_extraction" = yes; then 2601 func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
3719 lockfile=$f_ex_an_ar_oldlib.lock
3720 until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
3721 func_echo "Waiting for $lockfile to be removed"
3722 sleep 2
3723 done
3724 fi
3725 func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
3726 'stat=$?; rm -f "$lockfile"; exit $stat'
3727 if test "$lock_old_archive_extraction" = yes; then
3728 $opt_dry_run || rm -f "$lockfile"
3729 fi
3730 if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 2602 if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
3731 : 2603 :
3732 else 2604 else
@@ -3797,7 +2669,7 @@ func_extract_archives ()
3797 darwin_file= 2669 darwin_file=
3798 darwin_files= 2670 darwin_files=
3799 for darwin_file in $darwin_filelist; do 2671 for darwin_file in $darwin_filelist; do
3800 darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 2672 darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
3801 $LIPO -create -output "$darwin_file" $darwin_files 2673 $LIPO -create -output "$darwin_file" $darwin_files
3802 done # $darwin_filelist 2674 done # $darwin_filelist
3803 $RM -rf unfat-$$ 2675 $RM -rf unfat-$$
@@ -3812,30 +2684,25 @@ func_extract_archives ()
3812 func_extract_an_archive "$my_xdir" "$my_xabs" 2684 func_extract_an_archive "$my_xdir" "$my_xabs"
3813 ;; 2685 ;;
3814 esac 2686 esac
3815 my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 2687 my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
3816 done 2688 done
3817 2689
3818 func_extract_archives_result="$my_oldobjs" 2690 func_extract_archives_result="$my_oldobjs"
3819} 2691}
3820 2692
3821 2693
3822# func_emit_wrapper [arg=no] 2694
3823# 2695# func_emit_wrapper_part1 [arg=no]
3824# Emit a libtool wrapper script on stdout.
3825# Don't directly open a file because we may want to
3826# incorporate the script contents within a cygwin/mingw
3827# wrapper executable. Must ONLY be called from within
3828# func_mode_link because it depends on a number of variables
3829# set therein.
3830# 2696#
3831# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 2697# Emit the first part of a libtool wrapper script on stdout.
3832# variable will take. If 'yes', then the emitted script 2698# For more information, see the description associated with
3833# will assume that the directory in which it is stored is 2699# func_emit_wrapper(), below.
3834# the $objdir directory. This is a cygwin/mingw-specific 2700func_emit_wrapper_part1 ()
3835# behavior.
3836func_emit_wrapper ()
3837{ 2701{
3838 func_emit_wrapper_arg1=${1-no} 2702 func_emit_wrapper_part1_arg1=no
2703 if test -n "$1" ; then
2704 func_emit_wrapper_part1_arg1=$1
2705 fi
3839 2706
3840 $ECHO "\ 2707 $ECHO "\
3841#! $SHELL 2708#! $SHELL
@@ -3851,6 +2718,7 @@ func_emit_wrapper ()
3851 2718
3852# Sed substitution that helps us do robust quoting. It backslashifies 2719# Sed substitution that helps us do robust quoting. It backslashifies
3853# metacharacters that are still active within double-quoted strings. 2720# metacharacters that are still active within double-quoted strings.
2721Xsed='${SED} -e 1s/^X//'
3854sed_quote_subst='$sed_quote_subst' 2722sed_quote_subst='$sed_quote_subst'
3855 2723
3856# Be Bourne compatible 2724# Be Bourne compatible
@@ -3881,135 +2749,31 @@ if test \"\$libtool_install_magic\" = \"$magic\"; then
3881else 2749else
3882 # When we are sourced in execute mode, \$file and \$ECHO are already set. 2750 # When we are sourced in execute mode, \$file and \$ECHO are already set.
3883 if test \"\$libtool_execute_magic\" != \"$magic\"; then 2751 if test \"\$libtool_execute_magic\" != \"$magic\"; then
3884 file=\"\$0\"" 2752 ECHO=\"$qecho\"
3885 2753 file=\"\$0\"
3886 qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 2754 # Make sure echo works.
3887 $ECHO "\ 2755 if test \"X\$1\" = X--no-reexec; then
3888 2756 # Discard the --no-reexec flag, and continue.
3889# A function that is used when there is no print builtin or printf.
3890func_fallback_echo ()
3891{
3892 eval 'cat <<_LTECHO_EOF
3893\$1
3894_LTECHO_EOF'
3895}
3896 ECHO=\"$qECHO\"
3897 fi
3898
3899# Very basic option parsing. These options are (a) specific to
3900# the libtool wrapper, (b) are identical between the wrapper
3901# /script/ and the wrapper /executable/ which is used only on
3902# windows platforms, and (c) all begin with the string "--lt-"
3903# (application programs are unlikely to have options which match
3904# this pattern).
3905#
3906# There are only two supported options: --lt-debug and
3907# --lt-dump-script. There is, deliberately, no --lt-help.
3908#
3909# The first argument to this parsing function should be the
3910# script's $0 value, followed by "$@".
3911lt_option_debug=
3912func_parse_lt_options ()
3913{
3914 lt_script_arg0=\$0
3915 shift
3916 for lt_opt
3917 do
3918 case \"\$lt_opt\" in
3919 --lt-debug) lt_option_debug=1 ;;
3920 --lt-dump-script)
3921 lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
3922 test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
3923 lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
3924 cat \"\$lt_dump_D/\$lt_dump_F\"
3925 exit 0
3926 ;;
3927 --lt-*)
3928 \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
3929 exit 1
3930 ;;
3931 esac
3932 done
3933
3934 # Print the debug banner immediately:
3935 if test -n \"\$lt_option_debug\"; then
3936 echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
3937 fi
3938}
3939
3940# Used when --lt-debug. Prints its arguments to stdout
3941# (redirection is the responsibility of the caller)
3942func_lt_dump_args ()
3943{
3944 lt_dump_args_N=1;
3945 for lt_arg
3946 do
3947 \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
3948 lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
3949 done
3950}
3951
3952# Core function for launching the target application
3953func_exec_program_core ()
3954{
3955"
3956 case $host in
3957 # Backslashes separate directories on plain windows
3958 *-*-mingw | *-*-os2* | *-cegcc*)
3959 $ECHO "\
3960 if test -n \"\$lt_option_debug\"; then
3961 \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
3962 func_lt_dump_args \${1+\"\$@\"} 1>&2
3963 fi
3964 exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
3965"
3966 ;;
3967
3968 *)
3969 $ECHO "\
3970 if test -n \"\$lt_option_debug\"; then
3971 \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
3972 func_lt_dump_args \${1+\"\$@\"} 1>&2
3973 fi
3974 exec \"\$progdir/\$program\" \${1+\"\$@\"}
3975"
3976 ;;
3977 esac
3978 $ECHO "\
3979 \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
3980 exit 1
3981}
3982
3983# A function to encapsulate launching the target application
3984# Strips options in the --lt-* namespace from \$@ and
3985# launches target application with the remaining arguments.
3986func_exec_program ()
3987{
3988 case \" \$* \" in
3989 *\\ --lt-*)
3990 for lt_wr_arg
3991 do
3992 case \$lt_wr_arg in
3993 --lt-*) ;;
3994 *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
3995 esac
3996 shift 2757 shift
3997 done ;; 2758 elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
3998 esac 2759 # Yippee, \$ECHO works!
3999 func_exec_program_core \${1+\"\$@\"} 2760 :
4000} 2761 else
4001 2762 # Restart under the correct shell, and then maybe \$ECHO will work.
4002 # Parse options 2763 exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
4003 func_parse_lt_options \"\$0\" \${1+\"\$@\"} 2764 fi
2765 fi\
2766"
2767 $ECHO "\
4004 2768
4005 # Find the directory that this script lives in. 2769 # Find the directory that this script lives in.
4006 thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 2770 thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
4007 test \"x\$thisdir\" = \"x\$file\" && thisdir=. 2771 test \"x\$thisdir\" = \"x\$file\" && thisdir=.
4008 2772
4009 # Follow symbolic links until we get to the real thisdir. 2773 # Follow symbolic links until we get to the real thisdir.
4010 file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 2774 file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
4011 while test -n \"\$file\"; do 2775 while test -n \"\$file\"; do
4012 destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 2776 destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
4013 2777
4014 # If there was a directory component, then change thisdir. 2778 # If there was a directory component, then change thisdir.
4015 if test \"x\$destdir\" != \"x\$file\"; then 2779 if test \"x\$destdir\" != \"x\$file\"; then
@@ -4019,13 +2783,30 @@ func_exec_program ()
4019 esac 2783 esac
4020 fi 2784 fi
4021 2785
4022 file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 2786 file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
4023 file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 2787 file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
4024 done 2788 done
2789"
2790}
2791# end: func_emit_wrapper_part1
2792
2793# func_emit_wrapper_part2 [arg=no]
2794#
2795# Emit the second part of a libtool wrapper script on stdout.
2796# For more information, see the description associated with
2797# func_emit_wrapper(), below.
2798func_emit_wrapper_part2 ()
2799{
2800 func_emit_wrapper_part2_arg1=no
2801 if test -n "$1" ; then
2802 func_emit_wrapper_part2_arg1=$1
2803 fi
2804
2805 $ECHO "\
4025 2806
4026 # Usually 'no', except on cygwin/mingw when embedded into 2807 # Usually 'no', except on cygwin/mingw when embedded into
4027 # the cwrapper. 2808 # the cwrapper.
4028 WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 2809 WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
4029 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 2810 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
4030 # special case for '.' 2811 # special case for '.'
4031 if test \"\$thisdir\" = \".\"; then 2812 if test \"\$thisdir\" = \".\"; then
@@ -4033,7 +2814,7 @@ func_exec_program ()
4033 fi 2814 fi
4034 # remove .libs from thisdir 2815 # remove .libs from thisdir
4035 case \"\$thisdir\" in 2816 case \"\$thisdir\" in
4036 *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 2817 *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
4037 $objdir ) thisdir=. ;; 2818 $objdir ) thisdir=. ;;
4038 esac 2819 esac
4039 fi 2820 fi
@@ -4088,18 +2869,6 @@ func_exec_program ()
4088 2869
4089 if test -f \"\$progdir/\$program\"; then" 2870 if test -f \"\$progdir/\$program\"; then"
4090 2871
4091 # fixup the dll searchpath if we need to.
4092 #
4093 # Fix the DLL searchpath if we need to. Do this before prepending
4094 # to shlibpath, because on Windows, both are PATH and uninstalled
4095 # libraries must come first.
4096 if test -n "$dllsearchpath"; then
4097 $ECHO "\
4098 # Add the dll search path components to the executable PATH
4099 PATH=$dllsearchpath:\$PATH
4100"
4101 fi
4102
4103 # Export our shlibpath_var if we have one. 2872 # Export our shlibpath_var if we have one.
4104 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 2873 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4105 $ECHO "\ 2874 $ECHO "\
@@ -4108,29 +2877,254 @@ func_exec_program ()
4108 2877
4109 # Some systems cannot cope with colon-terminated $shlibpath_var 2878 # Some systems cannot cope with colon-terminated $shlibpath_var
4110 # The second colon is a workaround for a bug in BeOS R4 sed 2879 # The second colon is a workaround for a bug in BeOS R4 sed
4111 $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 2880 $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
4112 2881
4113 export $shlibpath_var 2882 export $shlibpath_var
4114" 2883"
4115 fi 2884 fi
4116 2885
2886 # fixup the dll searchpath if we need to.
2887 if test -n "$dllsearchpath"; then
2888 $ECHO "\
2889 # Add the dll search path components to the executable PATH
2890 PATH=$dllsearchpath:\$PATH
2891"
2892 fi
2893
4117 $ECHO "\ 2894 $ECHO "\
4118 if test \"\$libtool_execute_magic\" != \"$magic\"; then 2895 if test \"\$libtool_execute_magic\" != \"$magic\"; then
4119 # Run the actual program with our arguments. 2896 # Run the actual program with our arguments.
4120 func_exec_program \${1+\"\$@\"} 2897"
2898 case $host in
2899 # Backslashes separate directories on plain windows
2900 *-*-mingw | *-*-os2* | *-cegcc*)
2901 $ECHO "\
2902 exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
2903"
2904 ;;
2905
2906 *)
2907 $ECHO "\
2908 exec \"\$progdir/\$program\" \${1+\"\$@\"}
2909"
2910 ;;
2911 esac
2912 $ECHO "\
2913 \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
2914 exit 1
4121 fi 2915 fi
4122 else 2916 else
4123 # The program doesn't exist. 2917 # The program doesn't exist.
4124 \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 2918 \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
4125 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 2919 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
4126 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 2920 $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
4127 exit 1 2921 exit 1
4128 fi 2922 fi
4129fi\ 2923fi\
4130" 2924"
4131} 2925}
2926# end: func_emit_wrapper_part2
2927
2928
2929# func_emit_wrapper [arg=no]
2930#
2931# Emit a libtool wrapper script on stdout.
2932# Don't directly open a file because we may want to
2933# incorporate the script contents within a cygwin/mingw
2934# wrapper executable. Must ONLY be called from within
2935# func_mode_link because it depends on a number of variables
2936# set therein.
2937#
2938# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
2939# variable will take. If 'yes', then the emitted script
2940# will assume that the directory in which it is stored is
2941# the $objdir directory. This is a cygwin/mingw-specific
2942# behavior.
2943func_emit_wrapper ()
2944{
2945 func_emit_wrapper_arg1=no
2946 if test -n "$1" ; then
2947 func_emit_wrapper_arg1=$1
2948 fi
2949
2950 # split this up so that func_emit_cwrapperexe_src
2951 # can call each part independently.
2952 func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
2953 func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
2954}
4132 2955
4133 2956
2957# func_to_host_path arg
2958#
2959# Convert paths to host format when used with build tools.
2960# Intended for use with "native" mingw (where libtool itself
2961# is running under the msys shell), or in the following cross-
2962# build environments:
2963# $build $host
2964# mingw (msys) mingw [e.g. native]
2965# cygwin mingw
2966# *nix + wine mingw
2967# where wine is equipped with the `winepath' executable.
2968# In the native mingw case, the (msys) shell automatically
2969# converts paths for any non-msys applications it launches,
2970# but that facility isn't available from inside the cwrapper.
2971# Similar accommodations are necessary for $host mingw and
2972# $build cygwin. Calling this function does no harm for other
2973# $host/$build combinations not listed above.
2974#
2975# ARG is the path (on $build) that should be converted to
2976# the proper representation for $host. The result is stored
2977# in $func_to_host_path_result.
2978func_to_host_path ()
2979{
2980 func_to_host_path_result="$1"
2981 if test -n "$1" ; then
2982 case $host in
2983 *mingw* )
2984 lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
2985 case $build in
2986 *mingw* ) # actually, msys
2987 # awkward: cmd appends spaces to result
2988 lt_sed_strip_trailing_spaces="s/[ ]*\$//"
2989 func_to_host_path_tmp1=`( cmd //c echo "$1" |\
2990 $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
2991 func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
2992 $SED -e "$lt_sed_naive_backslashify"`
2993 ;;
2994 *cygwin* )
2995 func_to_host_path_tmp1=`cygpath -w "$1"`
2996 func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
2997 $SED -e "$lt_sed_naive_backslashify"`
2998 ;;
2999 * )
3000 # Unfortunately, winepath does not exit with a non-zero
3001 # error code, so we are forced to check the contents of
3002 # stdout. On the other hand, if the command is not
3003 # found, the shell will set an exit code of 127 and print
3004 # *an error message* to stdout. So we must check for both
3005 # error code of zero AND non-empty stdout, which explains
3006 # the odd construction:
3007 func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
3008 if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
3009 func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
3010 $SED -e "$lt_sed_naive_backslashify"`
3011 else
3012 # Allow warning below.
3013 func_to_host_path_result=""
3014 fi
3015 ;;
3016 esac
3017 if test -z "$func_to_host_path_result" ; then
3018 func_error "Could not determine host path corresponding to"
3019 func_error " '$1'"
3020 func_error "Continuing, but uninstalled executables may not work."
3021 # Fallback:
3022 func_to_host_path_result="$1"
3023 fi
3024 ;;
3025 esac
3026 fi
3027}
3028# end: func_to_host_path
3029
3030# func_to_host_pathlist arg
3031#
3032# Convert pathlists to host format when used with build tools.
3033# See func_to_host_path(), above. This function supports the
3034# following $build/$host combinations (but does no harm for
3035# combinations not listed here):
3036# $build $host
3037# mingw (msys) mingw [e.g. native]
3038# cygwin mingw
3039# *nix + wine mingw
3040#
3041# Path separators are also converted from $build format to
3042# $host format. If ARG begins or ends with a path separator
3043# character, it is preserved (but converted to $host format)
3044# on output.
3045#
3046# ARG is a pathlist (on $build) that should be converted to
3047# the proper representation on $host. The result is stored
3048# in $func_to_host_pathlist_result.
3049func_to_host_pathlist ()
3050{
3051 func_to_host_pathlist_result="$1"
3052 if test -n "$1" ; then
3053 case $host in
3054 *mingw* )
3055 lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
3056 # Remove leading and trailing path separator characters from
3057 # ARG. msys behavior is inconsistent here, cygpath turns them
3058 # into '.;' and ';.', and winepath ignores them completely.
3059 func_to_host_pathlist_tmp2="$1"
3060 # Once set for this call, this variable should not be
3061 # reassigned. It is used in tha fallback case.
3062 func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
3063 $SED -e 's|^:*||' -e 's|:*$||'`
3064 case $build in
3065 *mingw* ) # Actually, msys.
3066 # Awkward: cmd appends spaces to result.
3067 lt_sed_strip_trailing_spaces="s/[ ]*\$//"
3068 func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
3069 $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
3070 func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3071 $SED -e "$lt_sed_naive_backslashify"`
3072 ;;
3073 *cygwin* )
3074 func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
3075 func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
3076 $SED -e "$lt_sed_naive_backslashify"`
3077 ;;
3078 * )
3079 # unfortunately, winepath doesn't convert pathlists
3080 func_to_host_pathlist_result=""
3081 func_to_host_pathlist_oldIFS=$IFS
3082 IFS=:
3083 for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
3084 IFS=$func_to_host_pathlist_oldIFS
3085 if test -n "$func_to_host_pathlist_f" ; then
3086 func_to_host_path "$func_to_host_pathlist_f"
3087 if test -n "$func_to_host_path_result" ; then
3088 if test -z "$func_to_host_pathlist_result" ; then
3089 func_to_host_pathlist_result="$func_to_host_path_result"
3090 else
3091 func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
3092 fi
3093 fi
3094 fi
3095 IFS=:
3096 done
3097 IFS=$func_to_host_pathlist_oldIFS
3098 ;;
3099 esac
3100 if test -z "$func_to_host_pathlist_result" ; then
3101 func_error "Could not determine the host path(s) corresponding to"
3102 func_error " '$1'"
3103 func_error "Continuing, but uninstalled executables may not work."
3104 # Fallback. This may break if $1 contains DOS-style drive
3105 # specifications. The fix is not to complicate the expression
3106 # below, but for the user to provide a working wine installation
3107 # with winepath so that path translation in the cross-to-mingw
3108 # case works properly.
3109 lt_replace_pathsep_nix_to_dos="s|:|;|g"
3110 func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
3111 $SED -e "$lt_replace_pathsep_nix_to_dos"`
3112 fi
3113 # Now, add the leading and trailing path separators back
3114 case "$1" in
3115 :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
3116 ;;
3117 esac
3118 case "$1" in
3119 *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
3120 ;;
3121 esac
3122 ;;
3123 esac
3124 fi
3125}
3126# end: func_to_host_pathlist
3127
4134# func_emit_cwrapperexe_src 3128# func_emit_cwrapperexe_src
4135# emit the source code for a wrapper executable on stdout 3129# emit the source code for a wrapper executable on stdout
4136# Must ONLY be called from within func_mode_link because 3130# Must ONLY be called from within func_mode_link because
@@ -4147,23 +3141,31 @@ func_emit_cwrapperexe_src ()
4147 3141
4148 This wrapper executable should never be moved out of the build directory. 3142 This wrapper executable should never be moved out of the build directory.
4149 If it is, it will not operate correctly. 3143 If it is, it will not operate correctly.
3144
3145 Currently, it simply execs the wrapper *script* "$SHELL $output",
3146 but could eventually absorb all of the scripts functionality and
3147 exec $objdir/$outputname directly.
4150*/ 3148*/
4151EOF 3149EOF
4152 cat <<"EOF" 3150 cat <<"EOF"
4153#ifdef _MSC_VER
4154# define _CRT_SECURE_NO_DEPRECATE 1
4155#endif
4156#include <stdio.h> 3151#include <stdio.h>
4157#include <stdlib.h> 3152#include <stdlib.h>
4158#ifdef _MSC_VER 3153#ifdef _MSC_VER
4159# include <direct.h> 3154# include <direct.h>
4160# include <process.h> 3155# include <process.h>
4161# include <io.h> 3156# include <io.h>
3157# define setmode _setmode
4162#else 3158#else
4163# include <unistd.h> 3159# include <unistd.h>
4164# include <stdint.h> 3160# include <stdint.h>
4165# ifdef __CYGWIN__ 3161# ifdef __CYGWIN__
4166# include <io.h> 3162# include <io.h>
3163# define HAVE_SETENV
3164# ifdef __STRICT_ANSI__
3165char *realpath (const char *, char *);
3166int putenv (char *);
3167int setenv (const char *, const char *, int);
3168# endif
4167# endif 3169# endif
4168#endif 3170#endif
4169#include <malloc.h> 3171#include <malloc.h>
@@ -4175,44 +3177,6 @@ EOF
4175#include <fcntl.h> 3177#include <fcntl.h>
4176#include <sys/stat.h> 3178#include <sys/stat.h>
4177 3179
4178/* declarations of non-ANSI functions */
4179#if defined(__MINGW32__)
4180# ifdef __STRICT_ANSI__
4181int _putenv (const char *);
4182# endif
4183#elif defined(__CYGWIN__)
4184# ifdef __STRICT_ANSI__
4185char *realpath (const char *, char *);
4186int putenv (char *);
4187int setenv (const char *, const char *, int);
4188# endif
4189/* #elif defined (other platforms) ... */
4190#endif
4191
4192/* portability defines, excluding path handling macros */
4193#if defined(_MSC_VER)
4194# define setmode _setmode
4195# define stat _stat
4196# define chmod _chmod
4197# define getcwd _getcwd
4198# define putenv _putenv
4199# define S_IXUSR _S_IEXEC
4200# ifndef _INTPTR_T_DEFINED
4201# define _INTPTR_T_DEFINED
4202# define intptr_t int
4203# endif
4204#elif defined(__MINGW32__)
4205# define setmode _setmode
4206# define stat _stat
4207# define chmod _chmod
4208# define getcwd _getcwd
4209# define putenv _putenv
4210#elif defined(__CYGWIN__)
4211# define HAVE_SETENV
4212# define FOPEN_WB "wb"
4213/* #elif defined (other platforms) ... */
4214#endif
4215
4216#if defined(PATH_MAX) 3180#if defined(PATH_MAX)
4217# define LT_PATHMAX PATH_MAX 3181# define LT_PATHMAX PATH_MAX
4218#elif defined(MAXPATHLEN) 3182#elif defined(MAXPATHLEN)
@@ -4228,7 +3192,14 @@ int setenv (const char *, const char *, int);
4228# define S_IXGRP 0 3192# define S_IXGRP 0
4229#endif 3193#endif
4230 3194
4231/* path handling portability macros */ 3195#ifdef _MSC_VER
3196# define S_IXUSR _S_IEXEC
3197# define stat _stat
3198# ifndef _INTPTR_T_DEFINED
3199# define intptr_t int
3200# endif
3201#endif
3202
4232#ifndef DIR_SEPARATOR 3203#ifndef DIR_SEPARATOR
4233# define DIR_SEPARATOR '/' 3204# define DIR_SEPARATOR '/'
4234# define PATH_SEPARATOR ':' 3205# define PATH_SEPARATOR ':'
@@ -4259,6 +3230,10 @@ int setenv (const char *, const char *, int);
4259# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 3230# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
4260#endif /* PATH_SEPARATOR_2 */ 3231#endif /* PATH_SEPARATOR_2 */
4261 3232
3233#ifdef __CYGWIN__
3234# define FOPEN_WB "wb"
3235#endif
3236
4262#ifndef FOPEN_WB 3237#ifndef FOPEN_WB
4263# define FOPEN_WB "w" 3238# define FOPEN_WB "w"
4264#endif 3239#endif
@@ -4271,13 +3246,22 @@ int setenv (const char *, const char *, int);
4271 if (stale) { free ((void *) stale); stale = 0; } \ 3246 if (stale) { free ((void *) stale); stale = 0; } \
4272} while (0) 3247} while (0)
4273 3248
4274#if defined(LT_DEBUGWRAPPER) 3249#undef LTWRAPPER_DEBUGPRINTF
4275static int lt_debug = 1; 3250#if defined DEBUGWRAPPER
3251# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
3252static void
3253ltwrapper_debugprintf (const char *fmt, ...)
3254{
3255 va_list args;
3256 va_start (args, fmt);
3257 (void) vfprintf (stderr, fmt, args);
3258 va_end (args);
3259}
4276#else 3260#else
4277static int lt_debug = 0; 3261# define LTWRAPPER_DEBUGPRINTF(args)
4278#endif 3262#endif
4279 3263
4280const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 3264const char *program_name = NULL;
4281 3265
4282void *xmalloc (size_t num); 3266void *xmalloc (size_t num);
4283char *xstrdup (const char *string); 3267char *xstrdup (const char *string);
@@ -4287,27 +3271,41 @@ char *chase_symlinks (const char *pathspec);
4287int make_executable (const char *path); 3271int make_executable (const char *path);
4288int check_executable (const char *path); 3272int check_executable (const char *path);
4289char *strendzap (char *str, const char *pat); 3273char *strendzap (char *str, const char *pat);
4290void lt_debugprintf (const char *file, int line, const char *fmt, ...); 3274void lt_fatal (const char *message, ...);
4291void lt_fatal (const char *file, int line, const char *message, ...);
4292static const char *nonnull (const char *s);
4293static const char *nonempty (const char *s);
4294void lt_setenv (const char *name, const char *value); 3275void lt_setenv (const char *name, const char *value);
4295char *lt_extend_str (const char *orig_value, const char *add, int to_end); 3276char *lt_extend_str (const char *orig_value, const char *add, int to_end);
3277void lt_opt_process_env_set (const char *arg);
3278void lt_opt_process_env_prepend (const char *arg);
3279void lt_opt_process_env_append (const char *arg);
3280int lt_split_name_value (const char *arg, char** name, char** value);
4296void lt_update_exe_path (const char *name, const char *value); 3281void lt_update_exe_path (const char *name, const char *value);
4297void lt_update_lib_path (const char *name, const char *value); 3282void lt_update_lib_path (const char *name, const char *value);
4298char **prepare_spawn (char **argv); 3283
4299void lt_dump_script (FILE *f); 3284static const char *script_text_part1 =
4300EOF 3285EOF
4301 3286
3287 func_emit_wrapper_part1 yes |
3288 $SED -e 's/\([\\"]\)/\\\1/g' \
3289 -e 's/^/ "/' -e 's/$/\\n"/'
3290 echo ";"
4302 cat <<EOF 3291 cat <<EOF
4303volatile const char * MAGIC_EXE = "$magic_exe"; 3292
3293static const char *script_text_part2 =
3294EOF
3295 func_emit_wrapper_part2 yes |
3296 $SED -e 's/\([\\"]\)/\\\1/g' \
3297 -e 's/^/ "/' -e 's/$/\\n"/'
3298 echo ";"
3299
3300 cat <<EOF
3301const char * MAGIC_EXE = "$magic_exe";
4304const char * LIB_PATH_VARNAME = "$shlibpath_var"; 3302const char * LIB_PATH_VARNAME = "$shlibpath_var";
4305EOF 3303EOF
4306 3304
4307 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 3305 if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
4308 func_to_host_path "$temp_rpath" 3306 func_to_host_pathlist "$temp_rpath"
4309 cat <<EOF 3307 cat <<EOF
4310const char * LIB_PATH_VALUE = "$func_to_host_path_result"; 3308const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result";
4311EOF 3309EOF
4312 else 3310 else
4313 cat <<"EOF" 3311 cat <<"EOF"
@@ -4316,10 +3314,10 @@ EOF
4316 fi 3314 fi
4317 3315
4318 if test -n "$dllsearchpath"; then 3316 if test -n "$dllsearchpath"; then
4319 func_to_host_path "$dllsearchpath:" 3317 func_to_host_pathlist "$dllsearchpath:"
4320 cat <<EOF 3318 cat <<EOF
4321const char * EXE_PATH_VARNAME = "PATH"; 3319const char * EXE_PATH_VARNAME = "PATH";
4322const char * EXE_PATH_VALUE = "$func_to_host_path_result"; 3320const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result";
4323EOF 3321EOF
4324 else 3322 else
4325 cat <<"EOF" 3323 cat <<"EOF"
@@ -4342,10 +3340,24 @@ EOF
4342 cat <<"EOF" 3340 cat <<"EOF"
4343 3341
4344#define LTWRAPPER_OPTION_PREFIX "--lt-" 3342#define LTWRAPPER_OPTION_PREFIX "--lt-"
3343#define LTWRAPPER_OPTION_PREFIX_LENGTH 5
4345 3344
3345static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH;
4346static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 3346static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
3347
4347static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 3348static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script";
4348static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 3349
3350static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
3351static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set";
3352 /* argument is putenv-style "foo=bar", value of foo is set to bar */
3353
3354static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
3355static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prepend";
3356 /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
3357
3358static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
3359static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-append";
3360 /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
4349 3361
4350int 3362int
4351main (int argc, char *argv[]) 3363main (int argc, char *argv[])
@@ -4362,13 +3374,10 @@ main (int argc, char *argv[])
4362 int i; 3374 int i;
4363 3375
4364 program_name = (char *) xstrdup (base_name (argv[0])); 3376 program_name = (char *) xstrdup (base_name (argv[0]));
4365 newargz = XMALLOC (char *, argc + 1); 3377 LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0]));
3378 LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
4366 3379
4367 /* very simple arg parsing; don't want to rely on getopt 3380 /* very simple arg parsing; don't want to rely on getopt */
4368 * also, copy all non cwrapper options to newargz, except
4369 * argz[0], which is handled differently
4370 */
4371 newargc=0;
4372 for (i = 1; i < argc; i++) 3381 for (i = 1; i < argc; i++)
4373 { 3382 {
4374 if (strcmp (argv[i], dumpscript_opt) == 0) 3383 if (strcmp (argv[i], dumpscript_opt) == 0)
@@ -4382,57 +3391,25 @@ EOF
4382 esac 3391 esac
4383 3392
4384 cat <<"EOF" 3393 cat <<"EOF"
4385 lt_dump_script (stdout); 3394 printf ("%s", script_text_part1);
3395 printf ("%s", script_text_part2);
4386 return 0; 3396 return 0;
4387 } 3397 }
4388 if (strcmp (argv[i], debug_opt) == 0)
4389 {
4390 lt_debug = 1;
4391 continue;
4392 }
4393 if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
4394 {
4395 /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
4396 namespace, but it is not one of the ones we know about and
4397 have already dealt with, above (inluding dump-script), then
4398 report an error. Otherwise, targets might begin to believe
4399 they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
4400 namespace. The first time any user complains about this, we'll
4401 need to make LTWRAPPER_OPTION_PREFIX a configure-time option
4402 or a configure.ac-settable value.
4403 */
4404 lt_fatal (__FILE__, __LINE__,
4405 "unrecognized %s option: '%s'",
4406 ltwrapper_option_prefix, argv[i]);
4407 }
4408 /* otherwise ... */
4409 newargz[++newargc] = xstrdup (argv[i]);
4410 } 3398 }
4411 newargz[++newargc] = NULL;
4412
4413EOF
4414 cat <<EOF
4415 /* The GNU banner must be the first non-error debug message */
4416 lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
4417EOF
4418 cat <<"EOF"
4419 lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
4420 lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
4421 3399
3400 newargz = XMALLOC (char *, argc + 1);
4422 tmp_pathspec = find_executable (argv[0]); 3401 tmp_pathspec = find_executable (argv[0]);
4423 if (tmp_pathspec == NULL) 3402 if (tmp_pathspec == NULL)
4424 lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 3403 lt_fatal ("Couldn't find %s", argv[0]);
4425 lt_debugprintf (__FILE__, __LINE__, 3404 LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
4426 "(main) found exe (before symlink chase) at: %s\n", 3405 tmp_pathspec));
4427 tmp_pathspec);
4428 3406
4429 actual_cwrapper_path = chase_symlinks (tmp_pathspec); 3407 actual_cwrapper_path = chase_symlinks (tmp_pathspec);
4430 lt_debugprintf (__FILE__, __LINE__, 3408 LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
4431 "(main) found exe (after symlink chase) at: %s\n", 3409 actual_cwrapper_path));
4432 actual_cwrapper_path);
4433 XFREE (tmp_pathspec); 3410 XFREE (tmp_pathspec);
4434 3411
4435 actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 3412 actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
4436 strendzap (actual_cwrapper_path, actual_cwrapper_name); 3413 strendzap (actual_cwrapper_path, actual_cwrapper_name);
4437 3414
4438 /* wrapper name transforms */ 3415 /* wrapper name transforms */
@@ -4450,9 +3427,8 @@ EOF
4450 target_name = tmp_pathspec; 3427 target_name = tmp_pathspec;
4451 tmp_pathspec = 0; 3428 tmp_pathspec = 0;
4452 3429
4453 lt_debugprintf (__FILE__, __LINE__, 3430 LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
4454 "(main) libtool target name: %s\n", 3431 target_name));
4455 target_name);
4456EOF 3432EOF
4457 3433
4458 cat <<EOF 3434 cat <<EOF
@@ -4502,19 +3478,80 @@ EOF
4502 3478
4503 lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 3479 lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
4504 lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 3480 lt_setenv ("DUALCASE", "1"); /* for MSK sh */
4505 /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must
4506 be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
4507 because on Windows, both *_VARNAMEs are PATH but uninstalled
4508 libraries must come first. */
4509 lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
4510 lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 3481 lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
3482 lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
3483
3484 newargc=0;
3485 for (i = 1; i < argc; i++)
3486 {
3487 if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
3488 {
3489 if (argv[i][env_set_opt_len] == '=')
3490 {
3491 const char *p = argv[i] + env_set_opt_len + 1;
3492 lt_opt_process_env_set (p);
3493 }
3494 else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
3495 {
3496 lt_opt_process_env_set (argv[++i]); /* don't copy */
3497 }
3498 else
3499 lt_fatal ("%s missing required argument", env_set_opt);
3500 continue;
3501 }
3502 if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
3503 {
3504 if (argv[i][env_prepend_opt_len] == '=')
3505 {
3506 const char *p = argv[i] + env_prepend_opt_len + 1;
3507 lt_opt_process_env_prepend (p);
3508 }
3509 else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
3510 {
3511 lt_opt_process_env_prepend (argv[++i]); /* don't copy */
3512 }
3513 else
3514 lt_fatal ("%s missing required argument", env_prepend_opt);
3515 continue;
3516 }
3517 if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
3518 {
3519 if (argv[i][env_append_opt_len] == '=')
3520 {
3521 const char *p = argv[i] + env_append_opt_len + 1;
3522 lt_opt_process_env_append (p);
3523 }
3524 else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
3525 {
3526 lt_opt_process_env_append (argv[++i]); /* don't copy */
3527 }
3528 else
3529 lt_fatal ("%s missing required argument", env_append_opt);
3530 continue;
3531 }
3532 if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
3533 {
3534 /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
3535 namespace, but it is not one of the ones we know about and
3536 have already dealt with, above (inluding dump-script), then
3537 report an error. Otherwise, targets might begin to believe
3538 they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
3539 namespace. The first time any user complains about this, we'll
3540 need to make LTWRAPPER_OPTION_PREFIX a configure-time option
3541 or a configure.ac-settable value.
3542 */
3543 lt_fatal ("Unrecognized option in %s namespace: '%s'",
3544 ltwrapper_option_prefix, argv[i]);
3545 }
3546 /* otherwise ... */
3547 newargz[++newargc] = xstrdup (argv[i]);
3548 }
3549 newargz[++newargc] = NULL;
4511 3550
4512 lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 3551 LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
4513 nonnull (lt_argv_zero));
4514 for (i = 0; i < newargc; i++) 3552 for (i = 0; i < newargc; i++)
4515 { 3553 {
4516 lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 3554 LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
4517 i, nonnull (newargz[i]));
4518 } 3555 }
4519 3556
4520EOF 3557EOF
@@ -4523,14 +3560,11 @@ EOF
4523 mingw*) 3560 mingw*)
4524 cat <<"EOF" 3561 cat <<"EOF"
4525 /* execv doesn't actually work on mingw as expected on unix */ 3562 /* execv doesn't actually work on mingw as expected on unix */
4526 newargz = prepare_spawn (newargz);
4527 rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 3563 rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
4528 if (rval == -1) 3564 if (rval == -1)
4529 { 3565 {
4530 /* failed to start process */ 3566 /* failed to start process */
4531 lt_debugprintf (__FILE__, __LINE__, 3567 LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
4532 "(main) failed to launch target \"%s\": %s\n",
4533 lt_argv_zero, nonnull (strerror (errno)));
4534 return 127; 3568 return 127;
4535 } 3569 }
4536 return rval; 3570 return rval;
@@ -4552,7 +3586,7 @@ xmalloc (size_t num)
4552{ 3586{
4553 void *p = (void *) malloc (num); 3587 void *p = (void *) malloc (num);
4554 if (!p) 3588 if (!p)
4555 lt_fatal (__FILE__, __LINE__, "memory exhausted"); 3589 lt_fatal ("Memory exhausted");
4556 3590
4557 return p; 3591 return p;
4558} 3592}
@@ -4586,8 +3620,8 @@ check_executable (const char *path)
4586{ 3620{
4587 struct stat st; 3621 struct stat st;
4588 3622
4589 lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 3623 LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n",
4590 nonempty (path)); 3624 path ? (*path ? path : "EMPTY!") : "NULL!"));
4591 if ((!path) || (!*path)) 3625 if ((!path) || (!*path))
4592 return 0; 3626 return 0;
4593 3627
@@ -4604,8 +3638,8 @@ make_executable (const char *path)
4604 int rval = 0; 3638 int rval = 0;
4605 struct stat st; 3639 struct stat st;
4606 3640
4607 lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 3641 LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n",
4608 nonempty (path)); 3642 path ? (*path ? path : "EMPTY!") : "NULL!"));
4609 if ((!path) || (!*path)) 3643 if ((!path) || (!*path))
4610 return 0; 3644 return 0;
4611 3645
@@ -4631,8 +3665,8 @@ find_executable (const char *wrapper)
4631 int tmp_len; 3665 int tmp_len;
4632 char *concat_name; 3666 char *concat_name;
4633 3667
4634 lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 3668 LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n",
4635 nonempty (wrapper)); 3669 wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
4636 3670
4637 if ((wrapper == NULL) || (*wrapper == '\0')) 3671 if ((wrapper == NULL) || (*wrapper == '\0'))
4638 return NULL; 3672 return NULL;
@@ -4685,8 +3719,7 @@ find_executable (const char *wrapper)
4685 { 3719 {
4686 /* empty path: current directory */ 3720 /* empty path: current directory */
4687 if (getcwd (tmp, LT_PATHMAX) == NULL) 3721 if (getcwd (tmp, LT_PATHMAX) == NULL)
4688 lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 3722 lt_fatal ("getcwd failed");
4689 nonnull (strerror (errno)));
4690 tmp_len = strlen (tmp); 3723 tmp_len = strlen (tmp);
4691 concat_name = 3724 concat_name =
4692 XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 3725 XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
@@ -4711,8 +3744,7 @@ find_executable (const char *wrapper)
4711 } 3744 }
4712 /* Relative path | not found in path: prepend cwd */ 3745 /* Relative path | not found in path: prepend cwd */
4713 if (getcwd (tmp, LT_PATHMAX) == NULL) 3746 if (getcwd (tmp, LT_PATHMAX) == NULL)
4714 lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 3747 lt_fatal ("getcwd failed");
4715 nonnull (strerror (errno)));
4716 tmp_len = strlen (tmp); 3748 tmp_len = strlen (tmp);
4717 concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 3749 concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
4718 memcpy (concat_name, tmp, tmp_len); 3750 memcpy (concat_name, tmp, tmp_len);
@@ -4738,9 +3770,8 @@ chase_symlinks (const char *pathspec)
4738 int has_symlinks = 0; 3770 int has_symlinks = 0;
4739 while (strlen (tmp_pathspec) && !has_symlinks) 3771 while (strlen (tmp_pathspec) && !has_symlinks)
4740 { 3772 {
4741 lt_debugprintf (__FILE__, __LINE__, 3773 LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
4742 "checking path component for symlinks: %s\n", 3774 tmp_pathspec));
4743 tmp_pathspec);
4744 if (lstat (tmp_pathspec, &s) == 0) 3775 if (lstat (tmp_pathspec, &s) == 0)
4745 { 3776 {
4746 if (S_ISLNK (s.st_mode) != 0) 3777 if (S_ISLNK (s.st_mode) != 0)
@@ -4762,9 +3793,8 @@ chase_symlinks (const char *pathspec)
4762 } 3793 }
4763 else 3794 else
4764 { 3795 {
4765 lt_fatal (__FILE__, __LINE__, 3796 char *errstr = strerror (errno);
4766 "error accessing file \"%s\": %s", 3797 lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
4767 tmp_pathspec, nonnull (strerror (errno)));
4768 } 3798 }
4769 } 3799 }
4770 XFREE (tmp_pathspec); 3800 XFREE (tmp_pathspec);
@@ -4777,8 +3807,7 @@ chase_symlinks (const char *pathspec)
4777 tmp_pathspec = realpath (pathspec, buf); 3807 tmp_pathspec = realpath (pathspec, buf);
4778 if (tmp_pathspec == 0) 3808 if (tmp_pathspec == 0)
4779 { 3809 {
4780 lt_fatal (__FILE__, __LINE__, 3810 lt_fatal ("Could not follow symlinks for %s", pathspec);
4781 "could not follow symlinks for %s", pathspec);
4782 } 3811 }
4783 return xstrdup (tmp_pathspec); 3812 return xstrdup (tmp_pathspec);
4784#endif 3813#endif
@@ -4804,25 +3833,11 @@ strendzap (char *str, const char *pat)
4804 return str; 3833 return str;
4805} 3834}
4806 3835
4807void
4808lt_debugprintf (const char *file, int line, const char *fmt, ...)
4809{
4810 va_list args;
4811 if (lt_debug)
4812 {
4813 (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
4814 va_start (args, fmt);
4815 (void) vfprintf (stderr, fmt, args);
4816 va_end (args);
4817 }
4818}
4819
4820static void 3836static void
4821lt_error_core (int exit_status, const char *file, 3837lt_error_core (int exit_status, const char *mode,
4822 int line, const char *mode,
4823 const char *message, va_list ap) 3838 const char *message, va_list ap)
4824{ 3839{
4825 fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 3840 fprintf (stderr, "%s: %s: ", program_name, mode);
4826 vfprintf (stderr, message, ap); 3841 vfprintf (stderr, message, ap);
4827 fprintf (stderr, ".\n"); 3842 fprintf (stderr, ".\n");
4828 3843
@@ -4831,32 +3846,20 @@ lt_error_core (int exit_status, const char *file,
4831} 3846}
4832 3847
4833void 3848void
4834lt_fatal (const char *file, int line, const char *message, ...) 3849lt_fatal (const char *message, ...)
4835{ 3850{
4836 va_list ap; 3851 va_list ap;
4837 va_start (ap, message); 3852 va_start (ap, message);
4838 lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 3853 lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
4839 va_end (ap); 3854 va_end (ap);
4840} 3855}
4841 3856
4842static const char *
4843nonnull (const char *s)
4844{
4845 return s ? s : "(null)";
4846}
4847
4848static const char *
4849nonempty (const char *s)
4850{
4851 return (s && !*s) ? "(empty)" : nonnull (s);
4852}
4853
4854void 3857void
4855lt_setenv (const char *name, const char *value) 3858lt_setenv (const char *name, const char *value)
4856{ 3859{
4857 lt_debugprintf (__FILE__, __LINE__, 3860 LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
4858 "(lt_setenv) setting '%s' to '%s'\n", 3861 (name ? name : "<NULL>"),
4859 nonnull (name), nonnull (value)); 3862 (value ? value : "<NULL>")));
4860 { 3863 {
4861#ifdef HAVE_SETENV 3864#ifdef HAVE_SETENV
4862 /* always make a copy, for consistency with !HAVE_SETENV */ 3865 /* always make a copy, for consistency with !HAVE_SETENV */
@@ -4901,12 +3904,95 @@ lt_extend_str (const char *orig_value, const char *add, int to_end)
4901 return new_value; 3904 return new_value;
4902} 3905}
4903 3906
3907int
3908lt_split_name_value (const char *arg, char** name, char** value)
3909{
3910 const char *p;
3911 int len;
3912 if (!arg || !*arg)
3913 return 1;
3914
3915 p = strchr (arg, (int)'=');
3916
3917 if (!p)
3918 return 1;
3919
3920 *value = xstrdup (++p);
3921
3922 len = strlen (arg) - strlen (*value);
3923 *name = XMALLOC (char, len);
3924 strncpy (*name, arg, len-1);
3925 (*name)[len - 1] = '\0';
3926
3927 return 0;
3928}
3929
3930void
3931lt_opt_process_env_set (const char *arg)
3932{
3933 char *name = NULL;
3934 char *value = NULL;
3935
3936 if (lt_split_name_value (arg, &name, &value) != 0)
3937 {
3938 XFREE (name);
3939 XFREE (value);
3940 lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
3941 }
3942
3943 lt_setenv (name, value);
3944 XFREE (name);
3945 XFREE (value);
3946}
3947
3948void
3949lt_opt_process_env_prepend (const char *arg)
3950{
3951 char *name = NULL;
3952 char *value = NULL;
3953 char *new_value = NULL;
3954
3955 if (lt_split_name_value (arg, &name, &value) != 0)
3956 {
3957 XFREE (name);
3958 XFREE (value);
3959 lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
3960 }
3961
3962 new_value = lt_extend_str (getenv (name), value, 0);
3963 lt_setenv (name, new_value);
3964 XFREE (new_value);
3965 XFREE (name);
3966 XFREE (value);
3967}
3968
3969void
3970lt_opt_process_env_append (const char *arg)
3971{
3972 char *name = NULL;
3973 char *value = NULL;
3974 char *new_value = NULL;
3975
3976 if (lt_split_name_value (arg, &name, &value) != 0)
3977 {
3978 XFREE (name);
3979 XFREE (value);
3980 lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
3981 }
3982
3983 new_value = lt_extend_str (getenv (name), value, 1);
3984 lt_setenv (name, new_value);
3985 XFREE (new_value);
3986 XFREE (name);
3987 XFREE (value);
3988}
3989
4904void 3990void
4905lt_update_exe_path (const char *name, const char *value) 3991lt_update_exe_path (const char *name, const char *value)
4906{ 3992{
4907 lt_debugprintf (__FILE__, __LINE__, 3993 LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
4908 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 3994 (name ? name : "<NULL>"),
4909 nonnull (name), nonnull (value)); 3995 (value ? value : "<NULL>")));
4910 3996
4911 if (name && *name && value && *value) 3997 if (name && *name && value && *value)
4912 { 3998 {
@@ -4925,9 +4011,9 @@ lt_update_exe_path (const char *name, const char *value)
4925void 4011void
4926lt_update_lib_path (const char *name, const char *value) 4012lt_update_lib_path (const char *name, const char *value)
4927{ 4013{
4928 lt_debugprintf (__FILE__, __LINE__, 4014 LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
4929 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4015 (name ? name : "<NULL>"),
4930 nonnull (name), nonnull (value)); 4016 (value ? value : "<NULL>")));
4931 4017
4932 if (name && *name && value && *value) 4018 if (name && *name && value && *value)
4933 { 4019 {
@@ -4937,158 +4023,11 @@ lt_update_lib_path (const char *name, const char *value)
4937 } 4023 }
4938} 4024}
4939 4025
4940EOF
4941 case $host_os in
4942 mingw*)
4943 cat <<"EOF"
4944
4945/* Prepares an argument vector before calling spawn().
4946 Note that spawn() does not by itself call the command interpreter
4947 (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
4948 ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
4949 GetVersionEx(&v);
4950 v.dwPlatformId == VER_PLATFORM_WIN32_NT;
4951 }) ? "cmd.exe" : "command.com").
4952 Instead it simply concatenates the arguments, separated by ' ', and calls
4953 CreateProcess(). We must quote the arguments since Win32 CreateProcess()
4954 interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
4955 special way:
4956 - Space and tab are interpreted as delimiters. They are not treated as
4957 delimiters if they are surrounded by double quotes: "...".
4958 - Unescaped double quotes are removed from the input. Their only effect is
4959 that within double quotes, space and tab are treated like normal
4960 characters. </