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