From 4f26f2b6f2fba52b13f4c2ad1790f46c96a0923e Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Wed, 9 Nov 2011 14:44:52 +0200 Subject: [PATCH] configure: fix detection for xattr.h on modern distributions Modern distributions place xattr.h in /usr/include/sys, and fold libattr.so into libc. They also don't have an ENOATTR. Make configure detect this, and add a qemu-xattr.h file that directs the #include to the right place. Signed-off-by: Avi Kivity Signed-off-by: Anthony Liguori --- configure | 12 ++++++++++-- hw/9pfs/virtio-9p-handle.c | 2 +- hw/9pfs/virtio-9p-local.c | 2 +- hw/9pfs/virtio-9p-posix-acl.c | 2 +- hw/9pfs/virtio-9p-xattr.h | 2 +- linux-user/syscall.c | 2 +- qemu-xattr.h | 30 ++++++++++++++++++++++++++++++ 7 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 qemu-xattr.h diff --git a/configure b/configure index 9e5da449c..401d9a6f6 100755 --- a/configure +++ b/configure @@ -129,6 +129,7 @@ xen="" xen_ctrl_version="" linux_aio="" attr="" +libattr="" xfs="" vhost_net="no" @@ -1961,12 +1962,16 @@ if test "$attr" != "no" ; then cat > $TMPC < #include -#include +#include int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } EOF - if compile_prog "" "-lattr" ; then + if compile_prog "" "" ; then + attr=yes + # Older distros have , and need -lattr: + elif sed -i s,sys/xattr,attr/xattr, $TMPC && compile_prog "" "-lattr" ; then attr=yes LIBS="-lattr $LIBS" + libattr=yes else if test "$attr" = "yes" ; then feature_not_found "ATTR" @@ -3032,6 +3037,9 @@ fi if test "$attr" = "yes" ; then echo "CONFIG_ATTR=y" >> $config_host_mak fi +if test "$libattr" = "yes" ; then + echo "CONFIG_LIBATTR=y" >> $config_host_mak +fi if test "$linux" = "yes" ; then if test "$attr" = "yes" ; then echo "CONFIG_VIRTFS=y" >> $config_host_mak diff --git a/hw/9pfs/virtio-9p-handle.c b/hw/9pfs/virtio-9p-handle.c index c38e0e786..0a778b48c 100644 --- a/hw/9pfs/virtio-9p-handle.c +++ b/hw/9pfs/virtio-9p-handle.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include "qemu-xattr.h" #include #include #ifdef CONFIG_LINUX_MAGIC_H diff --git a/hw/9pfs/virtio-9p-local.c b/hw/9pfs/virtio-9p-local.c index 782dc0ab2..7f1c0894d 100644 --- a/hw/9pfs/virtio-9p-local.c +++ b/hw/9pfs/virtio-9p-local.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include "qemu-xattr.h" #include #ifdef CONFIG_LINUX_MAGIC_H #include diff --git a/hw/9pfs/virtio-9p-posix-acl.c b/hw/9pfs/virtio-9p-posix-acl.c index f5b392e18..a1948e3af 100644 --- a/hw/9pfs/virtio-9p-posix-acl.c +++ b/hw/9pfs/virtio-9p-posix-acl.c @@ -12,7 +12,7 @@ */ #include -#include +#include "qemu-xattr.h" #include "hw/virtio.h" #include "virtio-9p.h" #include "fsdev/file-op-9p.h" diff --git a/hw/9pfs/virtio-9p-xattr.h b/hw/9pfs/virtio-9p-xattr.h index 247e414eb..9437280c9 100644 --- a/hw/9pfs/virtio-9p-xattr.h +++ b/hw/9pfs/virtio-9p-xattr.h @@ -13,7 +13,7 @@ #ifndef _QEMU_VIRTIO_9P_XATTR_H #define _QEMU_VIRTIO_9P_XATTR_H -#include +#include "qemu-xattr.h" typedef struct xattr_operations { diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 9f5da3602..f22709780 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -71,7 +71,7 @@ int __clone2(int (*fn)(void *), void *child_stack_base, #include #endif #ifdef CONFIG_ATTR -#include +#include "qemu-xattr.h" #endif #define termios host_termios diff --git a/qemu-xattr.h b/qemu-xattr.h new file mode 100644 index 000000000..f910d96ea --- /dev/null +++ b/qemu-xattr.h @@ -0,0 +1,30 @@ +/* + * Host xattr.h abstraction + * + * Copyright 2011 Red Hat Inc. and/or its affiliates + * + * Authors: + * Avi Kivity + * + * This work is licensed under the terms of the GNU GPL, version 2, or any + * later version. See the COPYING file in the top-level directory. + * + */ +#ifndef QEMU_XATTR_H +#define QEMU_XATTR_H + +/* + * Modern distributions (e.g. Fedora 15, have no libattr.so, place attr.h + * in /usr/include/sys, and don't have ENOATTR. + */ + +#include "config-host.h" + +#ifdef CONFIG_LIBATTR +# include +#else +# define ENOATTR ENODATA +# include +#endif + +#endif