Merge pull request #2046 from rubenk/cleanup-dpdk-detection
authorRuben Kerkhof <ruben@rubenkerkhof.com>
Mon, 21 Nov 2016 13:37:53 +0000 (14:37 +0100)
committerGitHub <noreply@github.com>
Mon, 21 Nov 2016 13:37:53 +0000 (14:37 +0100)
Cleanup dpdk detection

1  2 
configure.ac

diff --combined configure.ac
@@@ -214,54 -214,7 +214,54 @@@ AC_HEADER_SYS_WAI
  AC_HEADER_DIRENT
  AC_HEADER_STDBOOL
  
 -AC_CHECK_HEADERS(stdio.h errno.h math.h stdarg.h syslog.h fcntl.h signal.h assert.h sys/types.h sys/socket.h sys/select.h poll.h netdb.h arpa/inet.h sys/resource.h sys/param.h kstat.h regex.h sys/ioctl.h endian.h sys/isa_defs.h fnmatch.h libgen.h)
 +AC_CHECK_HEADERS([ \
 +  arpa/inet.h \
 +  assert.h \
 +  ctype.h \
 +  endian.h \
 +  errno.h \
 +  fcntl.h \
 +  fnmatch.h \
 +  fs_info.h \
 +  fshelp.h \
 +  grp.h \
 +  kstat.h \
 +  kvm.h \
 +  libgen.h \
 +  limits.h \
 +  locale.h \
 +  math.h \
 +  mntent.h \
 +  mnttab.h \
 +  netdb.h \
 +  paths.h \
 +  poll.h \
 +  pthread_np.h \
 +  pwd.h \
 +  regex.h \
 +  signal.h \
 +  stdarg.h \
 +  stdio.h \
 +  sys/fs_types.h \
 +  sys/fstyp.h \
 +  sys/ioctl.h \
 +  sys/isa_defs.h \
 +  sys/mntent.h \
 +  sys/mnttab.h \
 +  sys/param.h \
 +  sys/resource.h \
 +  sys/select.h \
 +  sys/socket.h \
 +  sys/statfs.h \
 +  sys/statvfs.h \
 +  sys/types.h \
 +  sys/un.h \
 +  sys/vfs.h \
 +  sys/vfstab.h \
 +  sys/vmmeter.h \
 +  syslog.h \
 +  wordexp.h \
 +])
  
  # For entropy plugin on newer NetBSD
  AC_CHECK_HEADERS(sys/rndio.h, [], [],
@@@ -705,6 -658,31 +705,6 @@@ AC_CHECK_HEADERS(linux/un.h, [], []
  #endif
  ])
  
 -AC_CHECK_HEADERS([ \
 -  ctype.h \
 -  fs_info.h \
 -  fshelp.h \
 -  grp.h \
 -  kvm.h \
 -  limits.h \
 -  locale.h \
 -  mntent.h \
 -  mnttab.h \
 -  paths.h \
 -  pwd.h \
 -  sys/fs_types.h \
 -  sys/fstyp.h \
 -  sys/mntent.h \
 -  sys/mnttab.h \
 -  sys/statfs.h \
 -  sys/statvfs.h \
 -  sys/un.h \
 -  sys/vfs.h \
 -  sys/vfstab.h \
 -  sys/vmmeter.h \
 -  wordexp.h \
 -])
 -
  # --enable-xfs {{{
  AC_ARG_ENABLE([xfs],
    [AS_HELP_STRING([--enable-xfs], [xfs support in df plugin @<:@default=yes@:>@])],
@@@ -1684,45 -1662,6 +1684,45 @@@ AC_CHECK_MEMBERS([kstat_io_t.nwritten, 
  #endif
        ])
  
 +# check for pthread_setname_np
 +SAVE_LDFLAGS="$LDFLAGS"
 +LDFLAGS="$LDFLAGS -lpthread"
 +
 +AC_MSG_CHECKING([for pthread_setname_np])
 +      have_pthread_setname_np="no"
 +      AC_LINK_IFELSE([AC_LANG_PROGRAM(
 +[[
 +#define _GNU_SOURCE
 +#include <pthread.h>
 +]],
 +[[
 +        pthread_setname_np((pthread_t) {0}, "conftest");
 +]]
 +      )], [
 +              have_pthread_setname_np="yes"
 +              AC_DEFINE(HAVE_PTHREAD_SETNAME_NP, 1, [pthread_setname_np() is available.])
 +      ])
 +
 +AC_MSG_RESULT([$have_pthread_setname_np])
 +
 +# check for pthread_set_name_np(3) (FreeBSD)
 +AC_MSG_CHECKING([for pthread_set_name_np])
 +      have_pthread_set_name_np="no"
 +      AC_LINK_IFELSE([AC_LANG_PROGRAM(
 +[[
 +#include <pthread_np.h>
 +]],
 +[[
 +        pthread_set_name_np((pthread_t) {0}, "conftest");
 +]]
 +      )], [
 +              have_pthread_set_name_np="yes"
 +              AC_DEFINE(HAVE_PTHREAD_SET_NAME_NP, 1, [pthread_set_name_np() is available.])
 +      ])
 +AC_MSG_RESULT([$have_pthread_set_name_np])
 +
 +LDFLAGS="$SAVE_LDFLAGS"
 +
  #
  # Checks for libraries begin here
  #
  # }}}
  
  # --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"])
- 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], [])], [])
+ LIBDPDK_CPPFLAGS="-I/usr/include/dpdk"
+ LIBDPDK_LDFLAGS=""
+ AC_ARG_VAR([LIBDPDK_CPPFLAGS], [Preprocessor flags for libdpdk])
+ AC_ARG_VAR([LIBDPDK_LDFLAGS], [Linker flags for libdpdk])
  
-       if test "x$LOCAL_DPDK_INSTALL" = "xno"
-       then
-               DPDK_INCLUDE=$DPDK_INCLUDE/dpdk
-       fi
+ AC_ARG_WITH([libdpdk], [AS_HELP_STRING([--without-libdpdk], [Disable libdpdk.])])
  
-       if test "x$FOUND_DPDK" = "xno"
-       then
-               AC_MSG_ERROR([libdpdk error: rte_config.h not found])
-       fi
+ if test "x$with_libdpdk" != "xno"
+ then
+       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_libdpkd="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 {{{
@@@ -5964,7 -5860,7 +5921,7 @@@ plugin_curl_xml="no
  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_libdpkd" = "xyes"
+ then
+   plugin_dpdkstat="yes"
+ fi
  m4_divert_once([HELP_ENABLE], [
  collectd plugins:])
  
@@@ -6421,7 -6322,7 +6383,7 @@@ AC_PLUGIN([dbi],                 [$with
  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])
@@@ -6858,7 -6759,7 +6820,7 @@@ AC_MSG_RESULT([    dbi . . . . . . . . 
  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])