On 21/08/2012 05:47, JonY wrote: > On 8/21/2012 11:46, Christopher Faylor wrote: >> On Tue, Aug 21, 2012 at 11:31:23AM +0800, JonY wrote: >>> On 8/21/2012 10:23, JonY wrote: >>>> On 8/21/2012 09:15, JonY wrote: >>>>> On 8/21/2012 07:22, Yaakov (Cygwin/X) wrote: >>>>>> On 2012-08-20 07:15, JonY wrote: >>>>>> So I built this from SVN trunk myself, and xorg-server still FTBFS: >>>>>> >>>>>> In file included from /usr/include/w32api/windows.h:69:0, >>>>>> from /usr/include/X11/Xwindows.h:60, >>>>>> from ../../../hw/xwin/winms.h:42, >>>>>> from ../../../hw/xwin/win.h:193, >>>>>> from winpriv.c:10: >>>>>> /usr/include/w32api/windef.h:107:13: error: conflicting types for 'BOOL' >>>>>> /usr/include/X11/Xmd.h:143:16: note: previous declaration of 'BOOL' was >>> >>> Yaakov, try this change: >>> >>> Index: include/windef.h >>> =================================================================== >>> --- include/windef.h (revision 5374) >>> +++ include/windef.h (working copy) >>> @@ -101,6 +101,7 @@ >>> #ifndef _DEF_WINBOOL_ >>> #define _DEF_WINBOOL_ >>> typedef int WINBOOL; >>> +#ifndef XFree86Server /* For xorg-server */ >>> #pragma push_macro("BOOL") >>> #undef BOOL >>> #if !defined(__OBJC__) && !defined(__OBJC_BOOL) && >>> !defined(__objc_INCLUDE_GNU) >>> @@ -110,6 +111,7 @@ >>> typedef BOOL *PBOOL; >>> typedef BOOL *LPBOOL; >>> #pragma pop_macro("BOOL") >>> +#endif /* XFree86Server */ >>> #endif /* _DEF_WINBOOL_ */ >>> >>> I'm not sure if things will explode horribly. >> >> Maybe this is just a sanity check/proof of concept thing but do we >> really want to have specific ifdef's like this in shipping headers? >> That would suggest a neverending cascade of ifdefs. >> >> If we really need something like this then I'd suggest something more >> generic like a #ifdef __PROTECT_PROTECT_BOOL_MACRO. > > yeah, it is just a proof of concept, it is copied from the existing > w32api package. If this works, I'll talk to Kai about untangling the ifdefs.
I've never been really sure what historical accidents are behind the #ifdef XFree86Server in w32api. It doesn't do anything useful, since in the X server, windows header files are always included via a header which wraps them to avoid name collisions [1], which carefully arranges for XFree86Server to be undefined. [1] http://cgit.freedesktop.org/xorg/proto/xproto/tree/Xwindows.h