Re: [WIP] mingw64 related changes to Cygwin configure and other assorted files with departed w32api/mingw
On Nov 12 22:31, Christopher Faylor wrote: On Mon, Nov 12, 2012 at 07:02:57PM -0500, Christopher Faylor wrote: On Mon, Nov 12, 2012 at 10:50:23PM +0100, Corinna Vinschen wrote: I'm a bit puzzled about the necessity of some of the changes to source files. Yaakov's Fedora 17 version of the headers is supposedly cut from the mingw64 trunk on 2012-10-16, while JonY's official headers have an upload date of 2012-10-18. They should be practically identical. Why do I not see any problems to build CVS HEAD?!? You can keep asking me this question but I don't really have an answer. Since I don't run Fedora, I'm not going to install it to figure it out. I just checked and there's no difference in the header files at all. Yaakov's version == JonY's version. Actually, an idea came to me in the thinking room that this might be due to the fact that my windows headers may not be considered to be system headers since they aren't in a preinstalled location. I know that gcc can be more lax about redefine symbols in some situations when dealing with system headers. Maybe that's it. Looks like it. The w32api headers are system headers so -isystem rather than -idirafter should show a better result without requiring any of the source file changes. Especially having to define _WIN32 in winlean.h and winsup.h looks pretty wrong. I would also like to keep the ifndef/define brackets in the headers since #ifndef _CYGWIN_IF_H_ #define _CYGWIN_IF_H_ can be tested for in other headers while #pragma once can not. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat
Re: [WIP] mingw64 related changes to Cygwin configure and other assorted files with departed w32api/mingw
On Tue, Nov 13, 2012 at 10:33:01AM +0100, Corinna Vinschen wrote: On Nov 12 22:31, Christopher Faylor wrote: On Mon, Nov 12, 2012 at 07:02:57PM -0500, Christopher Faylor wrote: On Mon, Nov 12, 2012 at 10:50:23PM +0100, Corinna Vinschen wrote: I'm a bit puzzled about the necessity of some of the changes to source files. Yaakov's Fedora 17 version of the headers is supposedly cut from the mingw64 trunk on 2012-10-16, while JonY's official headers have an upload date of 2012-10-18. They should be practically identical. Why do I not see any problems to build CVS HEAD?!? You can keep asking me this question but I don't really have an answer. Since I don't run Fedora, I'm not going to install it to figure it out. I just checked and there's no difference in the header files at all. Yaakov's version == JonY's version. Actually, an idea came to me in the thinking room that this might be due to the fact that my windows headers may not be considered to be system headers since they aren't in a preinstalled location. I know that gcc can be more lax about redefine symbols in some situations when dealing with system headers. Maybe that's it. Looks like it. The w32api headers are system headers so -isystem rather than -idirafter should show a better result without requiring any of the source file changes. Maybe I can use -isystem with ccwraper. I'd previously gotten things working without the wrapper, using idirafter so that's what I stuck with. However, the wrapper may now allow just always including the windows headers last. Especially having to define _WIN32 in winlean.h and winsup.h looks pretty wrong. I would also like to keep the ifndef/define brackets in the headers since #ifndef _CYGWIN_IF_H_ #define _CYGWIN_IF_H_ can be tested for in other headers while #pragma once can not. I think that testing for BLAH_DECLARED for individual definitions is a much better way to see if something is defined than relying on an implementation detail like _CYGWIN_IF_H. Those are not supposed to be a published interface. In theory anyone could change those to something like: #ifndef _CYGWIN_IF_INCLUDED #define _CYGWIN_IF_INCLUDED and they would have been within their rights to do that. I always felt that it was wrong to be testing for those guards, even when I was doing it. However, I won't check those changes in. cgf
Re: [WIP] mingw64 related changes to Cygwin configure and other assorted files with departed w32api/mingw
On Nov 13 12:39, Christopher Faylor wrote: On Tue, Nov 13, 2012 at 10:33:01AM +0100, Corinna Vinschen wrote: I would also like to keep the ifndef/define brackets in the headers since #ifndef _CYGWIN_IF_H_ #define _CYGWIN_IF_H_ can be tested for in other headers while #pragma once can not. I think that testing for BLAH_DECLARED for individual definitions is a much better way to see if something is defined than relying on an implementation detail like _CYGWIN_IF_H. Sure. This might not be of much interest for the headers in the include/cygwin subdir, but there are applications out there which test for such header defines, and there are also applications using system-specific headers liberally. Out of curiosity I had a look and none of the Linux/glibc headers seem to use #pragma once either for some reason. An alternative might be something like #pragma once #define _CYGWIN_IF_H_ It would introduce the new pragma and keep the definition available. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat
Re: [WIP] mingw64 related changes to Cygwin configure and other assorted files with departed w32api/mingw
On Nov 13 13:34, Christopher Faylor wrote: On Tue, Nov 13, 2012 at 12:39:00PM -0500, Christopher Faylor wrote: Maybe I can use -isystem with ccwraper. I'd previously gotten things working without the wrapper, using idirafter so that's what I stuck with. However, the wrapper may now allow just always including the windows headers last. Yep. Adding the windows headers directories dead last as -isystem means that none of my header file changes are needed, *except* for the #define _WIN32. I wonder why you don't need those. My (i.e., Yaakov's) cross compiler doesn't define _WIN32. % /cygwin/bin/i686-cygwin-gcc --version i686-cygwin-gcc (GCC) 4.5.3 20110428 (Fedora Cygwin 4.5.3-4) Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. % /cygwin/bin/i686-cygwin-gcc -dD -E -xc /dev/null | grep WIN #define __WINT_TYPE__ unsigned int #define __WINT_MAX__ 4294967295U #define __WINT_MIN__ 0U #define __SIZEOF_WINT_T__ 4 #define __CYGWIN32__ 1 #define __CYGWIN__ 1 So, except for that, mystery solved. My new, smaller diff is attached. Unless you have objections, I'll be checking this in. I have no objections against the patch in general, but I'd rather like to test it first. I'd like to try to figure out what the _WIN32 problem is first, and I'd like to give it a try in the 64 bit scenario. Thanks, Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat
Re: [WIP] mingw64 related changes to Cygwin configure and other assorted files with departed w32api/mingw
On Tue, Nov 13, 2012 at 07:47:32PM +0100, Corinna Vinschen wrote: On Nov 13 13:34, Christopher Faylor wrote: On Tue, Nov 13, 2012 at 12:39:00PM -0500, Christopher Faylor wrote: Maybe I can use -isystem with ccwraper. I'd previously gotten things working without the wrapper, using idirafter so that's what I stuck with. However, the wrapper may now allow just always including the windows headers last. Yep. Adding the windows headers directories dead last as -isystem means that none of my header file changes are needed, *except* for the #define _WIN32. I wonder why you don't need those. My (i.e., Yaakov's) cross compiler doesn't define _WIN32. % /cygwin/bin/i686-cygwin-gcc --version i686-cygwin-gcc (GCC) 4.5.3 20110428 (Fedora Cygwin 4.5.3-4) Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. % /cygwin/bin/i686-cygwin-gcc -dD -E -xc /dev/null | grep WIN #define __WINT_TYPE__ unsigned int #define __WINT_MAX__ 4294967295U #define __WINT_MIN__ 0U #define __SIZEOF_WINT_T__ 4 #define __CYGWIN32__ 1 #define __CYGWIN__ 1 So, except for that, mystery solved. My new, smaller diff is attached. Unless you have objections, I'll be checking this in. I have no objections against the patch in general, but I'd rather like to test it first. I'd like to try to figure out what the _WIN32 problem is first, and I'd like to give it a try in the 64 bit scenario. Ok, I'm thoroughly confused. I made another few unrelated changes to the wrapper script and now I don't need the _WIN32 setting either. cgf