On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>.
Add a proper check for this header to our configure scripts, and
make sure to include the header in tpm_ioctl.h to fix a build failure
on Solaris and Haiku.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
backends/tpm/tpm_ioctl.h | 4 ++++
configure | 11 ++++++++++-
nbd/nbd-internal.h | 2 +-
3 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h
index f5f5c553a9..bd6c12cb86 100644
--- a/backends/tpm/tpm_ioctl.h
+++ b/backends/tpm/tpm_ioctl.h
@@ -12,6 +12,10 @@
#include <sys/uio.h>
#include <sys/ioctl.h>
+#ifdef HAVE_SYS_IOCCOM_H
+#include <sys/ioccom.h>
+#endif
+
/*
* Every response from a command involving a TPM command execution must hold
* the ptm_res as the first element.
diff --git a/configure b/configure
index c0acda164d..764e903748 100755
--- a/configure
+++ b/configure
@@ -3123,6 +3123,13 @@ if check_include "sys/signal.h" ; then
have_sys_signal_h=yes
fi
+#########################################
+# sys/ioccom.h check
+have_sys_ioccom_h=no
+if check_include "sys/ioccom.h" ; then
+ have_sys_ioccom_h=yes
+fi
+
##########################################
# VTE probe
@@ -6214,7 +6221,9 @@ fi
if test "$have_sys_signal_h" = "yes" ; then
echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak
fi
-
+if test "$have_sys_ioccom_h" = "yes" ; then
+ echo "HAVE_SYS_IOCCOM_H=y" >> $config_host_mak
+fi
# Work around a system header bug with some kernel/XFS header
# versions where they both try to define 'struct fsxattr':
# xfs headers will not try to redefine structs from linux headers
diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h
index 60629ef160..1b2141ab4b 100644
--- a/nbd/nbd-internal.h
+++ b/nbd/nbd-internal.h
@@ -19,7 +19,7 @@
#ifndef _WIN32
#include <sys/ioctl.h>
#endif
-#if defined(__sun__) || defined(__HAIKU__)
+#ifdef HAVE_SYS_IOCCOM_H
#include <sys/ioccom.h>
#endif
--
2.18.4
Can we check this in meson.build?
On Sun, Nov 15, 2020 at 12:53 AM Thomas Huth <thuth@redhat.com> wrote:
>
> On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>.
> Add a proper check for this header to our configure scripts, and
> make sure to include the header in tpm_ioctl.h to fix a build failure
> on Solaris and Haiku.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> backends/tpm/tpm_ioctl.h | 4 ++++
> configure | 11 ++++++++++-
> nbd/nbd-internal.h | 2 +-
> 3 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h
> index f5f5c553a9..bd6c12cb86 100644
> --- a/backends/tpm/tpm_ioctl.h
> +++ b/backends/tpm/tpm_ioctl.h
> @@ -12,6 +12,10 @@
> #include <sys/uio.h>
> #include <sys/ioctl.h>
>
> +#ifdef HAVE_SYS_IOCCOM_H
> +#include <sys/ioccom.h>
> +#endif
> +
> /*
> * Every response from a command involving a TPM command execution must
hold
> * the ptm_res as the first element.
> diff --git a/configure b/configure
> index c0acda164d..764e903748 100755
> --- a/configure
> +++ b/configure
> @@ -3123,6 +3123,13 @@ if check_include "sys/signal.h" ; then
> have_sys_signal_h=yes
> fi
>
> +#########################################
> +# sys/ioccom.h check
> +have_sys_ioccom_h=no
> +if check_include "sys/ioccom.h" ; then
> + have_sys_ioccom_h=yes
> +fi
> +
> ##########################################
> # VTE probe
>
> @@ -6214,7 +6221,9 @@ fi
> if test "$have_sys_signal_h" = "yes" ; then
> echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak
> fi
> -
> +if test "$have_sys_ioccom_h" = "yes" ; then
> + echo "HAVE_SYS_IOCCOM_H=y" >> $config_host_mak
> +fi
> # Work around a system header bug with some kernel/XFS header
> # versions where they both try to define 'struct fsxattr':
> # xfs headers will not try to redefine structs from linux headers
> diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h
> index 60629ef160..1b2141ab4b 100644
> --- a/nbd/nbd-internal.h
> +++ b/nbd/nbd-internal.h
> @@ -19,7 +19,7 @@
> #ifndef _WIN32
> #include <sys/ioctl.h>
> #endif
> -#if defined(__sun__) || defined(__HAIKU__)
> +#ifdef HAVE_SYS_IOCCOM_H
> #include <sys/ioccom.h>
> #endif
>
> --
> 2.18.4
>
>
--
此致
礼
罗勇刚
Yours
sincerely,
Yonggang Luo
On 14/11/2020 17.56, 罗勇刚(Yonggang Luo) wrote: > Can we check this in meson.build? That would be nicer, indeed, but I did not spot a place where I could add my code there ... all the other HAVE_xxx_H symbols are added in the configure script. Maybe Paolo or Marc-André (now on CC:) have an idea whether it could be done easily in meson.build?, too? Thomas > On Sun, Nov 15, 2020 at 12:53 AM Thomas Huth <thuth@redhat.com > <mailto:thuth@redhat.com>> wrote: >> >> On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>. >> Add a proper check for this header to our configure scripts, and >> make sure to include the header in tpm_ioctl.h to fix a build failure >> on Solaris and Haiku. >> >> Signed-off-by: Thomas Huth <thuth@redhat.com <mailto:thuth@redhat.com>> >> --- >> backends/tpm/tpm_ioctl.h | 4 ++++ >> configure | 11 ++++++++++- >> nbd/nbd-internal.h | 2 +- >> 3 files changed, 15 insertions(+), 2 deletions(-) >> >> diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h >> index f5f5c553a9..bd6c12cb86 100644 >> --- a/backends/tpm/tpm_ioctl.h >> +++ b/backends/tpm/tpm_ioctl.h >> @@ -12,6 +12,10 @@ >> #include <sys/uio.h> >> #include <sys/ioctl.h> >> >> +#ifdef HAVE_SYS_IOCCOM_H >> +#include <sys/ioccom.h> >> +#endif >> + >> /* >> * Every response from a command involving a TPM command execution must hold >> * the ptm_res as the first element. >> diff --git a/configure b/configure >> index c0acda164d..764e903748 100755 >> --- a/configure >> +++ b/configure >> @@ -3123,6 +3123,13 @@ if check_include "sys/signal.h" ; then >> have_sys_signal_h=yes >> fi >> >> +######################################### >> +# sys/ioccom.h check >> +have_sys_ioccom_h=no >> +if check_include "sys/ioccom.h" ; then >> + have_sys_ioccom_h=yes >> +fi >> + >> ########################################## >> # VTE probe >> >> @@ -6214,7 +6221,9 @@ fi >> if test "$have_sys_signal_h" = "yes" ; then >> echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak >> fi >> - >> +if test "$have_sys_ioccom_h" = "yes" ; then >> + echo "HAVE_SYS_IOCCOM_H=y" >> $config_host_mak >> +fi >> # Work around a system header bug with some kernel/XFS header >> # versions where they both try to define 'struct fsxattr': >> # xfs headers will not try to redefine structs from linux headers >> diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h >> index 60629ef160..1b2141ab4b 100644 >> --- a/nbd/nbd-internal.h >> +++ b/nbd/nbd-internal.h >> @@ -19,7 +19,7 @@ >> #ifndef _WIN32 >> #include <sys/ioctl.h> >> #endif >> -#if defined(__sun__) || defined(__HAIKU__) >> +#ifdef HAVE_SYS_IOCCOM_H >> #include <sys/ioccom.h> >> #endif >> >> -- >> 2.18.4 >> >> > > > -- > 此致 > 礼 > 罗勇刚 > Yours > sincerely, > Yonggang Luo
On 15/11/20 15:00, Thomas Huth wrote:
> On 14/11/2020 17.56, 罗勇刚(Yonggang Luo) wrote:
>> Can we check this in meson.build?
>
> That would be nicer, indeed, but I did not spot a place where I could add my
> code there ... all the other HAVE_xxx_H symbols are added in the configure
> script.
There is one similar test, it was split in two:
has_gettid = cc.has_function('gettid')
...
config_host_data.set('CONFIG_GETTID', has_gettid)
but there's no particular reason for that. You can just add
config_host_data.set('HAVE_SYS_IOCCOM_H', cc.has_headers('sys/ioccom.h'))
in the config-host.h section of meson.build?.
Paolo
>> On Sun, Nov 15, 2020 at 12:53 AM Thomas Huth <thuth@redhat.com
>> <mailto:thuth@redhat.com>> wrote:
>>>
>>> On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>.
>>> Add a proper check for this header to our configure scripts, and
>>> make sure to include the header in tpm_ioctl.h to fix a build failure
>>> on Solaris and Haiku.
>>>
>>> Signed-off-by: Thomas Huth <thuth@redhat.com <mailto:thuth@redhat.com>>
>>> +#########################################
>>> +# sys/ioccom.h check
>>> +have_sys_ioccom_h=no
>>> +if check_include "sys/ioccom.h" ; then
>>> + have_sys_ioccom_h=yes
>>> +fi
Paolo
On 15/11/2020 15.34, Paolo Bonzini wrote:
> On 15/11/20 15:00, Thomas Huth wrote:
>> On 14/11/2020 17.56, 罗勇刚(Yonggang Luo) wrote:
>>> Can we check this in meson.build?
>>
>> That would be nicer, indeed, but I did not spot a place where I could add my
>> code there ... all the other HAVE_xxx_H symbols are added in the configure
>> script.
>
> There is one similar test, it was split in two:
>
> has_gettid = cc.has_function('gettid')
> ...
> config_host_data.set('CONFIG_GETTID', has_gettid)
>
> but there's no particular reason for that. You can just add
>
> config_host_data.set('HAVE_SYS_IOCCOM_H', cc.has_headers('sys/ioccom.h'))
>
> in the config-host.h section of meson.build?.
Thanks, that seems to do the job! I'll send a v2 with that change (and try
to come up with another patch that converts the other header checks from the
configure script to meson).
Thomas
On 11/14/20 11:51 AM, Thomas Huth wrote: > On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>. > Add a proper check for this header to our configure scripts, and > make sure to include the header in tpm_ioctl.h to fix a build failure > on Solaris and Haiku. > > Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> > --- > backends/tpm/tpm_ioctl.h | 4 ++++ > configure | 11 ++++++++++- > nbd/nbd-internal.h | 2 +- > 3 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h > index f5f5c553a9..bd6c12cb86 100644 > --- a/backends/tpm/tpm_ioctl.h > +++ b/backends/tpm/tpm_ioctl.h > @@ -12,6 +12,10 @@ > #include <sys/uio.h> > #include <sys/ioctl.h> > > +#ifdef HAVE_SYS_IOCCOM_H > +#include <sys/ioccom.h> > +#endif > + > /* > * Every response from a command involving a TPM command execution must hold > * the ptm_res as the first element. > diff --git a/configure b/configure > index c0acda164d..764e903748 100755 > --- a/configure > +++ b/configure > @@ -3123,6 +3123,13 @@ if check_include "sys/signal.h" ; then > have_sys_signal_h=yes > fi > > +######################################### > +# sys/ioccom.h check > +have_sys_ioccom_h=no > +if check_include "sys/ioccom.h" ; then > + have_sys_ioccom_h=yes > +fi > + > ########################################## > # VTE probe > > @@ -6214,7 +6221,9 @@ fi > if test "$have_sys_signal_h" = "yes" ; then > echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak > fi > - > +if test "$have_sys_ioccom_h" = "yes" ; then > + echo "HAVE_SYS_IOCCOM_H=y" >> $config_host_mak > +fi > # Work around a system header bug with some kernel/XFS header > # versions where they both try to define 'struct fsxattr': > # xfs headers will not try to redefine structs from linux headers > diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h > index 60629ef160..1b2141ab4b 100644 > --- a/nbd/nbd-internal.h > +++ b/nbd/nbd-internal.h > @@ -19,7 +19,7 @@ > #ifndef _WIN32 > #include <sys/ioctl.h> > #endif > -#if defined(__sun__) || defined(__HAIKU__) > +#ifdef HAVE_SYS_IOCCOM_H > #include <sys/ioccom.h> > #endif >
On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>.
Add a proper check for this header to our build system, and make sure
to include the header in tpm_ioctl.h to fix a build failure on Solaris
and Haiku.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
v2: Check in meson.build instead of using the configure script
backends/tpm/tpm_ioctl.h | 4 ++++
meson.build | 2 ++
nbd/nbd-internal.h | 2 +-
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h
index f5f5c553a9..bd6c12cb86 100644
--- a/backends/tpm/tpm_ioctl.h
+++ b/backends/tpm/tpm_ioctl.h
@@ -12,6 +12,10 @@
#include <sys/uio.h>
#include <sys/ioctl.h>
+#ifdef HAVE_SYS_IOCCOM_H
+#include <sys/ioccom.h>
+#endif
+
/*
* Every response from a command involving a TPM command execution must hold
* the ptm_res as the first element.
diff --git a/meson.build b/meson.build
index 61d883bc07..be85f70e4c 100644
--- a/meson.build
+++ b/meson.build
@@ -789,6 +789,8 @@ config_host_data.set('QEMU_VERSION_MAJOR', meson.project_version().split('.')[0]
config_host_data.set('QEMU_VERSION_MINOR', meson.project_version().split('.')[1])
config_host_data.set('QEMU_VERSION_MICRO', meson.project_version().split('.')[2])
+config_host_data.set('HAVE_SYS_IOCCOM_H', cc.has_header('sys/ioccom.h'))
+
ignored = ['CONFIG_QEMU_INTERP_PREFIX'] # actually per-target
arrays = ['CONFIG_AUDIO_DRIVERS', 'CONFIG_BDRV_RW_WHITELIST', 'CONFIG_BDRV_RO_WHITELIST']
strings = ['HOST_DSOSUF', 'CONFIG_IASL']
diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h
index 60629ef160..1b2141ab4b 100644
--- a/nbd/nbd-internal.h
+++ b/nbd/nbd-internal.h
@@ -19,7 +19,7 @@
#ifndef _WIN32
#include <sys/ioctl.h>
#endif
-#if defined(__sun__) || defined(__HAIKU__)
+#ifdef HAVE_SYS_IOCCOM_H
#include <sys/ioccom.h>
#endif
--
2.18.4
On 11/15/20 4:23 PM, Thomas Huth wrote: > On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>. > Add a proper check for this header to our build system, and make sure > to include the header in tpm_ioctl.h to fix a build failure on Solaris > and Haiku. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > v2: Check in meson.build instead of using the configure script > > backends/tpm/tpm_ioctl.h | 4 ++++ > meson.build | 2 ++ > nbd/nbd-internal.h | 2 +- > 3 files changed, 7 insertions(+), 1 deletion(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
© 2016 - 2026 Red Hat, Inc.