On Wed, Sep 16, 2020 at 1:55 AM Philippe Mathieu-Daudé <f4...@amsat.org> wrote: > > On 9/15/20 7:41 PM, 罗勇刚(Yonggang Luo) wrote: > > On Wed, Sep 16, 2020 at 12:41 AM Philippe Mathieu-Daudé > > <phi...@redhat.com <mailto:phi...@redhat.com>> wrote: > >> > >> On 9/15/20 6:33 PM, Yonggang Luo wrote: > >> > error message: > >> > "cc" "-Iqga/qemu-ga.exe.p" "-Iqga" "-I../qga" "-I." "-Iqapi" > > "-Itrace" "-Iui" "-Iui/shader" "-IC:/CI-Tools/msys64/mingw64/include" > > "-IC:/CI-Tools/msys64/mingw64/include/glib-2.0" > > "-IC:/CI-Tools/msys64/mingw64/lib/glib-2.0/include" > > "-fdiagnostics-color=auto" "-pipe" "-Wall" "-Winvalid-pch" "-Werror" > > "-std=gnu99" "-g" "-m64" "-mcx16" "-D_GNU_SOURCE" > > "-D_FILE_OFFSET_BITS=64" "-D_LARGEFILE_SOURCE" "-Wstrict-prototypes" > > "-Wredundant-decls" "-Wundef" "-Wwrite-strings" "-Wmissing-prototypes" > > "-fno-strict-aliasing" "-fno-common" "-fwrapv" "-Wold-style-declaration" > > "-Wold-style-definition" "-Wtype-limits" "-Wformat-security" > > "-Wformat-y2k" "-Winit-self" "-Wignored-qualifiers" "-Wempty-body" > > "-Wnested-externs" "-Wendif-labels" "-Wexpansion-to-defined" > > "-Wno-missing-include-dirs" "-Wno-shift-negative-value" "-Wno-psabi" > > "-fstack-protector-strong" "-iquote" "/c/work/xemu/qemu/tcg/i386" > > "-iquote" "." "-iquote" "/c/work/xemu/qemu" "-iquote" > > "/c/work/xemu/qemu/accel/tcg" "-iquote" "/c/work/xemu/qemu/include" > > "-iquote" "/c/work/xemu/qemu/disas/libvixl" "-pthread" "-mms-bitfields" > > -MD -MQ qga/qemu-ga.exe.p/commands-win32.c.obj -MF > > "qga/qemu-ga.exe.p/commands-win32.c.obj.d" -o > > qga/qemu-ga.exe.p/commands-win32.c.obj "-c" ../qga/commands-win32.c -MP > >> > ../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:/CI-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); > >> > | ^~~~~~~~~~~~~~~~~~~~~~~~ > >> > cc1.exe: all warnings being treated as errors > >> > make: [Makefile.ninja:5143:qga/qemu-ga.exe.p/commands-win32.c.obj] > > 错误 1 (已忽略) > >> > > >> > This error comes from qemu configure didn't add predefined macro > > -DUNICODE -D_UNICODE in QEMU_CFLAGS, > >> > and these too macro are standard config for win32 if using windows > > wide api. > >> > > >> > in cfgmgr32.h > >> > CMAPI CONFIGRET WINAPI CM_Get_DevNode_PropertyW(DEVINST dnDevInst, > > const DEVPROPKEY *PropertyKey, DEVPROPTYPE *PropertyType, PBYTE > > PropertyBuffer, PULONG PropertyBufferSize, ULONG ulFlags); > >> > #ifdef UNICODE > >> > #define CM_Get_DevNode_Property CM_Get_DevNode_PropertyW > >> > #endif > >> > > >> > macro CM_Get_DevNode_Property defined only when UNICODE are defined. > >> > and in win32, UNICODE and _UNICODE should be defined at the same time > >> > > >> > #endif > >> > > >> > Signed-off-by: Yonggang Luo <luoyongg...@gmail.com > > <mailto:luoyongg...@gmail.com>> > >> > --- > >> > configure | 1 + > >> > 1 file changed, 1 insertion(+) > >> > > >> > diff --git a/configure b/configure > >> > index 9f141891ea..f5d661af4a 100755 > >> > --- a/configure > >> > +++ b/configure > >> > @@ -812,6 +812,7 @@ MINGW32*) > >> > mingw32="yes" > >> > hax="yes" > >> > whpx="" > >> > + QEMU_CFLAGS="-DUNICODE -D_UNICODE $QEMU_CFLAGS" > >> > >> What about declaring them in include/qemu/osdep.h > >> instead? > > That's a good idea. > > But more compiling error warns me that the windows version of qemu are > > not in a good situation. > > :) > > > On Win32, all API should call the wide version so that support for > > Unicode properly. > > But obviously the currently qemu didn't do that > > > > ``` > [...] > > ../util/qemu-sockets.c: In function 'socket_sockaddr_to_address_inet': > > C:/work/xemu/qemu/include/qapi/error.h:319:25: error: format '%s' > > expects argument of type 'char *', but argument 6 has type 'WCHAR *' > > {aka 'short unsigned int *'} [-Werror=format=] > > 319 | (fmt), ## __VA_ARGS__) > > | ^~~~~ > > ../util/qemu-sockets.c:1235:9: note: in expansion of macro 'error_setg' > > 1235 | error_setg(errp, "Cannot format numeric socket address: %s", > > | ^~~~~~~~~~ > > In file included from ../io/dns-resolver.c:26: > > ../io/dns-resolver.c: In function 'qio_dns_resolver_lookup_sync_inet': > > C:/work/xemu/qemu/include/qapi/error.h:319:25: error: format '%s' > > expects argument of type 'char *', but argument 8 has type 'WCHAR *' > > {aka 'short unsigned int *'} [-Werror=format=] > > 319 | (fmt), ## __VA_ARGS__) > > | ^~~~~ > > ../io/dns-resolver.c:93:9: note: in expansion of macro 'error_setg' > > 93 | error_setg(errp, "address resolution failed for %s:%s: %s", > > | ^~~~~~~~~~ > > cc1.exe: all warnings being treated as errors > > make: [Makefile.ninja:756:io/libio.fa.p/dns-resolver.c.obj] 错误 1 (已 > > 忽略) > > cc1.exe: all warnings being treated as errors > > make: [Makefile.ninja:697:libqemuutil.a.p/util_qemu-sockets.c.obj] 错误 > > 1 (已忽略) > > Linking static target io/libio.fa > > C:\CI-Tools\msys64\mingw64\bin\ar.exe: io/libio.fa.p/dns-resolver.c.obj: > > No such file or directory > > make: [Makefile.ninja:764:io/libio.fa] 错误 1 (已忽略) > > ../net/tap-win32.c: In function 'is_tap_win32_dev': > > ../net/tap-win32.c:62:21: error: passing argument 2 of 'RegOpenKeyExW' > > from incompatible pointer type [-Werror=incompatible-pointer-types] > > 62 | #define ADAPTER_KEY > > "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}" > > | > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > | | > > | const char * > > ../net/tap-win32.c:62:21: note: in definition of macro 'ADAPTER_KEY' > > 62 | #define ADAPTER_KEY > > "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}" > > | > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > In file included from > > C:/CI-Tools/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:76, > > from > > C:/CI-Tools/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:23, > > from C:/work/xemu/qemu/include/sysemu/os-win32.h:29, > > from C:/work/xemu/qemu/include/qemu/osdep.h:119, > > from ../net/tap-win32.c:29: > > C:/CI-Tools/msys64/mingw64/x86_64-w64-mingw32/include/winreg.h:195:57: > > note: expected 'LPCWSTR' {aka 'const short unsigned int *'} but argument > > is of type 'const char *' > > 195 | WINADVAPI LONG WINAPI RegOpenKeyExW(HKEY hKey,LPCWSTR > > lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult); > > | ~~~~~~~~^~~~~~~~ > > ../net/tap-win32.c:229:13: error: passing argument 3 of 'RegEnumKeyExW' > > from incompatible pointer type [-Werror=incompatible-pointer-types] > > 229 | enum_name, > > | ^~~~~~~~~ > > | | > > | char * > > In file included from > > C:/CI-Tools/msys64/mingw64/x86_64-w64-mingw32/include/windows.h:76, > > from > > C:/CI-Tools/msys64/mingw64/x86_64-w64-mingw32/include/winsock2.h:23, > > from C:/work/xemu/qemu/include/sysemu/os-win32.h:29, > > from C:/work/xemu/qemu/include/qemu/osdep.h:119, > > from ../net/tap-win32.c:29: > > C:/CI-Tools/msys64/mingw64/x86_64-w64-mingw32/include/winreg.h:184:70: > > note: expected 'LPWSTR' {aka 'short unsigned int *'} but argument is of > > type 'char *' > > 184 | WINADVAPI LONG WINAPI RegEnumKeyExW(HKEY hKey,DWORD > > dwIndex,LPWSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPWSTR > > lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime); > > | > > ~~~~~~~^~~~~~ > > ../net/tap-win32.c:247:13: error: passing argument 2 of 'RegOpenKeyExW' > > from incompatible pointer type [-Werror=incompatible-pointer-types] > > 247 | unit_string, > > | ^~~~~~~~~~~ > > | | > > | char * > > I'm not sure fixing all these warnings would produce a > maintainable code base. I'd rather disable these 2 warning > classes on Windows. I agree with that, seems QEMU currently are calling ANSI api all the time, better not change that, so globally define -DUNICODE -D_UNICODE is not a option
-- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo