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. Let's silence the compiler warning here
to let the build pass with -Werror, too.
Signed-off-by: Thomas Huth <thuth@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
--
2.18.2
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).
> Let's silence the compiler warning here
> to let the build pass with -Werror, too.
>
> Signed-off-by: Thomas Huth <thuth@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
>
Hi
On Tue, Sep 15, 2020 at 4:57 PM Philippe Mathieu-Daudé <philmd@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ý <tgolembi@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 <thuth@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
Hi On Tue, Sep 15, 2020 at 3:49 PM Thomas Huth <thuth@redhat.com> 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. Let's silence the compiler warning here > to let the build pass with -Werror, too. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > Reviewed-by: Marc-André Lureau <marcandre.lureau@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 > -- > 2.18.2 > > > -- Marc-André Lureau
© 2016 - 2026 Red Hat, Inc.