Hi On Tue, Sep 15, 2020 at 4:57 PM Philippe Mathieu-Daudé <phi...@redhat.com> wrote:
> Cc'ing Marc-André > > On 9/15/20 1:47 PM, Thomas Huth wrote: > > When compiling QEMU with MSYS2 on Windows, there is currently the > > following error: > > > > ../qga/commands-win32.c:62:24: error: redundant redeclaration of > > 'CM_Get_DevNode_PropertyW' [-Werror=redundant-decls] > > 62 | CMAPI CONFIGRET WINAPI CM_Get_DevNode_PropertyW( > > | ^~~~~~~~~~~~~~~~~~~~~~~~ > > In file included from ../qga/commands-win32.c:26: > > C:/tools/msys64/mingw64/x86_64-w64-mingw32/include/cfgmgr32.h:840:26: > note: > > previous declaration of 'CM_Get_DevNode_PropertyW' was here > > 840 | CMAPI CONFIGRET WINAPI CM_Get_DevNode_PropertyW(DEVINST > dnDevInst, > > const DEVPROPKEY *PropertyKey, DEVPROPTYPE *PropertyType, PBYTE > PropertyBuffer, > > PULONG PropertyBufferSize, ULONG ulFlags); > > > > Seems like this protype is sometimes available in the cfgmgr32.h > > header, and sometimes not. > > This prototype is declared Since Windows Vista, but per > commit 4ac80866476 ("qga: drop < Vista compatibility") > it should be always true... So I'm confused. > > Maybe we should build with: > > QEMU_BUILD_BUG_ON(_WIN32_WINNT < 0x0600); /* Vista */ > > Commit 56cdca1d7a6 ("build-sys: build with Vista API by default") > defines it if missing... Maybe that's where this problem comes > from? (On too old includes we force them as Vista). > > It doesn't have much to do with _WIN32_WINNT version, I think The prototype was quite recently added in mingw-headers by Tomáš: commit 5ace9333fa948dd4ce73bd262aaf0df39a0cf6ef Author: Tomáš Golembiovský <tgole...@redhat.com> Date: Fri Oct 18 11:22:22 2019 +0200 include/cfgmgr32.h: add CM_Get_DevNode_PropertyW It should be fine to silence the warning as proposed here. > Let's silence the compiler warning here > > to let the build pass with -Werror, too. > > > > Signed-off-by: Thomas Huth <th...@redhat.com> > > --- > > I can take this through my "testing" tree together with some other > > MSYS2 patches if there are no objections. > > > > qga/commands-win32.c | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/qga/commands-win32.c b/qga/commands-win32.c > > index 48d8bbe649..0c3c05484f 100644 > > --- a/qga/commands-win32.c > > +++ b/qga/commands-win32.c > > @@ -57,8 +57,10 @@ DEFINE_DEVPROPKEY(qga_DEVPKEY_Device_DriverDate, > 0xa8b865dd, 0x2e3d, > > DEFINE_DEVPROPKEY(qga_DEVPKEY_Device_DriverVersion, 0xa8b865dd, 0x2e3d, > > 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 3); > > /* DEVPROP_TYPE_STRING */ > > -/* The following shoud be in cfgmgr32.h, but it isn't */ > > +/* The CM_Get_DevNode_PropertyW prototype is only sometimes in > cfgmgr32.h */ > > #ifndef CM_Get_DevNode_Property > > +#pragma GCC diagnostic push > > +#pragma GCC diagnostic ignored "-Wredundant-decls" > > CMAPI CONFIGRET WINAPI CM_Get_DevNode_PropertyW( > > DEVINST dnDevInst, > > CONST DEVPROPKEY * PropertyKey, > > @@ -68,6 +70,7 @@ CMAPI CONFIGRET WINAPI CM_Get_DevNode_PropertyW( > > ULONG ulFlags > > ); > > #define CM_Get_DevNode_Property CM_Get_DevNode_PropertyW > > +#pragma GCC diagnostic pop > > #endif > > > > #ifndef SHTDN_REASON_FLAG_PLANNED > > > > > > -- Marc-André Lureau