Message ID | 1436289212-14756-1-git-send-email-okrishtal@parallels.com |
---|---|
State | New |
Headers | show |
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 <okrishtal@parallels.com> > --- > 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. Den
On 7 July 2015 at 19:06, Denis V. Lunev <den-lists@parallels.com> 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 <okrishtal@parallels.com> >> --- >> 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. -- PMM
Quoting Peter Maydell (2015-07-07 14:16:29) > On 7 July 2015 at 19:06, Denis V. Lunev <den-lists@parallels.com> 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 <okrishtal@parallels.com> > >> --- > >> 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 >
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 <den-lists@parallels.com> 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 <okrishtal@parallels.com> >>>> --- >>>> 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
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
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 <okrishtal@parallels.com> --- configure | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)