qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qga: fix build for older versions of mingw


From: Denis V. Lunev
Subject: Re: [Qemu-devel] [PATCH] qga: fix build for older versions of mingw
Date: Tue, 7 Jul 2015 23:04:20 +0300
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0

On 07/07/15 23:02, Michael Roth wrote:
Quoting Peter Maydell (2015-07-07 14:16:29)
On 7 July 2015 at 19:06, Denis V. Lunev <address@hidden> wrote:
On 07/07/15 20:13, Olga Krishtal wrote:

Peter, can you try this patch on your system?

In mingw older than mingw64-headers-4.0.2-1.el7.noarch
header ntddscsi.h can be found in include/ddk, however
compiler does not look there. This breaks the compilation.

The patch adds this directory in QEMU_INCLUDES.

Signed-off-by: Olga Krishtal <address@hidden>
---
   configure | 9 ++++++++-
   1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index 52cfe18..ada8895 100755
--- a/configure
+++ b/configure
@@ -3763,7 +3763,6 @@ if test "$usb_redir" != "no" ; then
           usb_redir="no"
       fi
   fi
-
   ##########################################
   # check if we have VSS SDK headers for win

@@ -3820,6 +3819,14 @@ if test "$mingw32" = "yes" -a "$guest_agent" !=
"no" -a "$guest_agent_with_vss"
   fi

   ##########################################
+# mingw package on Linux is quite different with different versions.
ntddscsi.h
+# can be found sys-root/mingw/include and in sys-root/mingw/include/ddk
+# Add ddk directory to lookup path automatically
+if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
+  QEMU_INCLUDES="$QEMU_INCLUDES -I`$cc -print-sysroot`/mingw/include/ddk"
+fi
+
+##########################################
   # Guest agent Window MSI  package

   if test "$guest_agent" != yes; then


actually this is a dirty hack, but we want to
know whether additional include directory help or not.
If this helps, we could think how to avoid extra
configuration option and ifdef in the code.

I agree it's a pretty nasty hack :-)

Unfortunately my build machine is going to be running
flat out processing all the last-minute pull requests.
I won't be able to test this until tomorrow at best.

I've gotten an ubuntu 14.04 mingw environment set up that I think matches yours
fairly closely, so I can give any proposed fixes a spin.

Unfortunately simply pointing to ddk/ntddscsi.h instead of ntddscsi.h
doesn't quite do it:

In file included from 
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/ntddk.h:76,
                  from 
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/ntddscsi.h:34,
                  from /home/mdroth/w/qemu4.git/qga/commands-win32.c:25:
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:1069:
 error: redefinition of ‘struct _DRIVE_LAYOUT_INFORMATION_MBR’
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:1073:
 error: redefinition of ‘struct _DRIVE_LAYOUT_INFORMATION_GPT’
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:1080:
 error: redefinition of ‘struct _PARTITION_INFORMATION_MBR’
In file included from 
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/ntddk.h:76,
                  from 
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/ntddscsi.h:34,
                  from /home/mdroth/w/qemu4.git/qga/commands-win32.c:25:
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:3575:
 error: nested redefinition of ‘enum _PARTITION_STYLE’
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:3575:
 error: redeclaration of ‘enum _PARTITION_STYLE’
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:3576:
 error: redeclaration of enumerator ‘PARTITION_STYLE_MBR’
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/winioctl.h:208:
 error: previous definition of ‘PARTITION_STYLE_MBR’ was here
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/ddk/winddk.h:3578:
 error: redeclaration of enumerator ‘PARTITION_STYLE_GPT’
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/include/winioctl.h:209:
 error: previous definition of ‘PARTITION_STYLE_GPT’ was here
...

I'm still trying to make sense of how the headers are organized but the
impression I'm getting is that stuff in ddk/ is meant for kernel code and
doesn't play very nicely with userspace headers. At some point ntddscsi.h
got moved out of ddk/ and #ifdef guards were added all over the place to
make it useable, so it seems likely we'll have to disable the feature
completely for the ddk/ntddscsi.h versions of mingw.


-- PMM




yep :( this seems so thus we need to disable it if the header is not available



reply via email to

[Prev in Thread] Current Thread [Next in Thread]