On 8/22/2012 02:58, Yaakov (Cygwin/X) wrote: > On 2012-08-21 09:13, Jon TURNEY wrote: >> There are a also couple of other issues which prevent X server from >> compiling >> successfully with these headers, which should probably be fixed in the >> X server: >> >> DEFINE_GUID is defined in terms of GUID_SECT, which no longer exists. >> I'm not >> sure what the broken-ness referred to here is, or if it still exists... >> >> /* >> * FIXME: Headers are broken, DEFINE_GUID doesn't work correctly, >> * so we have to redefine it here. >> */ >> #ifdef DEFINE_GUID >> #undef DEFINE_GUID >> #define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) const GUID n >> GUID_SECT >> = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} >> #endif /* DEFINE_GUID */ > > According to mingw.org , GUID_SECT was only necessary for > ancient GCC versions. At a minimum, we should be able to just remove > the GUID_SECT from those defines. Unfortunately just ifndef _W64 those > defines entirely leads to link errors: > > hw/xwin/winengine.c:107: undefined reference to `_IID_IDirectDraw4' > winshaddd.o: In function `winAllocateFBShadowDD': > hw/xwin/winshaddd.c:253: undefined reference to `_IID_IDirectDraw2' > winshadddnl.o: In function `winAllocateFBShadowDDNL': > hw/xwin/winshadddnl.c:285: undefined reference to `_IID_IDirectDraw4' > winpfbdd.o: In function `winAllocateFBPrimaryDD': > hw/xwin/winpfbdd.c:89: undefined reference to `_IID_IDirectDraw2' > mingw-w64 ddraw.h already has them, though they're inlined, gcc doesn't like inlined data. DEFINE_GUID may need fixing, or at least instanced in libuuid or libddraw. I'll need to talk to to the Jacek from Wine to get a solution. >> 'Status' is used as formal parameter name in some w32api headers, but >> as a >> typename in xkbsrv.h. We wrap this in Xwindows.h to avoid conflict, > > (The difference being that mingw.org's don't use parameter > names, only types.) > These may also need cooperation from Jacek. >> but objbase.h is included outside of that wrapper when we are defining >> directdraw >> interface GUIDs, leading to a conflict in rpcdce.h > > Once we get past those, there are a few more: > > In file included from winmultiwindowwm.c:74:0: > taskbar.h:34:16: error: redefinition of ‘struct _tagpropertykey’ > /usr/include/w32api/wtypes.h:762:16: note: originally defined here > taskbar.h:37:3: error: conflicting types for ‘PROPERTYKEY’ > /usr/include/w32api/wtypes.h:765:3: note: previous declaration of > ‘PROPERTYKEY’ was here > taskbar.h:39:0: warning: "REFPROPVARIANT" redefined > /usr/include/w32api/propidl.h:266:0: note: this is the location of the > previous definition > In file included from winmultiwindowwm.c:74:0: > taskbar.h:67:1: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ > before ‘const’ > > winmultiwindowwm.c: In function ‘winSetAppID’: > winmultiwindowwm.c:2064:44: error: ‘PKEY_AppUserModel_ID’ undeclared > (first use in this function) > > This would appear to be fixable by using in > hw/xwin/taskbar.h instead of defining this stuff ourselves, but that > header is _W64-specific. > The header details are actually scrapped from MSDN.