Libvirt just updated to gnulib 5b78831df03b49408676227604cf16f90dee07ac, from our previous snapshot d6397dde2e127e246e3eeb5254a21f42cac783c8.
Since doing that we see failure to build on mingw32/64 platforms due to missing ffs() function util/virrandom.c: In function 'virRandomInt': util/virrandom.c:102:30: error: implicit declaration of function 'ffs' [-Werror=implicit-function-declaration] return virRandomBits(ffs(max) - 1); ^~~ cc1: all warnings being treated as errors Reverting the following commit fixes the problem commit 2afc250c6fae929b95e8b8915b17379cd9f2e450 Author: Bruno Haible <br...@clisp.org> Date: Sun May 13 16:13:27 2018 +0200 ffs: Fix compilation error on Android. * m4/ffs.m4 (gl_FUNC_FFS): Use AC_LINK_IFELSE instead of AC_CHECK_FUNC. Prior to this commit, config.log would show the following: configure:9801: checking for ffs configure:9801: i686-w64-mingw32-gcc -o conftest.exe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 conftest.c >&5 conftest.c:91:6: warning: conflicting types for built-in function 'ffs' [-Wbuiltin-declaration-mismatch] char ffs (); ^~~ /tmp/ccJxoiLq.o: In function `main': /home/berrange/src/virt/libvirt/conftest.c:102: undefined reference to `ffs' Interestingly, it is failing to detect ffs() because it appears to be a built-in. I thought it was not supposed to exist at all on mingw ? After that gnulib change was applied for android, it now reports a warning about implicit decl, but still succeeds, presumably because its a built-in. configure:25225: checking for ffs configure:25244: i686-w64-mingw32-gcc -o conftest.exe -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 conftest.c >&5 conftest.c: In function 'main': conftest.c:199:8: warning: implicit declaration of function 'ffs' [-Wimplicit-function-declaration] return ffs(x); ^~~ configure:25244: $? = 0 configure:25253: result: yes Unfortunately, we are still missing the decl in the strings.h header file provided by gnulib. Here is the generated header: /* Find the index of the least-significant set bit. */ #if 1 # if !1 _GL_FUNCDECL_SYS (ffs, int, (int i)); # endif _GL_CXXALIAS_SYS (ffs, int, (int i)); _GL_CXXALIASWARN (ffs); #elif defined GNULIB_POSIXCHECK # undef ffs # if HAVE_RAW_DECL_FFS _GL_WARN_ON_USE (ffs, "ffs is not portable - use the ffs module"); # endif #endif 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 :|