diff mbox series

[3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h

Message ID 20201114165137.15379-4-thuth@redhat.com
State New
Headers show
Series Fix build failures on Haiku | expand

Commit Message

Thomas Huth Nov. 14, 2020, 4:51 p.m. UTC
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(-)

Comments

Yonggang Luo Nov. 14, 2020, 4:56 p.m. UTC | #1
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
Stefan Berger Nov. 14, 2020, 11:43 p.m. UTC | #2
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
>
Thomas Huth Nov. 15, 2020, 2 p.m. UTC | #3
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
Paolo Bonzini Nov. 15, 2020, 2:34 p.m. UTC | #4
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
Thomas Huth Nov. 15, 2020, 3:18 p.m. UTC | #5
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
diff mbox series

Patch

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