diff mbox

[qemu-ga,v2] qga: Make qemu-ga compile statically for Windows

Message ID 20170323092211.29990-1-sameeh@daynix.com
State New
Headers show

Commit Message

Sameeh Jubran March 23, 2017, 9:22 a.m. UTC
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 <stefanha@gmail.com>
Signed-off-by: Sameeh Jubran <sameeh@daynix.com>
---
 configure | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Stefan Hajnoczi March 23, 2017, 6:21 p.m. UTC | #1
On Thu, Mar 23, 2017 at 11:22:11AM +0200, Sameeh Jubran 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 <stefanha@gmail.com>

Please remove this.  I didn't post my Signed-off-by.  Only add
Signed-off-by for someone else if they ask you to do so.

For details on Signed-off-by please read:
"11) Sign your work - the Developer's Certificate of Origin"
https://www.kernel.org/doc/Documentation/process/submitting-patches.rst

> Signed-off-by: Sameeh Jubran <sameeh@daynix.com>
> ---
>  configure | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/configure b/configure
> index b9a30cf..8210494 100755
> --- a/configure
> +++ b/configure
> @@ -3041,6 +3041,13 @@ if test "$modules" = yes; then
>      glib_modules="$glib_modules gmodule-2.0"
>  fi
>  
> +# This workaround is required due to a bug in pkg-config file for glib as it
> +# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static

Please add:

# See https://bugzilla.gnome.org/show_bug.cgi?id=780399 for the glib bug
# report.

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Sameeh Jubran March 26, 2017, 9:48 a.m. UTC | #2
On Thu, Mar 23, 2017 at 9:21 PM, Stefan Hajnoczi <stefanha@gmail.com> wrote:

> On Thu, Mar 23, 2017 at 11:22:11AM +0200, Sameeh Jubran 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 <stefanha@gmail.com>
>
> Please remove this.  I didn't post my Signed-off-by.  Only add
> Signed-off-by for someone else if they ask you to do so.
>
> For details on Signed-off-by please read:
> "11) Sign your work - the Developer's Certificate of Origin"
> https://www.kernel.org/doc/Documentation/process/submitting-patches.rst

 I added your signed off to indicate that you were involved in the
development of the patch as you are the one that suggested
this workaround in the first place. No problem I will drop it.

>
>
> > Signed-off-by: Sameeh Jubran <sameeh@daynix.com>
> > ---
> >  configure | 7 +++++++
> >  1 file changed, 7 insertions(+)
> >
> > diff --git a/configure b/configure
> > index b9a30cf..8210494 100755
> > --- a/configure
> > +++ b/configure
> > @@ -3041,6 +3041,13 @@ if test "$modules" = yes; then
> >      glib_modules="$glib_modules gmodule-2.0"
> >  fi
> >
> > +# This workaround is required due to a bug in pkg-config file for glib
> as it
> > +# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
>
> Please add:
>
> # See https://bugzilla.gnome.org/show_bug.cgi?id=780399 for the glib bug
> # report.


> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
>
I'll add them in v3, thanks for the review.
diff mbox

Patch

diff --git a/configure b/configure
index b9a30cf..8210494 100755
--- a/configure
+++ b/configure
@@ -3041,6 +3041,13 @@  if test "$modules" = yes; then
     glib_modules="$glib_modules gmodule-2.0"
 fi
 
+# This workaround is required due to a bug in pkg-config file for glib as it
+# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
+
+if test "$static" = yes -a "$mingw32" = yes; then
+    QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
+fi
+
 for i in $glib_modules; do
     if $pkg_config --atleast-version=$glib_req_ver $i; then
         glib_cflags=$($pkg_config --cflags $i)