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 <basetyps.h>, 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'
'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 <rpc*.h> don't use parameter
names, only types.)
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 <propkey.h> in
hw/xwin/taskbar.h instead of defining this stuff ourselves, but that
header is _W64-specific.
Yaakov