use kern.cp_times sysctl for FreeBSD smp support
[collectd.git] / configure.in
index 415ddd7..c3fc8d7 100644 (file)
@@ -262,6 +262,22 @@ AC_CHECK_HEADERS(sys/sysctl.h, [], [],
 #endif
 ])
 
+AC_MSG_CHECKING([for sysctl kern.cp_times])
+if test -x /sbin/sysctl
+then
+       /sbin/sysctl kern.cp_times > /dev/null
+       if test $? -eq 0
+       then
+               AC_MSG_RESULT([yes])
+               AC_DEFINE(HAVE_SYSCTL_KERN_CP_TIMES, 1,
+               [Define if sysctl supports kern.cp_times])
+       else
+               AC_MSG_RESULT([no])
+       fi
+else
+       AC_MSG_RESULT([no])
+fi
+
 # For hddtemp module
 AC_CHECK_HEADERS(linux/major.h libgen.h)
 
@@ -1467,29 +1483,32 @@ SAVE_CPPFLAGS="$CPPFLAGS"
 SAVE_LDFLAGS="$LDFLAGS"
 CPPFLAGS="$CPPFLAGS $LIBIPTC_CPPFLAGS"
 LDFLAGS="$LDFLAGS $LIBIPTC_LDFLAGS"
-if test "x$with_libiptc" = "xyes"
+# check whether the header file for libiptc is available.
+if test "x$with_libiptc" = "xyes" && test "x$with_own_libiptc" = "xno"
 then
-       AC_CHECK_HEADERS(linux/netfilter_ipv4/ip_tables.h linux/netfilter_ipv6/ip6_tables.h, [],
+       AC_CHECK_HEADERS(libiptc/libiptc.h,
        [
-               with_libiptc="no (Linux iptables headers not found)"
-               with_own_libiptc="no"
+               AC_DEFINE(HAVE_LIBIPTC_LIBIPTC_H, 1, [Define to 1 if you have the <libiptc/libiptc.h> header file.])
        ],
        [
-#include "$srcdir/src/owniptc/ipt_kernel_headers.h"
+               with_libiptc="yes"
+               with_own_libiptc="yes"
        ])
-
 fi
 if test "x$with_libiptc" = "xyes" && test "x$with_own_libiptc" = "xno"
 then
-       AC_CHECK_HEADERS(libiptc/libiptc.h,
+       AC_CHECK_HEADERS(libiptc/libip6tc.h,
        [
-               AC_DEFINE(HAVE_LIBIPTC_LIBIPTC_H, 1, [Define to 1 if you have the <libiptc/libiptc.h> header file.])
+               AC_DEFINE(HAVE_LIBIPTC_LIBIP6TC_H, 1, [Define to 1 if you have the <libiptc/libip6tc.h> header file.])
        ],
        [
                with_libiptc="yes"
                with_own_libiptc="yes"
        ])
 fi
+# If the header file is available, check for the required type declaractions.
+# They may be missing in old versions of libiptc. In that case, they will be
+# declared in the iptables plugin.
 if test "x$with_libiptc" = "xyes" && test "x$with_own_libiptc" = "xno"
 then
        AC_CHECK_TYPES([iptc_handle_t, ip6tc_handle_t], [], [],
@@ -1503,6 +1522,7 @@ then
 #endif
        ])
 fi
+# Check for the iptc_init symbol in the library.
 if test "x$with_libiptc" = "xyes" && test "x$with_own_libiptc" = "xno"
 then
        AC_CHECK_LIB(iptc, iptc_init,
@@ -1514,6 +1534,19 @@ then
                with_own_libiptc="yes"
        ])
 fi
+# The system wide version failed for some reason. Check if we have the required
+# headers to build the shipped version.
+if test "x$with_libiptc" = "xyes" && test "x$with_own_libiptc" = "xyes"
+then
+       AC_CHECK_HEADERS(linux/netfilter_ipv4/ip_tables.h linux/netfilter_ipv6/ip6_tables.h linux/netfilter/x_tables.h, [],
+       [
+               with_libiptc="no (Linux iptables headers not found)"
+               with_own_libiptc="no"
+       ],
+       [
+#include "$srcdir/src/owniptc/ipt_kernel_headers.h"
+       ])
+fi
 AM_CONDITIONAL(BUILD_WITH_LIBIPTC, test "x$with_libiptc" = "xyes")
 AM_CONDITIONAL(BUILD_WITH_OWN_LIBIPTC, test "x$with_own_libiptc" = "xyes")
 if test "x$with_libiptc" = "xyes"