cygwin's an option. But the issue, as it turns out, wasn't with msys - we were using CVSNT which apparently changes line endings when a file is checked out on a Windows client. That caused the problems we saw. I still think the patch is useful if there's a place that it can be applied. As I said before, I'm not an autotools expert and don't know where the fix ultimately lies -- I gave my best estimate and the ultimate fix I'll have to leave up to the experts. If the fix means using $ac_cr or $ac_cs_awk_cr somewhere, that's fine. Hopefully what I've given you is an idea of where they need to be added or used. From what I can tell, the latest in git isn't using those macros. From the link I provided (http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob;f=lib/autoconf/status.m4;hb=HEAD#l830):
/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { looks like it needs to be: /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|$ac_cs_awk_cr\$)/ { and then 2 lines below it, this needs to be added: sub(/$ac_cs_awk_cr\$/, "", line) That should allow config.status to properly process Windows-style line endings. I haven't tested it on every platform out there, so I can't say for sure that it will just work -- but please take it as a suggestion/enhancement (I understand if you prefer to discard it -- just trying to give back to the community). It would be useful if I use autotools in a Windows environment (e.g. with msys) and I'm writing files such as config.h.in using Windows-native tools (and therefore introducing Windows-style line endings). Which, consequently, is what I'll be doing. :) For now, I'll have to use dos2unix... And my apologies for any *'s being added to URLs -- our email filter does that to prevent people from clicking on potentially malicious links. -----Original Message----- From: Eric Blake [mailto:ebl...@redhat.com] Sent: Friday, September 03, 2010 9:12 AM To: Hoyt, David Cc: bug-autoconf@gnu.org Subject: Re: config.status produces incompatible defines.awk and config.h On 09/02/2010 05:30 PM, Hoyt, David wrote: > I'm unsure if this is a binutils-specific issue or not, since I'm told that > gcc-related projects use their own configuration environment. But I noticed > the following when attempting to compile binutils... > > config.h was not being created correctly on my Windows 7 (x86_64) machine > using the latest released tools from msys/mingw, causing all sorts of build > problems. After investigating the issue, it was narrowed down to a problem > with how config.status produces and then uses defines.awk. That awk file uses > a regular expression that looks for lines like "#undef VALUE_HERE" to > eventually change them to "#define VALUE_HERE 1" if configure deems it so, > but it wasn't finding them due to mismatches from Windows-style line endings. Thanks for the report. Autoconf already has some attempted support for CRLF line endings in config.status, but it has had issues over time. Which version of autoconf are you dealing with? It may be that you are facing an issue with gcc using an older version of autoconf, where upgrading to a newer version would resolve things. Also, have you considered using binary-mode mounts under cygwin, rather than text-mode mounts under msys? That right there would eliminate your CR issues, although it implies a different set of cross-compilation issues to deal with. That's probably straying outside what this list can support, but I know there are better forums out there for people who are actively working on development of gcc for various windows targets. > +++ defines.awk Thu Sep 2 15:56:01 2010 > @@ -51,8 +51,9 @@ > for (key in D) D_is_set[key] = 1 > FS = " " > } > -/^[\t ]*#[\t ]*(define|undef)[\t > ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t > (]|$)/ { > +/^[\t ]*#[\t ]*(define|undef)[\t > ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t > (]|\r$)/ { > line = $ 0 > + sub(/\r$/, "", line) As written, this patch is not portable. Rather, if the current autoconf.git does not already address the issue, then you will need to use the same approach as is already in lib/autoconf/status.m4; notice how $ac_cr and $ac_cs_awk_cr are used to find a portable spelling of CR that will work for whichever awk will be processing the define script. -- Eric Blake ebl...@redhat.com +1-801-349-2682 Libvirt virtualization library http://*libvirt.org