toplevel configure.in
Nathan Sidwell
nathan@acm.org
Mon Mar 8 06:44:00 GMT 1999
Hi,
attached is a patch to the toplevel configure.in file, which fixes a problem
with trying to use --program-transform-name. I discovered that my suggested
workaround for this, (in http://egcs.cygnus.com/faq.html ), doesn't work when
/bin/sh is really bash (as it is on my linux box). The problem is that
configure.in passes on the target arguments, but has stripped one level of
escapes off this. bash clearly has a subtly different stripping algorithm than
sh. Possibly, the faq's suggestion only works in shell because it leaves bad
escapes unchanged, whereas bash removes the \. What is really needed is to
re-escape and separately enclose each argument in ' marks, so that they're not
mangled by a shell on the way.
This patch adds an additional sed filter to those applied to targargs, so that
the right things happen. It works on both bash run as sh and Solaris sh. With
this patch, the escaping I suggested in the faq becomes much simpler! I'll
submit a patch for the faq if/when this one is installed.
Enjoy
nathan
--
Dr Nathan Sidwell :: Computer Science Department :: Bristol University
You can up the bandwidth, but you can't up the speed of light
nathan@acm.org http://www.cs.bris.ac.uk/~nathan/ nathan@cs.bris.ac.uk
Mon Mar 8 13:49:17 GMT 1999 Nathan Sidwell <nathan@acm.org>
* configure.in (targargs): Reescape \ sequences.
Index: egcs/configure.in
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/configure.in,v
retrieving revision 1.33
diff -c -3 -p -r1.33 configure.in
*** configure.in 1999/02/09 21:01:13 1.33
--- configure.in 1999/03/02 09:32:29
*************** fi
*** 1050,1061 ****
# Record target_configdirs and the configure arguments in Makefile.
target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
! targargs=`echo "${arguments}" | \
sed -e 's/--no[^ ]*//' \
-e 's/--cache[a-z-]*=[^ ]*//' \
-e 's/--ho[a-z-]*=[^ ]*//' \
-e 's/--bu[a-z-]*=[^ ]*//' \
! -e 's/--ta[a-z-]*=[^ ]*//'`
# Passing a --with-cross-host argument lets the target libraries know
# whether they are being built with a cross-compiler or being built
--- 1050,1063 ----
# Record target_configdirs and the configure arguments in Makefile.
target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
! targargs=\\\'`echo "${arguments}" | \
sed -e 's/--no[^ ]*//' \
-e 's/--cache[a-z-]*=[^ ]*//' \
-e 's/--ho[a-z-]*=[^ ]*//' \
-e 's/--bu[a-z-]*=[^ ]*//' \
! -e 's/--ta[a-z-]*=[^ ]*//' \
! -e 's/\\\\/\\\\\\\\/g' \
! -e "s/[ ][ ]*/\\\\\\\' \\\\\\\'/g"`\\\'
# Passing a --with-cross-host argument lets the target libraries know
# whether they are being built with a cross-compiler or being built
More information about the Gcc-patches
mailing list