On Wed, Jul 22, 2020 at 12:33:47PM +0100, Alex Bennée wrote: > > Stefan Weil <s...@weilnetz.de> writes: > > > Am 22.07.20 um 08:28 schrieb Alex Bennée: > > > >> It seems GetPhysicallyInstalledSystemMemory isn't available in the > >> MinGW headers so we have to declare it ourselves. Compile tested only. > > > > > > It is available, at least for Mingw-w64 which I also use for cross > > builds on Debian, but is only included with _WIN32_WINNT >= 0x0601. > > > > Currently we set _WIN32_WINNT to 0x0600. > > That would explain why some people see things working if they build with > visual studio (which I presume has a higher setting). We could just wrap > the body of the function in:
No, that's not how it works. We define _WIN32_WINNT in qemu/osdep.h, and this causes the Windows headers to hide any functions that post-date that version. This is similar to how you might set _POSIX_C_SOURCE / _XOPEN_SOURCE to control UNIX header visibility. IOW, the use of visual studio shouldn't affect it. > #if (_WIN32_WINNT >= 0x0601) > > much like in commands-win32.c? > > Of course it wouldn't even be compile tested (I used the fedora docker > image). We should probably clean up the test-mingw code to work with > both the fedora and debian-w[32|64] images. I'd just go for GlobalMemoryStatusEx like Stefan suggests. We use this in libvirt and GNULIB already and it does the job. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|