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 <th...@redhat.com>

Reviewed-by: Stefan Berger <stef...@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



Reply via email to