Fix the build on RHEL5, when libcap-devel is installed.
authorMichael Adam <obnox@samba.org>
Thu, 15 Nov 2007 23:45:44 +0000 (00:45 +0100)
committerMichael Adam <obnox@samba.org>
Thu, 15 Nov 2007 23:45:59 +0000 (00:45 +0100)
The /usr/include/sys/capability.h defines _LINUX_TYPES_H
which prevents /usr/include/linux/types.h from being parsed
(when included afterwards). Thus certain types are undefined
that are for instance needed in /usr/include/linux/dqblk_xfs.h.
This breaks the build of lib/sysquotas_xfs.c.

This commit adds a configure check and a workaround for this.

Michael

source/configure.in
source/lib/replace/system/capability.h

index be2b2628d9b2bfc2165a239c0888bcb9d210478f..d37e3925aa9286b320e25603f00f9025a04aba02 100644 (file)
@@ -3242,6 +3242,18 @@ AC_TRY_COMPILE([
 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
    AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
 fi
+
+AC_CACHE_CHECK([for broken RHEL5 sys/capability.h],samba_cv_BROKEN_RHEL5_SYS_CAP_HEADER,[
+AC_TRY_COMPILE([
+#ifdef HAVE_SYS_CAPABILITY_H
+#include <sys/capability.h>
+#endif
+#include <linux/types.h>
+],[__s8 i;],
+   samba_cv_BROKEN_RHEL5_SYS_CAP_HEADER=no,samba_cv_BROKEN_RHEL5_SYS_CAP_HEADER=yes)])
+if test x"$samba_cv_BROKEN_RHEL5_SYS_CAP_HEADER" = x"yes"; then
+   AC_DEFINE(BROKEN_RHEL5_SYS_CAP_HEADER,1,[Broken RHEL5 sys/capability.h])
+fi
 ;;
 esac
 
index 4fe7c8d51be9709cf2db47321f36a6bf31d91ae9..b3142371f925473c825b70b4dd2c432b9e2e926d 100644 (file)
 #define BROKEN_REDHAT_7_STATFS_WORKAROUND
 #endif
 
+#if defined(BROKEN_RHEL5_SYS_CAP_HEADER) && !defined(_LINUX_TYPES_H)
+#define BROKEN_RHEL5_SYS_CAP_HEADER_WORKAROUND
+#endif
+
 #include <sys/capability.h>
 
+#ifdef BROKEN_RHEL5_SYS_CAP_HEADER_WORKAROUND
+#undef _LINUX_TYPES_H
+#undef BROKEN_RHEL5_SYS_CAP_HEADER_WORKAROUND
+#endif
+
 #ifdef BROKEN_REDHAT_7_STATFS_WORKAROUND
 #undef _I386_STATFS_H
 #undef BROKEN_REDHAT_7_STATFS_WORKAROUND