On 22 March 2017 at 13:09, Sameeh Jubran <sam...@daynix.com> wrote: > Attempting to compile qemu-ga statically as follows for Windows causes > the following error: > > Compilation: > ./configure --disable-docs --target-list=x86_64-softmmu \ > --cross-prefix=x86_64-w64-mingw32- --static \ > --enable-guest-agent-msi --with-vss-sdk=/path/to/VSSSDK72 > > make -j8 qemu-ga > > Error: > path/to/qemu/stubs/error-printf.c:7: undefined reference to > `__imp_g_test_config_vars' > collect2: error: ld returned 1 exit status > Makefile:444: recipe for target 'qemu-ga.exe' failed > make: *** [qemu-ga.exe] Error 1 > > This is caused by a bug in the pkg-config file for glib as it doesn't define > GLIB_STATIC_COMPILATION for pkg-config --static. > > Signed-off-by: Stefan Hajnoczi <stefa...@gmail.com> > Signed-off-by: Sameeh Jubran <sam...@daynix.com> > @@ -4138,7 +4138,7 @@ int main(void) { return VSS_CTX_BACKUP; } > EOF > if compile_prog "$vss_win32_include" "" ; then > guest_agent_with_vss="yes" > - QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" > + QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS $vss_win32_include" > libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ > -Wl,--enable-stdcall-fixup $libs_qga" > qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb" > else
If we need this for static glib compilation we should be adding it where we do the "test for glib and add glib related flags to the CFLAGS", not in the part of configure where we decide that we're compiling the guest agent. Also, please can we have a comment that clearly states why we need this and that we're working around a packaging bug in glib for Windows, please? thanks -- PMM