diff --git a/configure.ac b/configure.ac
index 49baf0a35f323613e880e439f37af733bdced802..feed08538de15a5cbfd0721f3ac293b765b38a92 100644 (file)
--- a/configure.ac
+++ b/configure.ac
[have_capability="yes"],
[have_capability="no (<sys/capability.h> not found)"])
if test "x$have_capability" = "xyes"; then
-AC_CHECK_LIB(cap, cap_get_bound,
+AC_CHECK_LIB(cap, cap_get_proc,
[have_capability="yes"],
- [have_capability="no (cap_get_bound() not found)"])
+ [have_capability="no (cap_get_proc() not found)"])
fi
if test "x$have_capability" = "xyes"; then
- AC_DEFINE(HAVE_CAPABILITY, 1, [Define to 1 if you have cap_get_bound() (-lcap).])
+AC_CHECK_DECL([CAP_IS_SUPPORTED],
+ [have_capability="yes"],
+ [have_capability="no (CAP_IS_SUPPORTED not found)"],
+ [[#include <sys/capability.h>]])
+fi
+if test "x$have_capability" = "xyes"; then
+ AC_DEFINE(HAVE_CAPABILITY, 1, [Define to 1 if you have cap_get_proc() (-lcap).])
fi
AM_CONDITIONAL(BUILD_WITH_CAPABILITY, test "x$have_capability" = "xyes")
fi
# }}} Check for strptime
+# Check for timegm {{{
+
+# These checks need -Werror because implicit function declarations are only a
+# warning ...
+SAVE_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -Werror"
+
+AC_CACHE_CHECK([for timegm],
+ [c_cv_have_timegm],
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+[[[
+#if STRPTIME_NEEDS_STANDARDS
+# ifndef _ISOC99_SOURCE
+# define _ISOC99_SOURCE 1
+# endif
+# ifndef _POSIX_C_SOURCE
+# define _POSIX_C_SOURCE 200112L
+# endif
+# ifndef _XOPEN_SOURCE
+# define _XOPEN_SOURCE 500
+# endif
+#endif
+#include <time.h>
+]]],
+[[[
+ time_t t = timegm(&(struct tm){0});
+ if (t == ((time_t) -1)) {
+ return 1;
+ }
+]]]
+ )],
+ [c_cv_have_timegm="yes"],
+ [c_cv_have_timegm="no"]
+ )
+)
+
+if test "x$c_cv_have_timegm" != "xyes"
+then
+ AC_CACHE_CHECK([for timegm with _BSD_SOURCE],
+ [c_cv_have_timegm_bsd],
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+[[[
+#if STRPTIME_NEEDS_STANDARDS
+# ifndef _ISOC99_SOURCE
+# define _ISOC99_SOURCE 1
+# endif
+# ifndef _POSIX_C_SOURCE
+# define _POSIX_C_SOURCE 200112L
+# endif
+# ifndef _XOPEN_SOURCE
+# define _XOPEN_SOURCE 500
+# endif
+#endif
+#ifndef _BSD_SOURCE
+# define _BSD_SOURCE 1
+#endif
+#include <time.h>
+]]],
+[[[
+ time_t t = timegm(&(struct tm){0});
+ if (t == ((time_t) -1)) {
+ return 1;
+ }
+]]]
+ )],
+ [c_cv_have_timegm_bsd="yes"
+ c_cv_have_timegm="yes"],
+ [c_cv_have_timegm_bsd="no"]
+ )
+ )
+fi
+
+if test "x$c_cv_have_timegm" = "xyes"
+then
+ AC_DEFINE(HAVE_TIMEGM, 1, [Define if the timegm(3) function is available.])
+ if test "x$c_cv_have_timegm_bsd" = "xyes"
+ then
+ AC_DEFINE(TIMEGM_NEEDS_BSD, 1, [Set to true if timegm is only exported in BSD mode.])
+ fi
+fi
+
+CFLAGS="$SAVE_CFLAGS"
+# }}} Check for timegm
+
AC_CHECK_FUNCS(swapctl, [have_swapctl="yes"], [have_swapctl="no"])
if test "x$have_swapctl" = "xyes"; then
AC_CACHE_CHECK([whether swapctl takes two arguments],
# }}}
# --with-libdpdk {{{
-AC_ARG_WITH(libdpdk, [AS_HELP_STRING([--with-libdpdk@<:@=PREFIX@:>@], [Path to the DPDK build directory.])],
-[
- if test "x$withval" != "xno" && test "x$withval" != "xyes"
- then
- RTE_BUILD="$withval"
- with_libdpdk="yes"
- else
- RTE_BUILD="/usr"
- with_libdpdk="$withval"
- fi
- DPDK_INCLUDE="$RTE_BUILD/include"
- DPDK_LIB_DIR="$RTE_BUILD/lib"
- FOUND_DPDK=yes
-], [with_libdpdk="no"])
+AC_ARG_VAR([LIBDPDK_CPPFLAGS], [Preprocessor flags for libdpdk])
+AC_ARG_VAR([LIBDPDK_LDFLAGS], [Linker flags for libdpdk])
-if test "x$with_libdpdk" = "xyes"
-then
- LOCAL_DPDK_INSTALL="no"
- AC_CHECK_HEADER([$DPDK_INCLUDE/rte_config.h], [LOCAL_DPDK_INSTALL=yes],
- [AC_CHECK_HEADER([$DPDK_INCLUDE/dpdk/rte_config.h],
- [],
- [FOUND_DPDK=no], [])], [])
+AC_ARG_WITH([libdpdk], [AS_HELP_STRING([--without-libdpdk], [Disable libdpdk.])])
- if test "x$LOCAL_DPDK_INSTALL" = "xno"
- then
- DPDK_INCLUDE=$DPDK_INCLUDE/dpdk
- fi
-
- if test "x$FOUND_DPDK" = "xno"
+if test "x$with_libdpdk" != "xno"
+then
+ if test "x$LIBDPDK_CPPFLAGS" = "x"
then
- AC_MSG_ERROR([libdpdk error: rte_config.h not found])
+ LIBDPDK_CPPFLAGS="-I/usr/include/dpdk"
fi
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$LIBDPDK_CPPFLAGS $CPPFLAGS"
+ AC_CHECK_HEADERS([rte_config.h],
+ [with_libdpdk="yes"],
+ [with_libdpdk="no (rte_config.h not found)"]
+ )
+ CPPFLAGS="$SAVE_CPPFLAGS"
fi
if test "x$with_libdpdk" = "xyes"
then
SAVE_LDFLAGS="$LDFLAGS"
-
- if test "x$LOCAL_DPDK_INSTALL" != "xyes"
- then
- LDFLAGS="$LDFLAGS -L$DPDK_LIB_DIR"
- fi
-
- AC_CHECK_LIB(dpdk, rte_eal_init,
- [BUILD_WITH_DPDK_LIBS="-Wl,-ldpdk"],
- [FOUND_DPDK=no])
-
+ LDFLAGS="$LIBDPDK_LDFLAGS $LDFLAGS"
+ AC_CHECK_LIB([dpdk], [rte_eal_init],
+ [with_libdpdk="yes"],
+ [with_libdpdk="no (symbol 'rte_eal_init' not found)"]
+ )
LDFLAGS="$SAVE_LDFLAGS"
- if test "x$FOUND_DPDK" = "xno"
- then
- AC_MSG_ERROR([libdpdk error: cannot link with dpdk in $DPDK_LIB_DIR])
- fi
fi
-#
-# Note: An issue on Ubuntu 14.04 necessitates the use of -Wl,--no-as-needed:
-# If you try compile with the older linker, the dpdk symbols will be undefined.
-# This workaround should be removed when no longer necessary.
-#
-if test "x$with_libdpdk" = "xyes"
-then
- BUILD_WITH_DPDK_CFLAGS+="-I$DPDK_INCLUDE"
- if test "x$LOCAL_DPDK_INSTALL" != "xyes"
- then
- BUILD_WITH_DPDK_LDFLAGS="-Wl,--no-as-needed"
- else
- BUILD_WITH_DPDK_LDFLAGS="-L$DPDK_LIB_DIR -Wl,--no-as-needed"
- fi
- AC_SUBST(BUILD_WITH_DPDK_CFLAGS)
- AC_SUBST(BUILD_WITH_DPDK_LDFLAGS)
- AC_SUBST(BUILD_WITH_DPDK_LIBS)
-fi
# }}}
# --with-java {{{
if test "x$with_liblua" = "xyes"
then
- SAVE_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $LUA_CFLAGS"
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $LUA_CFLAGS"
AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
[with_liblua="yes"],
[with_liblua="no (header not found)"]
)
- CFLAGS="$SAVE_CFLAGS"
+ CPPFLAGS="$SAVE_CPPFLAGS"
fi
if test "x$with_liblua" = "xyes"
LDFLAGS="$SAVE_LDFLAGS"
fi
if test "x$with_libpqos" = "xyes"
+then
+ SAVE_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $with_libpqos_cppflags"
+ AC_RUN_IFELSE([AC_LANG_PROGRAM(
+ [[#include <pqos.h>]],
+ [[return !(PQOS_VERSION >= 106)]])],
+ [with_libpqos="yes"], [with_libpqos="no (pqos library version 1.06 or higher is required)"])
+ CPPFLAGS="$SAVE_CPPFLAGS"
+fi
+if test "x$with_libpqos" = "xyes"
then
BUILD_WITH_LIBPQOS_CPPFLAGS="$with_libpqos_cppflags"
BUILD_WITH_LIBPQOS_LDFLAGS="$with_libpqos_ldflags"
plugin_df="no"
plugin_disk="no"
plugin_drbd="no"
-plugin_dpdk="no"
+plugin_dpdkstat="no"
plugin_entropy="no"
plugin_ethstat="no"
plugin_fhcount="no"
plugin_xencpu="yes"
fi
+if test "x$with_libdpdk" = "xyes"
+then
+ plugin_dpdkstat="yes"
+fi
+
m4_divert_once([HELP_ENABLE], [
collectd plugins:])
AC_PLUGIN([df], [$plugin_df], [Filesystem usage statistics])
AC_PLUGIN([disk], [$plugin_disk], [Disk usage statistics])
AC_PLUGIN([dns], [$with_libpcap], [DNS traffic analysis])
-AC_PLUGIN([dpdkstat], [$with_libdpdk], [Stats & Status from DPDK])
+AC_PLUGIN([dpdkstat], [$plugin_dpdkstat], [Stats & Status from DPDK])
AC_PLUGIN([drbd], [$plugin_drbd], [DRBD statistics])
AC_PLUGIN([email], [yes], [EMail statistics])
AC_PLUGIN([entropy], [$plugin_entropy], [Entropy statistics])
AC_MSG_RESULT([ df . . . . . . . . . $enable_df])
AC_MSG_RESULT([ disk . . . . . . . . $enable_disk])
AC_MSG_RESULT([ dns . . . . . . . . . $enable_dns])
-AC_MSG_RESULT([ dpdkstat . . . . . . .$enable_dpdkstat])
+AC_MSG_RESULT([ dpdkstat . . . . . . $enable_dpdkstat])
AC_MSG_RESULT([ drbd . . . . . . . . $enable_drbd])
AC_MSG_RESULT([ email . . . . . . . . $enable_email])
AC_MSG_RESULT([ entropy . . . . . . . $enable_entropy])